18 lines
778 B
Python
18 lines
778 B
Python
from sqlalchemy import Integer, String, Text
|
|
from sqlalchemy.orm import Mapped, mapped_column
|
|
|
|
from app.models.base import Base, TimestampMixin
|
|
|
|
|
|
class OperationLog(Base, TimestampMixin):
|
|
__tablename__ = "operation_logs"
|
|
|
|
id: Mapped[str] = mapped_column(String(32), primary_key=True)
|
|
user_id: Mapped[str] = mapped_column(String(32), index=True)
|
|
username: Mapped[str] = mapped_column(String(64))
|
|
action: Mapped[str] = mapped_column(String(128)) # e.g. "创建用户", "修改菜单"
|
|
method: Mapped[str] = mapped_column(String(10)) # POST/PUT/DELETE
|
|
path: Mapped[str] = mapped_column(String(256))
|
|
detail: Mapped[str | None] = mapped_column(Text, nullable=True) # JSON detail
|
|
ip: Mapped[str | None] = mapped_column(String(64), nullable=True)
|