work_order.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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 WorkOrderCreate(BaseModel):
  6. mine_id: str
  7. alarm_id: str | None = None
  8. diagnosis_result_id: str | None = None
  9. title: str
  10. content: str = ""
  11. priority: str = "medium"
  12. status: str = "pending"
  13. assignee_id: str = ""
  14. assignee_name: str = ""
  15. department: str = ""
  16. due_at: datetime | None = None
  17. attachments: list = Field(default_factory=list)
  18. metadata: dict = Field(default_factory=dict)
  19. class WorkOrderUpdate(BaseModel):
  20. title: str | None = None
  21. content: str | None = None
  22. priority: str | None = None
  23. status: str | None = None
  24. assignee_id: str | None = None
  25. assignee_name: str | None = None
  26. department: str | None = None
  27. due_at: datetime | None = None
  28. completed_at: datetime | None = None
  29. verified_at: datetime | None = None
  30. closed_at: datetime | None = None
  31. result: str | None = None
  32. attachments: list | None = None
  33. metadata: dict | None = None
  34. class WorkOrderRead(ORMModel):
  35. id: str
  36. mine_id: str
  37. alarm_id: str | None
  38. diagnosis_result_id: str | None
  39. order_no: str
  40. title: str
  41. content: str
  42. priority: str
  43. status: str
  44. assignee_id: str
  45. assignee_name: str
  46. department: str
  47. due_at: datetime | None
  48. completed_at: datetime | None
  49. verified_at: datetime | None
  50. closed_at: datetime | None
  51. result: str
  52. attachments: list
  53. metadata: dict = Field(validation_alias="metadata_json")
  54. created_at: datetime
  55. updated_at: datetime
  56. class WorkOrderEventCreate(BaseModel):
  57. event_type: str
  58. from_status: str = ""
  59. to_status: str = ""
  60. operator_id: str = ""
  61. operator_name: str = ""
  62. comment: str = ""
  63. attachments: list = Field(default_factory=list)
  64. class WorkOrderEventRead(ORMModel):
  65. id: str
  66. work_order_id: str
  67. event_type: str
  68. from_status: str
  69. to_status: str
  70. operator_id: str
  71. operator_name: str
  72. comment: str
  73. attachments: list
  74. created_at: datetime