log_schema.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. from pydantic import BaseModel
  2. from typing import Optional, Any
  3. from datetime import datetime
  4. class OperationLogItem(BaseModel):
  5. id: int
  6. admin_id: int
  7. admin_username: Optional[str] = None
  8. operation_type: str
  9. module: str
  10. target_id: Optional[str] = None
  11. detail: Optional[Any] = None
  12. ip_address: Optional[str] = None
  13. created_at: datetime
  14. class Config:
  15. from_attributes = True
  16. class LoginLogItem(BaseModel):
  17. id: int
  18. user_id: str
  19. username: Optional[str] = None
  20. user_type: str
  21. login_result: str
  22. fail_reason: Optional[str] = None
  23. ip_address: Optional[str] = None
  24. user_agent: Optional[str] = None
  25. created_at: datetime
  26. class Config:
  27. from_attributes = True
  28. class APILogItem(BaseModel):
  29. id: int
  30. user_id: Optional[str] = None
  31. username: Optional[str] = None
  32. api_path: str
  33. request_method: str
  34. request_params: Optional[Any] = None
  35. response_status: Optional[int] = None
  36. response_time: Optional[int] = None
  37. created_at: datetime
  38. class Config:
  39. from_attributes = True
  40. class LogListResponse(BaseModel):
  41. code: int = 0
  42. message: str = "success"
  43. data: dict # {items: [], total: int, page: int, size: int}
  44. class LogExportResponse(BaseModel):
  45. code: int = 0
  46. message: str = "success"
  47. data: dict # {download_url: str}