Add Chinese comments for Temporal workflow flow
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user