human.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. from typing import TYPE_CHECKING
  2. from core_domain import HumanTaskContract, HumanTaskCreateContract, HumanTaskStatus
  3. from core_shared import JSONValue
  4. from pydantic import BaseModel, Field
  5. if TYPE_CHECKING:
  6. from app.db.models import HumanTask
  7. class HumanTaskCreateRequest(HumanTaskCreateContract):
  8. pass
  9. class HumanTaskListRequest(BaseModel):
  10. status: HumanTaskStatus | None = None
  11. assigned_to: str | None = None
  12. run_id: str | None = None
  13. limit: int = Field(default=100, ge=1, le=500)
  14. class HumanTaskDetailRequest(BaseModel):
  15. human_task_id: str
  16. class HumanTaskClaimRequest(BaseModel):
  17. claimed_by: str
  18. class HumanTaskClaimPostRequest(HumanTaskClaimRequest):
  19. human_task_id: str
  20. class HumanTaskCompleteRequest(BaseModel):
  21. status: HumanTaskStatus
  22. response_payload_json: dict[str, JSONValue] = Field(default_factory=dict)
  23. class HumanTaskCompletePostRequest(HumanTaskCompleteRequest):
  24. human_task_id: str
  25. class HumanTaskResponse(HumanTaskContract):
  26. @classmethod
  27. def from_entity(cls, entity: "HumanTask") -> "HumanTaskResponse":
  28. return cls.model_validate(entity, from_attributes=True)