from pydantic import BaseModel from typing import Optional, Any from datetime import datetime class OperationLogItem(BaseModel): id: int admin_id: int admin_username: Optional[str] = None operation_type: str module: str target_id: Optional[str] = None detail: Optional[Any] = None ip_address: Optional[str] = None created_at: datetime class Config: from_attributes = True class LoginLogItem(BaseModel): id: int user_id: str username: Optional[str] = None user_type: str login_result: str fail_reason: Optional[str] = None ip_address: Optional[str] = None user_agent: Optional[str] = None created_at: datetime class Config: from_attributes = True class APILogItem(BaseModel): id: int user_id: Optional[str] = None username: Optional[str] = None api_path: str request_method: str request_params: Optional[Any] = None response_status: Optional[int] = None response_time: Optional[int] = None created_at: datetime class Config: from_attributes = True class LogListResponse(BaseModel): code: int = 0 message: str = "success" data: dict # {items: [], total: int, page: int, size: int} class LogExportResponse(BaseModel): code: int = 0 message: str = "success" data: dict # {download_url: str}