问题描述
文件: frontend/src/entities/workflow-run/api.ts:285-293
async update(run) {
return mapWorkflowRun(
await getApiClient().request<WorkflowRunDto>(
`/workflow-runs/${encodeURIComponent(run.id)}`,
{
method: 'PATCH',
json: { nodes: run.nodes, status: run.storageStatus },
},
),
)
},
PATCH body 只有 { nodes, status },version 字段未发送。
WorkflowRun 类型定义了 version: number,响应 DTO 也会解析它,但前端从不将其回传给后端。后端即使有 WHERE version = ? 的乐观锁检查,也无法生效。
影响
- 并发编辑时后写覆盖先写(last-write-wins),数据静默丢失
- 后端 version 字段的唯一作用退化为单调递增计数器
建议修复
PATCH body 中加入 version:
json: { nodes: run.nodes, status: run.storageStatus, version: run.version },
后端配合校验,不匹配时返回 409 Conflict。
影响
问题描述
文件:
frontend/src/entities/workflow-run/api.ts:285-293PATCH body 只有
{ nodes, status },version字段未发送。WorkflowRun类型定义了version: number,响应 DTO 也会解析它,但前端从不将其回传给后端。后端即使有WHERE version = ?的乐观锁检查,也无法生效。影响
建议修复
PATCH body 中加入
version:后端配合校验,不匹配时返回 409 Conflict。
影响