# 批注数据与交付格式 ## JSON 结构 保存为 UTF-8 JSON: ```json { "metadata": { "reviewer": "合同审阅专家", "perspective": "乙方", "jurisdiction": "中国大陆", "review_date": "2026-07-17" }, "comments": [ { "anchor": "body.p12", "quote": "乙方承担由此产生的一切损失", "severity": "高", "category": "赔偿责任", "priority": "必须坚持", "text": "【高风险|赔偿责任|必须坚持】‘一切损失’范围没有可预见性、因果关系或责任上限限制,可能把间接损失和第三方损失全部转嫁给乙方。建议限定为可证明的直接损失,并与责任上限、索赔通知和抗辩控制程序联动。", "author": "合同审阅专家" } ], "revisions": [ { "anchor": "body.p12", "old": "乙方承担由此产生的一切损失", "new": "乙方仅对因其违约直接造成且经合理证明的实际损失承担赔偿责任,但本合同另有明确约定的除外", "reason": "限定损失范围并保留合同约定例外", "author": "合同审阅专家" } ] } ``` `anchor` 必须来自 `contract_docx.py extract` 的块标识。`quote` 用于校验与精确定位批注;`old` 必须是对应块内唯一、连续且位于单个 Word 文本运行中的原文,否则 `validate` 会要求缩短替换范围或改用批注。 ## 字段要求 ### comments - `anchor`:必填,稳定块标识。 - `quote`:建议填写,使用足以唯一定位的最短原文,不整段复制。 - `severity`:必填,取 `致命`、`高`、`中`、`低`、`提示`。 - `category`:必填,例如主体、付款、验收、知识产权、保密、数据、赔偿、责任限制、终止、争议解决。 - `priority`:必填,取 `必须坚持`、`优先争取`、`可交换`、`可接受`。 - `text`:必填,包含等级、类别、优先级、问题、后果和建议。 - `author`:可选,默认读取 metadata.reviewer。 - `occurrence`:可选,同一 `quote` 多次出现时使用,从 1 开始。 ### revisions - `anchor`、`old`、`new`:必填。 - `reason`:必填,说明修改目标,不重复粘贴修订文本。 - `author`:可选。 - `old` 不得为空,不得与 `new` 相同;`new` 中不得使用换行符。 ## 批注写作质量 每条批注回答四个问题: 1. 文本具体有什么问题? 2. 为什么与我方立场或交易目标冲突? 3. 最坏或最可能的实际后果是什么? 4. 应当如何修改、补资料或谈判? 避免以下低质量写法: - “有风险,建议注意。” - “建议按法律规定执行。” - “条款对我方不利,建议删除。” - 不说明适用前提就写“本条无效”。 - 只罗列法条,不连接交易事实和修改动作。 ## 缺失条款 缺失条款没有原文可锚定时,把批注挂在最接近的章节标题或签署页前一段,并以 `【缺失条款|…】` 开头;在审阅报告中另列完整建议条款。不要虚构一个不存在的条款号。 ## DOCX 技术边界 - 脚本覆盖正文、表格、页眉和页脚中的段落。 - 脚本不处理文本框、批注气泡内原文、脚注、尾注、嵌入对象或受密码保护文件;发现这些内容时在审阅范围限制中说明。 - 跨多个 Word 文本运行的替换容易破坏格式,因此脚本拒绝自动修订;改成更小的替换片段,或只加批注并在报告中给出完整替代条款。 - 有既存修订痕迹时先确认审阅的是“显示所有标记”还是“最终状态”,并保留原文件备份。