# Tracked Replace 相邻文本检查(2026-06-26 CT维保合同教训) ## 问题场景 R1 reviewer 发现「造与」→「造成」的 typo(R1-009),editor 执行 tracked_replace 修复。R2 reviewer 复核时发现修复后的文本为「造成济损失」——缺少「经」字,应为「造成经济损失」。 ## 根因 原文为「造与与济损失」——**双重 typo**: 1. 「造与」→ 应为「造成」(R1-009 已发现) 2. 「济损失」→ 应为「经济损失」(**R1 reviewer 未发现**) Editor 修复了 R1-009 后,渲染文本为「造成济损失」,第二个 typo 仍然存在。 ## 教训 **tracked_replace 不是「只检查那一处」的信号**。当 editor 在一个段落内执行了 tracked_replace 后,reviewer 复核时必须: 1. **提取整个段落的「接受修订后」渲染文本**(`accept_revisions_text`),不只看 track change 标记 2. **逐字通读整个段落**,检查是否有: - 与被修复 typo 相邻的**其他 typo**(如本例「济损失」缺「经」) - tracked_replace 操作**意外引入**的新错误(如删多了字、删错了位置) - 双重 DEL 导致的**文本碎片化**(如「造[-与-]成[- -][-与-]济损失」) ## 验证方法 ```python # 对每个有 WB track changes 的段落,提取接受修订后的完整文本 def accept_revisions_text(p): result = [] for elem in p.iter(): if elem.tag == qn('delText'): continue if elem.tag == qn('t'): parent = elem.getparent() if parent is not None and parent.tag == qn('del'): continue # skip runs inside w:del if elem.text: result.append(elem.text) return ''.join(result) # 复核时对每个被修改的段落,输出完整渲染文本 for pi in modified_paragraphs: text = accept_revisions_text(paras[pi]) print(f"P{pi}: {text}") ``` ## 审查清单补充 复核轮的文字校对,在「逐字通读」基础上,对**每个有 WB track changes 的段落**额外执行: - 全文输出该段落的接受修订后文本 - 人工逐字通读,检查是否有遗漏的 typo - 特别注意 tracked_replace 操作的**边界**(DEL/INS 前后的原文 run)