Implement FastAPI Temporal MVP pipeline

This commit is contained in:
Codex
2026-03-27 00:10:28 +08:00
commit cc03da8a94
52 changed files with 3619 additions and 0 deletions

View File

@@ -0,0 +1,36 @@
"""Workflow run ORM model."""
from sqlalchemy import Enum, ForeignKey, Integer, String
from sqlalchemy.orm import Mapped, mapped_column, relationship
from app.domain.enums import OrderStatus, WorkflowStepName
from app.infra.db.base import Base, TimestampMixin
class WorkflowRunORM(TimestampMixin, Base):
"""Persisted workflow execution state."""
__tablename__ = "workflow_runs"
id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
order_id: Mapped[int] = mapped_column(ForeignKey("orders.id"), nullable=False, index=True)
workflow_id: Mapped[str] = mapped_column(String(255), nullable=False, unique=True)
workflow_type: Mapped[str] = mapped_column(String(255), nullable=False)
status: Mapped[OrderStatus] = mapped_column(
Enum(OrderStatus, native_enum=False),
nullable=False,
default=OrderStatus.CREATED,
)
current_step: Mapped[WorkflowStepName | None] = mapped_column(
Enum(WorkflowStepName, native_enum=False),
nullable=True,
)
order = relationship("OrderORM", back_populates="workflow_runs")
steps = relationship(
"WorkflowStepORM",
back_populates="workflow_run",
lazy="selectin",
order_by="WorkflowStepORM.started_at",
)