services.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. from core_domain import HumanTaskStatus
  2. from app.db.models import HumanTask
  3. from app.domain.repositories import HumanTaskRepository
  4. from app.schemas.human import (
  5. HumanTaskClaimRequest,
  6. HumanTaskCompleteRequest,
  7. HumanTaskCreateRequest,
  8. )
  9. class HumanApplicationService:
  10. def __init__(self, *, human_task_repository: HumanTaskRepository) -> None:
  11. self.human_task_repository = human_task_repository
  12. def create_task(self, payload: HumanTaskCreateRequest) -> HumanTask:
  13. return self.human_task_repository.create(
  14. task_type=payload.task_type,
  15. title=payload.title,
  16. description=payload.description,
  17. source_type=payload.source_type,
  18. source_id=payload.source_id,
  19. run_id=payload.run_id,
  20. node_run_id=payload.node_run_id,
  21. requested_by=payload.requested_by,
  22. assigned_to=payload.assigned_to,
  23. request_payload_json=payload.request_payload_json,
  24. due_time=payload.due_time)
  25. def list_tasks(
  26. self,
  27. *,
  28. status: HumanTaskStatus | None = None,
  29. assigned_to: str | None = None,
  30. run_id: str | None = None,
  31. limit: int = 100) -> list[HumanTask]:
  32. return self.human_task_repository.list_by_scope(
  33. status=status,
  34. assigned_to=assigned_to,
  35. run_id=run_id,
  36. limit=limit)
  37. def get_task(self, *, human_task_id: str) -> HumanTask | None:
  38. return self.human_task_repository.get_by_id(
  39. human_task_id=human_task_id)
  40. def claim_task(
  41. self,
  42. *,
  43. human_task_id: str,
  44. payload: HumanTaskClaimRequest) -> HumanTask | None:
  45. return self.human_task_repository.claim(
  46. human_task_id=human_task_id,
  47. claimed_by=payload.claimed_by)
  48. def complete_task(
  49. self,
  50. *,
  51. human_task_id: str,
  52. payload: HumanTaskCompleteRequest) -> HumanTask | None:
  53. return self.human_task_repository.complete(
  54. human_task_id=human_task_id,
  55. status=payload.status,
  56. response_payload_json=payload.response_payload_json)