39 lines
900 B
Python
39 lines
900 B
Python
"""Workflow API schemas."""
|
|
|
|
from datetime import datetime
|
|
from typing import Any
|
|
|
|
from pydantic import BaseModel, ConfigDict
|
|
|
|
from app.domain.enums import OrderStatus, StepStatus, WorkflowStepName
|
|
|
|
|
|
class WorkflowStepRead(BaseModel):
|
|
"""Serialized workflow step record."""
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
id: int
|
|
workflow_run_id: int
|
|
step_name: WorkflowStepName
|
|
step_status: StepStatus
|
|
input_json: dict[str, Any] | None
|
|
output_json: dict[str, Any] | None
|
|
error_message: str | None
|
|
started_at: datetime
|
|
ended_at: datetime | None
|
|
|
|
|
|
class WorkflowStatusResponse(BaseModel):
|
|
"""Serialized workflow run details."""
|
|
|
|
order_id: int
|
|
workflow_id: str
|
|
workflow_type: str
|
|
workflow_status: OrderStatus
|
|
current_step: WorkflowStepName | None
|
|
steps: list[WorkflowStepRead]
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|