run_request.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. from datetime import datetime
  2. from typing import TYPE_CHECKING
  3. from pydantic import BaseModel, Field
  4. from core_domain import InitialNodeContract, RunBootstrapContract, RunCreateContract
  5. from core_shared import JSONValue
  6. if TYPE_CHECKING:
  7. from app.db.models import RunRequest
  8. class InitialNodeRequest(InitialNodeContract):
  9. pass
  10. class RunRequestCreateRequest(BaseModel):
  11. tenant_id: str
  12. session_id: str
  13. app_version_id: str
  14. workflow_version_id: str
  15. trigger_type: str = "chat"
  16. request_payload_json: dict[str, JSONValue] = Field(default_factory=dict)
  17. request_status: str = "accepted"
  18. class RunRequestResponse(BaseModel):
  19. id: str
  20. tenant_id: str
  21. session_id: str
  22. app_version_id: str
  23. workflow_version_id: str
  24. trigger_type: str
  25. request_payload_json: dict[str, JSONValue] | None = None
  26. request_status: str
  27. created_time: datetime
  28. @classmethod
  29. def from_entity(cls, entity: "RunRequest") -> "RunRequestResponse":
  30. return cls.model_validate(entity, from_attributes=True)
  31. class DispatchRunRequest(BaseModel):
  32. tenant_id: str
  33. session_id: str
  34. app_id: str
  35. app_version_id: str
  36. workflow_id: str
  37. workflow_version_id: str
  38. trigger_type: str = "chat"
  39. priority: int = 0
  40. request_payload_json: dict[str, JSONValue] = Field(default_factory=dict)
  41. initial_node: InitialNodeRequest | None = None
  42. class DispatchRunResponse(BaseModel):
  43. run_request: RunRequestResponse
  44. runtime_response: RunBootstrapContract
  45. @classmethod
  46. def from_parts(
  47. cls,
  48. *,
  49. run_request: "RunRequest",
  50. runtime_response: RunBootstrapContract,
  51. ) -> "DispatchRunResponse":
  52. return cls(
  53. run_request=RunRequestResponse.from_entity(run_request),
  54. runtime_response=runtime_response,
  55. )