Skip to content

Activation / Cash Flow Bulk 同步

概述

Activation Flow 用于收集文档/任务后进入同步阶段。后台 FlowSyncRunnerService 可消费 FlowSyncTask(type=cash_flow_bulk),调用 POST /cash-flows/bulk
现状(代码实查):Runner 与 Client 方法已实现,但 FlowRunService.createCashFlowSyncTask 在仓库内无其它入队调用方;Document apply 也未 enqueue。因此 finalize 时若无 pending 任务会直接标记 completed。手工验证可用 apps/api/scripts/dtms-cashflow-live.ts

触发入口

动作HTTP / 后台
Finalize activationPOST /api/flows/activation/finalize
Retry / CancelFlows 相关 retry/cancel API
后台 RunnerFlowSyncRunnerService(~5s + lock poll:flow-sync-runner

参与方

  • Client、api-gatewayFlowRunService
  • FlowSyncRunnerServiceDtmsAuthServiceDtmsClient
  • Redis、DTMS、FlowRun / FlowSyncTask

业务流程图

加载图表…

时序图(设计路径 / Runner 已实现)

加载图表…

DTMS API 对照

步骤LiquiaHTTPPathBearer挂接状态
Bulk 创建 CFbulkCreateCashFlowsPOST/cash-flows/bulkRunner 消费;入队路径缺失
搜索 CFsearchCashFlowsPOST/cash-flows/search?...未挂接
搜索工具searchCashFlowInstrumentsPOST/cash-flow-instruments/search未挂接

本地数据影响

  • FlowRun:collecting → awaiting_apply → syncing → completed / sync_failed
  • FlowSyncTasktype='cash_flow_bulk',payload 含 DTMS cashFlows
  • CashFlow.dtmsCashFlowId(若其它路径写入)

异常与补偿

  • Runner:指数退避(base ~30s);耗尽 → task failed → flow sync_failed
  • 文档中如实标注「入队未接线」,避免读者以为生产主路径已跑通 bulk

源码索引

  • apps/api/src/orchestration/flows/flow-run.service.ts
  • apps/api/src/orchestration/flows/flow-sync-runner.service.ts
  • apps/api/scripts/dtms-cashflow-live.ts
  • Flows controller

以 apps/api 代码为准 · 生成规范见 .cursor/skills/liquia-business-docs