"""日志相关Schema""" from datetime import datetime from typing import Optional, Literal from pydantic import BaseModel, Field class LogCreate(BaseModel): """日志写入""" trace_id: Optional[str] = Field(None, description="链路追踪ID") tenant_id: Optional[int] = Field(None, description="租户ID") user_id: Optional[int] = Field(None, description="用户ID") app_code: str = Field(..., description="应用编码") log_type: Literal['request', 'error', 'app', 'biz', 'audit'] = Field(..., description="日志类型") level: Literal['debug', 'info', 'warn', 'error', 'fatal'] = Field('info', description="级别") category: Optional[str] = Field(None, description="分类") message: str = Field(..., description="消息") context: Optional[dict] = Field(None, description="上下文") method: Optional[str] = Field(None, description="HTTP方法") path: Optional[str] = Field(None, description="请求路径") status_code: Optional[int] = Field(None, description="HTTP状态码") duration_ms: Optional[int] = Field(None, description="耗时(ms)") error_type: Optional[str] = Field(None, description="错误类型") stack_trace: Optional[str] = Field(None, description="堆栈") action: Optional[str] = Field(None, description="操作") target_type: Optional[str] = Field(None, description="目标类型") target_id: Optional[str] = Field(None, description="目标ID") log_time: datetime = Field(..., description="日志时间") class LogResponse(BaseModel): """日志响应""" id: int trace_id: Optional[str] app_code: str log_type: str level: str message: str log_time: datetime class Config: from_attributes = True class BatchLogRequest(BaseModel): """批量日志请求""" logs: list[LogCreate]