human.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from datetime import datetime
  2. from typing import TYPE_CHECKING
  3. from pydantic import BaseModel, Field
  4. from core_domain import HumanTaskContract, HumanTaskStatus, HumanTaskType
  5. from core_shared import JSONValue
  6. if TYPE_CHECKING:
  7. from app.db.models import HumanTask
  8. class HumanTaskCreateRequest(BaseModel):
  9. tenant_id: str
  10. task_type: HumanTaskType
  11. title: str
  12. description: str | None = None
  13. source_type: str | None = None
  14. source_id: str | None = None
  15. run_id: str | None = None
  16. node_run_id: str | None = None
  17. requested_by: str | None = None
  18. assigned_to: str | None = None
  19. request_payload_json: dict[str, JSONValue] = Field(default_factory=dict)
  20. due_time: datetime | None = None
  21. class HumanTaskClaimRequest(BaseModel):
  22. tenant_id: str
  23. claimed_by: str
  24. class HumanTaskCompleteRequest(BaseModel):
  25. tenant_id: str
  26. status: HumanTaskStatus
  27. response_payload_json: dict[str, JSONValue] = Field(default_factory=dict)
  28. class HumanTaskResponse(HumanTaskContract):
  29. @classmethod
  30. def from_entity(cls, entity: "HumanTask") -> "HumanTaskResponse":
  31. return cls.model_validate(entity, from_attributes=True)