diagnosis.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. from __future__ import annotations
  2. from datetime import datetime
  3. from pydantic import BaseModel, Field
  4. from app.schemas.common import ORMModel
  5. class DiagnosisRuleRead(ORMModel):
  6. id: str
  7. mine_id: str | None
  8. code: str
  9. name: str
  10. scene: str
  11. defect_type: str
  12. severity: str
  13. condition: dict
  14. threshold: dict
  15. output_template: str
  16. recommendation: str
  17. knowledge_refs: list
  18. enabled: bool
  19. version: str
  20. class DiagnosisTaskCreate(BaseModel):
  21. mine_id: str
  22. scene: str = "all"
  23. trigger_type: str = "manual"
  24. requested_by: str = ""
  25. input_snapshot: dict = Field(default_factory=dict)
  26. use_agent: bool = True
  27. class DiagnosisTaskRead(ORMModel):
  28. id: str
  29. mine_id: str
  30. task_no: str
  31. scene: str
  32. trigger_type: str
  33. status: str
  34. started_at: datetime | None
  35. finished_at: datetime | None
  36. requested_by: str
  37. model_name: str
  38. input_snapshot: dict
  39. error: str
  40. created_at: datetime
  41. updated_at: datetime
  42. class DiagnosisResultRead(ORMModel):
  43. id: str
  44. task_id: str
  45. rule_id: str | None
  46. defect_code: str
  47. defect_name: str
  48. scene: str
  49. severity: str
  50. confidence: float
  51. status: str
  52. root_cause: str
  53. conclusion: str
  54. recommendation: str
  55. related_objects: list
  56. raw_output: dict
  57. class DiagnosisEvidenceRead(ORMModel):
  58. id: str
  59. result_id: str
  60. evidence_type: str
  61. source_id: str
  62. source_name: str
  63. content: str
  64. confidence: float | None
  65. occurred_at: datetime | None
  66. metadata: dict = Field(validation_alias="metadata_json")
  67. class DiagnosisTaskDetail(DiagnosisTaskRead):
  68. results: list[DiagnosisResultRead] = Field(default_factory=list)
  69. evidence: list[DiagnosisEvidenceRead] = Field(default_factory=list)
  70. class DiagnosisRunRequest(BaseModel):
  71. mine_id: str
  72. scene: str = "all"
  73. object_ids: list[str] = Field(default_factory=list)
  74. context: dict = Field(default_factory=dict)
  75. requested_by: str = ""