from __future__ import annotations from datetime import datetime from pydantic import BaseModel, Field from app.schemas.common import ORMModel class WorkOrderCreate(BaseModel): mine_id: str alarm_id: str | None = None diagnosis_result_id: str | None = None title: str content: str = "" priority: str = "medium" status: str = "pending" assignee_id: str = "" assignee_name: str = "" department: str = "" due_at: datetime | None = None attachments: list = Field(default_factory=list) metadata: dict = Field(default_factory=dict) class WorkOrderUpdate(BaseModel): title: str | None = None content: str | None = None priority: str | None = None status: str | None = None assignee_id: str | None = None assignee_name: str | None = None department: str | None = None due_at: datetime | None = None completed_at: datetime | None = None verified_at: datetime | None = None closed_at: datetime | None = None result: str | None = None attachments: list | None = None metadata: dict | None = None class WorkOrderRead(ORMModel): id: str mine_id: str alarm_id: str | None diagnosis_result_id: str | None order_no: str title: str content: str priority: str status: str assignee_id: str assignee_name: str department: str due_at: datetime | None completed_at: datetime | None verified_at: datetime | None closed_at: datetime | None result: str attachments: list metadata: dict = Field(validation_alias="metadata_json") created_at: datetime updated_at: datetime class WorkOrderEventCreate(BaseModel): event_type: str from_status: str = "" to_status: str = "" operator_id: str = "" operator_name: str = "" comment: str = "" attachments: list = Field(default_factory=list) class WorkOrderEventRead(ORMModel): id: str work_order_id: str event_type: str from_status: str to_status: str operator_id: str operator_name: str comment: str attachments: list created_at: datetime