Add Chinese comments for Temporal workflow flow

This commit is contained in:
Codex
2026-03-27 00:13:54 +08:00
parent cc03da8a94
commit d02fc8565f
7 changed files with 205 additions and 49 deletions

View File

@@ -1,4 +1,10 @@
"""Temporal workflow application service."""
"""Temporal 工作流服务层。
这一层位于 API 和 Temporal 之间,负责:
1. 选择该启动哪个 workflow
2. 发送 signal
3. 查询已持久化的 workflow 状态
"""
from datetime import timedelta
@@ -17,18 +23,22 @@ from app.workers.workflows.types import PipelineWorkflowInput, ReviewSignalPaylo
class WorkflowService:
"""Application service for Temporal workflow orchestration."""
"""Temporal 编排服务。"""
@staticmethod
def workflow_type_for_mode(service_mode: ServiceMode) -> str:
"""Return the workflow class name for a service mode."""
"""根据服务模式返回对应的 workflow 类型名。"""
if service_mode == ServiceMode.AUTO_BASIC:
return LowEndPipelineWorkflow.__name__
return MidEndPipelineWorkflow.__name__
async def start_workflow(self, workflow_input: PipelineWorkflowInput) -> None:
"""Start the appropriate Temporal workflow for an order."""
"""为订单启动对应的 Temporal workflow。
这里做的只是“发起执行”:
真正的流水线顺序仍然在 workflow 类里定义。
"""
client = await get_temporal_client()
workflow_id = f"order-{workflow_input.order_id}"
@@ -40,6 +50,7 @@ class WorkflowService:
await client.start_workflow(
workflow_callable,
workflow_input,
# workflow_id 固定为 order-{order_id},方便 API 后续按订单回查。
id=workflow_id,
task_queue=IMAGE_PIPELINE_CONTROL_TASK_QUEUE,
run_timeout=timedelta(minutes=30),
@@ -47,14 +58,19 @@ class WorkflowService:
)
async def signal_review(self, workflow_id: str, payload: ReviewSignalPayload) -> None:
"""Send a review signal to a running Temporal workflow."""
"""向运行中的 workflow 发送审核 signal。"""
client = await get_temporal_client()
handle = client.get_workflow_handle(workflow_id=workflow_id)
# "submit_review" 对应 workflow 里用 @workflow.signal 标记的方法名。
await handle.signal("submit_review", payload)
async def get_workflow_status(self, session, order_id: int) -> WorkflowStatusResponse:
"""Return persisted workflow execution state for an order."""
"""返回订单对应的已持久化 workflow 状态。
这里查的是我们自己数据库里的状态镜像,不是直接去 Temporal history 现查。
这么做更适合业务 API 对外暴露。
"""
result = await session.execute(
select(WorkflowRunORM)