from __future__ import annotations from datetime import datetime from pydantic import BaseModel, Field from app.schemas.common import ORMModel class DiagnosisRuleRead(ORMModel): id: str mine_id: str | None code: str name: str scene: str defect_type: str severity: str condition: dict threshold: dict output_template: str recommendation: str knowledge_refs: list enabled: bool version: str class DiagnosisTaskCreate(BaseModel): mine_id: str scene: str = "all" trigger_type: str = "manual" requested_by: str = "" input_snapshot: dict = Field(default_factory=dict) use_agent: bool = True class DiagnosisTaskRead(ORMModel): id: str mine_id: str task_no: str scene: str trigger_type: str status: str started_at: datetime | None finished_at: datetime | None requested_by: str model_name: str input_snapshot: dict error: str created_at: datetime updated_at: datetime class DiagnosisResultRead(ORMModel): id: str task_id: str rule_id: str | None defect_code: str defect_name: str scene: str severity: str confidence: float status: str root_cause: str conclusion: str recommendation: str related_objects: list raw_output: dict class DiagnosisEvidenceRead(ORMModel): id: str result_id: str evidence_type: str source_id: str source_name: str content: str confidence: float | None occurred_at: datetime | None metadata: dict = Field(validation_alias="metadata_json") class DiagnosisTaskDetail(DiagnosisTaskRead): results: list[DiagnosisResultRead] = Field(default_factory=list) evidence: list[DiagnosisEvidenceRead] = Field(default_factory=list) class DiagnosisRunRequest(BaseModel): mine_id: str scene: str = "all" object_ids: list[str] = Field(default_factory=list) context: dict = Field(default_factory=dict) requested_by: str = ""