schema.py 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. from pydantic import BaseModel, ConfigDict, Field
  2. class CpuInfoSchema(BaseModel):
  3. """CPU信息模型"""
  4. model_config = ConfigDict(from_attributes=True)
  5. cpu_num: int = Field(description="CPU核心数")
  6. used: float = Field(ge=0, le=100, description="CPU用户使用率(%)")
  7. sys: float = Field(ge=0, le=100, description="CPU系统使用率(%)")
  8. free: float = Field(ge=0, le=100, description="CPU空闲率(%)")
  9. class MemoryInfoSchema(BaseModel):
  10. """内存信息模型"""
  11. model_config = ConfigDict(from_attributes=True)
  12. total: str = Field(description="内存总量")
  13. used: str = Field(description="已用内存")
  14. free: str = Field(description="剩余内存")
  15. usage: float = Field(ge=0, le=100, description="使用率(%)")
  16. class SysInfoSchema(BaseModel):
  17. """系统信息模型"""
  18. model_config = ConfigDict(from_attributes=True)
  19. computer_ip: str = Field(description="服务器IP")
  20. computer_name: str = Field(description="服务器名称")
  21. os_arch: str = Field(description="系统架构")
  22. os_name: str = Field(description="操作系统")
  23. user_dir: str = Field(description="项目路径")
  24. class PyInfoSchema(BaseModel):
  25. """Python运行信息模型"""
  26. model_config = ConfigDict(from_attributes=True)
  27. name: str = Field(description="Python名称")
  28. version: str = Field(description="Python版本")
  29. start_time: str = Field(description="启动时间")
  30. run_time: str = Field(description="运行时长")
  31. home: str = Field(description="安装路径")
  32. memory_used: str = Field(description="内存占用")
  33. memory_usage: float = Field(ge=0, le=100, description="内存使用率(%)")
  34. memory_total: str = Field(description="总内存")
  35. memory_free: str = Field(description="剩余内存")
  36. class DiskInfoSchema(BaseModel):
  37. """磁盘信息模型"""
  38. model_config = ConfigDict(from_attributes=True)
  39. dir_name: str = Field(description="磁盘路径")
  40. sys_type_name: str = Field(description="文件系统类型")
  41. type_name: str = Field(description="磁盘类型")
  42. total: str = Field(description="总容量")
  43. used: str = Field(description="已用容量")
  44. free: str = Field(description="可用容量")
  45. usage: float = Field(ge=0, le=100, description="使用率(%)")
  46. class ServerMonitorSchema(BaseModel):
  47. """服务器监控信息模型"""
  48. model_config = ConfigDict(from_attributes=True)
  49. cpu: CpuInfoSchema = Field(description="CPU信息")
  50. mem: MemoryInfoSchema = Field(description="内存信息")
  51. py: PyInfoSchema = Field(description="Python运行信息")
  52. sys: SysInfoSchema = Field(description="系统信息")
  53. disks: list[DiskInfoSchema] = Field(default_factory=list, description="磁盘信息")