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,21 @@
"""Domain asset model."""
from dataclasses import dataclass
from datetime import datetime
from typing import Any
from app.domain.enums import AssetType, WorkflowStepName
@dataclass(slots=True)
class Asset:
"""Business representation of a generated asset."""
id: int
order_id: int
asset_type: AssetType
step_name: WorkflowStepName | None
uri: str
metadata_json: dict[str, Any] | None
created_at: datetime

View File

@@ -0,0 +1,26 @@
"""Domain order model."""
from dataclasses import dataclass
from datetime import datetime
from app.domain.enums import CustomerLevel, OrderStatus, ServiceMode, WorkflowStepName
@dataclass(slots=True)
class Order:
"""Business representation of an image order."""
id: int
customer_level: CustomerLevel
service_mode: ServiceMode
status: OrderStatus
model_id: int
pose_id: int
garment_asset_id: int
scene_ref_asset_id: int
final_asset_id: int | None
workflow_id: str | None
current_step: WorkflowStepName | None
created_at: datetime
updated_at: datetime

View File

@@ -0,0 +1,22 @@
"""Domain review task model."""
from dataclasses import dataclass
from datetime import datetime
from app.domain.enums import ReviewDecision, ReviewTaskStatus
@dataclass(slots=True)
class ReviewTask:
"""Business representation of a review task."""
id: int
order_id: int
status: ReviewTaskStatus
decision: ReviewDecision | None
reviewer_id: int | None
selected_asset_id: int | None
comment: str | None
created_at: datetime
updated_at: datetime

View File

@@ -0,0 +1,21 @@
"""Domain workflow run model."""
from dataclasses import dataclass
from datetime import datetime
from app.domain.enums import OrderStatus, WorkflowStepName
@dataclass(slots=True)
class WorkflowRun:
"""Business representation of a workflow execution."""
id: int
order_id: int
workflow_id: str
workflow_type: str
status: OrderStatus
current_step: WorkflowStepName | None
created_at: datetime
updated_at: datetime

View File

@@ -0,0 +1,23 @@
"""Domain workflow step model."""
from dataclasses import dataclass
from datetime import datetime
from typing import Any
from app.domain.enums import StepStatus, WorkflowStepName
@dataclass(slots=True)
class WorkflowStep:
"""Business representation of a workflow step attempt."""
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