docs: 补充段结果表执行成功后清理策略

工作流执行成功时(BuildExecution 成功返回)与删 checkpoint 并列清理该执行的
flow_segment_result 段结果,执行失败则保留供 reExecute 复用,避免数据残留。
This commit is contained in:
2026-08-25 09:44:07 +08:00
parent a357ca860f
commit e0529c4ced
@@ -56,7 +56,7 @@ flow_segment_result
DAO 方法:
- `Save(ctx, execId, nodeId, segmentIndex, videoURL) error` — 段成功后落库(INSERT ON CONFLICT DO UPDATE
- `ListByNode(ctx, execId, nodeId) (map[int]string, error)` — 返回 `segment_index → video_url`
- `DeleteByExecution(ctx, execId) error`全新执行(forceNewRun)时清理旧段结果
- `DeleteByExecution(ctx, execId) error`清理指定执行的段结果,两个时机:**全新执行(forceNewRun)清旧段**、**工作流执行成功后清理**
#### 组件 B`FlowExecutionInput` 加 `ForceNewRun bool`
@@ -91,6 +91,7 @@ DAO 方法:
2. `ModelLambda`:拆段得 5 份参数 → `DeleteByExecution` 清旧 → 需生成全部 5 段
3. 并行调模型,每段失败重试 1 次;每段成功立即 `Save(execId, nodeId, idx, url)`
4. 段 4 两次均失败 → 节点失败 → 工作流失败(段 1/2/3/5 已落库),exec_workflow 记失败
5. 若全部段成功 → 节点成功 → 工作流继续 → `BuildExecution` 成功返回时删 checkpoint 并 `DeleteByExecution` 清理段结果
#### 重新执行(`ForceNewRun=false`reExecute 断点续跑)
@@ -98,7 +99,7 @@ DAO 方法:
2. `ModelLambda`:拆段仍得 5 段 → `!ForceNewRun``ListByNode``{1:url1, 2:url2, 3:url3, 5:url5}`
3. 需生成段 = 仅段 4,只调模型生成它(失败重试 1 次)→ 成功 → `Save(…, 4, url4)`
4. 合并 1-5 按段序 → `concat_videos` 按序拼接 → 节点成功,后续节点继续
5. 工作流成功,删 checkpoint
5. 工作流成功`BuildExecution` 返回时删 checkpoint + `DeleteByExecution` 清理段结果(下次全新执行无残留)
### 3.3 错误处理与边界
@@ -112,6 +113,7 @@ DAO 方法:
| 并行段并发写表 | 每段 index 独立,唯一键 `(execution_id, node_id, segment_index)`,无冲突 |
| 手动中断/断连 | 已成功段已落库,重跑自动复用 |
| 重试次数 | 每段失败重试 1 次(共 2 次尝试),参数化可调 |
| 工作流执行成功 | `BuildExecution` 成功返回 → 删 checkpoint 并 `DeleteByExecution` 清理该执行段结果,下次执行全新生成 |
### 3.4 测试
@@ -122,4 +124,4 @@ DAO 方法:
## 4. 开放问题
- 段结果表数据保留策略:当前 `forceNewRun` 清理 + 执行失败保留供复用;是否需定时清理历史成功段,暂不引入
- 已解决:段结果表数据保留策略 = **`forceNewRun` 清理旧段 + 工作流执行成功后清理**`BuildExecution` 成功路径与删 checkpoint 并列调用 `DeleteByExecution`);执行失败保留,供 reExecute 复用。无残留、无需定时清理。