Skip to content

fix: 打开合并待办详情会重复登记合并关系并膨胀合并计数 #223

Description

@xlorne

场景说明

合并待办详情查询(FlowDetailService.detail)对未读记录执行 flowRecord.read() + saveRecord(flowRecord) 以持久化已读标记,该保存链路会再次进入 FlowRecordSaveService.saveTodoMargeRecords()

发现的问题

saveTodoMargeRecords() 对每条可合并待办记录无条件执行 addMergeCount() 并新增一条 FlowTodoMerge 关系,不判断该记录是否已登记过。因此:

  • 每次打开(首次未读)一条合并子记录的详情,就会重复登记一次合并关系并把合并计数 +1;
  • 实测(两条合并记录):查询前 cnt=2、关系 2 条 → 查询后 cnt=3、关系 3 条(出现重复关系);
  • 详情 getMergeRecord() 随之返回重复记录,前端会出现同一条记录重复展示,且合并数量被放大。

复现输出:

详情前:  mergeRels=[(todoId=2,recordId=2),(todoId=2,recordId=4)]   cnt=2
详情后:  mergeRels=3 条(recordId 重复)                          cnt=3
detail.todos = [rec=2, rec=4, rec=2]   // 重复一条

期望实现

合并登记需幂等:已存在 (todoId, recordId) 关系的记录不得重复登记/计数。保存待办时按 (todoId, recordId) 去重后再新增关系与计数。

验证场景

  • 合并后打开任一子记录详情,断言合并计数与关系数量不发生改变;
  • 多条不同发起人合并的正常场景计数仍准确。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions