"""审计日志 Pydantic Schema""" from __future__ import annotations import uuid from datetime import datetime from pydantic import BaseModel class AuditLogResponse(BaseModel): """单条审计记录""" id: uuid.UUID user_id: str | None = None display_name: str | None = None role: str | None = None action: str action_label: str | None = None # 服务端补的中文标签,避免前端各处硬编码 module: str module_label: str | None = None target_type: str | None = None target_id: str | None = None target_name: str | None = None details: dict | None = None ip_address: str | None = None user_agent: str | None = None method: str | None = None url: str | None = None status_code: int | None = None error_message: str | None = None # 与结构化日志对账用:拿着它就能捞到对应的接口日志 request_id: str | None = None created_at: datetime model_config = {"from_attributes": True} class AuditLogListResponse(BaseModel): """审计日志分页列表""" items: list[AuditLogResponse] total: int class AuditOption(BaseModel): """筛选项(value/label 结构,直接喂给前端下拉)""" value: str label: str class AuditOptionsResponse(BaseModel): """筛选项集合""" modules: list[AuditOption] actions: list[AuditOption]