# 审查意见文档生成模式（2026-07-02 确立）

## 核心原则

1. **只体现差异，不做理由说明** — 表格三列（条文｜原文｜修订后）只写文字差异
2. **字体必须显式设置** — 不依赖模板继承，每个run四属性齐全
3. **同模板合同内容必须一致** — 行顺序按条款号，模板级修订表述相同

## 字体规则

```python
def set_cell_font(cell, text, east_asia='仿宋', ascii_font='Times New Roman', h_ansi='Times New Roman', bold=False):
    """Set cell text with proper font - every run must have explicit rFonts"""
    from docx.oxml.ns import qn
    from docx.oxml import OxmlElement
    
    # Clear existing content
    for p in cell.paragraphs[1:]:
        cell._element.remove(p._element)
    p = cell.paragraphs[0]
    for r in p._element.findall(qn('w:r')):
        p._element.remove(r)
    
    # Set paragraph alignment to justify
    pPr = p._element.find(qn('w:pPr'))
    if pPr is None:
        pPr = OxmlElement('w:pPr')
        p._element.insert(0, pPr)
    jc = pPr.find(qn('w:jc'))
    if jc is None:
        jc = OxmlElement('w:jc')
        pPr.append(jc)
    jc.set(qn('w:val'), 'both')
    
    # Add run with explicit font settings
    run = p.add_run(text)
    rPr = run._element.find(qn('w:rPr'))
    if rPr is None:
        rPr = OxmlElement('w:rPr')
        run._element.insert(0, rPr)
    
    rFonts = OxmlElement('w:rFonts')
    rFonts.set(qn('w:eastAsia'), east_asia)
    rFonts.set(qn('w:ascii'), ascii_font)
    rFonts.set(qn('w:hAnsi'), h_ansi)
    rPr.insert(0, rFonts)
    
    if bold:
        b = OxmlElement('w:b')
        rPr.append(b)
```

## 内容格式

### ✅ 正确（只体现差异）
| 条文 | 原文 | 修订后 |
|------|------|--------|
| 第1条 | 买方同意向卖方购买，同时卖方同意授予买方以下器械 | 甲方同意向乙方购买，同时乙方同意向甲方出售以下器械 |
| 第7.1.2条 | 按照器械的疵劣程度 | 按照器械的瑕疵程度 |

### ❌ 错误（带理由说明）
| 条文 | 原文 | 修订后 |
|------|------|--------|
| 第1条 | ... | 甲方同意向乙方购买……（注：统一称谓为甲方/乙方，"授予"修改为"出售"以准确反映买卖关系） |

## 同模板合同一致性保证

当同一顾问单位有多份同模板合同时：

1. 先确定模板级修订点列表（所有同模板合同共享的问题）
2. 每份合同的审查意见必须包含**全部**模板级修订点
3. 行顺序统一按条款号排列
4. 个案差异（如金额问题）在统一行之外单独加行
5. 修订后列的文字必须完全一致（逐字对比）

## 验证清单

生成完成后必须验证：
- [ ] 所有数据行的每个run都有eastAsia=仿宋 + ascii/hAnsi=Times New Roman
- [ ] 修订后列无(注：...)、无理由解释
- [ ] 行顺序按条款号排列
- [ ] 同模板合同的审查意见行数一致（除个案差异行外）
- [ ] 标题包含合同全称
