schema.py 2.7 KB

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