workflow.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from datetime import datetime
  2. from typing import TYPE_CHECKING
  3. from pydantic import BaseModel
  4. from core_domain import WorkflowVersionContract
  5. from core_shared import JSONValue
  6. if TYPE_CHECKING:
  7. from app.db.models import WorkflowDefinitionModel, WorkflowVersion
  8. class WorkflowCreateRequest(BaseModel):
  9. tenant_id: str
  10. app_id: str
  11. code: str
  12. name: str
  13. workflow_type: str = "main"
  14. class WorkflowDefinitionResponse(BaseModel):
  15. id: str
  16. tenant_id: str
  17. app_id: str
  18. code: str
  19. name: str
  20. workflow_type: str
  21. latest_version_no: int
  22. created_time: datetime
  23. @classmethod
  24. def from_entity(cls, entity: "WorkflowDefinitionModel") -> "WorkflowDefinitionResponse":
  25. return cls.model_validate(entity, from_attributes=True)
  26. class WorkflowVersionCreateRequest(BaseModel):
  27. tenant_id: str
  28. workflow_id: str
  29. dsl_json: dict[str, JSONValue] | None = None
  30. compiled_plan_json: dict[str, JSONValue] | None = None
  31. schema_version: str | None = None
  32. checksum: str | None = None
  33. status: str = "draft"
  34. class WorkflowVersionResponse(WorkflowVersionContract):
  35. @classmethod
  36. def from_entity(cls, entity: "WorkflowVersion") -> "WorkflowVersionResponse":
  37. return cls.model_validate(entity, from_attributes=True)