# Classifier甲方误判——手动修复流程

## 背景
2026-06-11，智慧医院云项目监理服务合同。甲方"上海市青浦区卫生健康事业发展中心"（名单#17）被classifier误判为"朱家角镇社区卫生服务中心"（因文件在同批朱家角合同中处理，classifier从上下文路径推断了错误的顾问单位）。

## 错误交付物
1. 修订合同中甲方名称处有不应有的批注"请确认名称是否准确"
2. 多交付了一个不属于该顾问单位的"审查意见"文件

## 手动修复步骤

### 1. 删除修订合同中的错误批注

```python
from docx import Document
from docx.oxml.ns import qn

doc = Document('delivered.docx')

# 删除comment本身（comments part）
for rel in doc.part.rels.values():
    if "comments" in rel.reltype:
        comments_xml = rel.target_part._element
        for comment in comments_xml.findall(qn('w:comment')):
            cid = comment.get(qn('w:id'))
            # 只删除错误的批注（按id或内容判断）
            text = ''.join(t.text for t in comment.iter(qn('w:t')) if t.text)
            if '请确认名称是否准确' in text:
                comments_xml.remove(comment)

# 删除文档中对应的anchor元素
body = doc.element.body
for tag in ['w:commentRangeStart', 'w:commentRangeEnd']:
    for elem in body.findall('.//' + qn(tag)):
        if elem.get(qn('w:id')) == target_id:
            elem.getparent().remove(elem)

# 删除commentReference（在run中）
for ref in body.findall('.//' + qn('w:commentReference')):
    if ref.get(qn('w:id')) == target_id:
        run = ref.getparent()
        run.getparent().remove(run)

doc.save('delivered_fixed.docx')
```

### 2. 删除多余的审查意见文件

如果审查意见文件不应存在（顾问单位没有审查意见的需要）：
```bash
sudo docker exec nextcloud-nextcloud-1 rm "/var/www/html/data/doro/files/Doro合同审查任务/任务交付/XXX-审查意见.docx"
```

如果审查意见表格中有多余行（如"甲方名称"行）：
```python
from docx import Document
from docx.oxml.ns import qn

doc = Document('opinion.docx')
table = doc.tables[0]
tbl = table._tbl
# 删除index=1的行（"甲方名称"行）
tr_to_remove = tbl.findall(qn('w:tr'))[1]
tbl.remove(tr_to_remove)
doc.save('opinion_fixed.docx')
```

### 3. 重新上传 + 清缓存
```bash
# 上传修复后的文件
sudo docker cp fixed.docx nextcloud-nextcloud-1:/path/to/任务交付/filename.docx
sudo docker exec nextcloud-nextcloud-1 chown www-data:www-data /path/to/file

# scan + 清OnlyOffice缓存
sudo docker exec -u www-data nextcloud-nextcloud-1 php occ files:scan --path="doro/files/Doro合同审查任务/任务交付"
sudo docker exec nextcloud-onlyoffice-1 bash -c 'rm -rf /var/lib/onlyoffice/documentserver/App_Data/cache/files/data/*'
sudo docker restart nextcloud-onlyoffice-1
```

## Workflow根因修复（已于2026-06-11执行）

三处修改防止复发：
1. `~/.hermes/workflows/review-contract.yaml` classifier step 5: 匹配必须以合同正文主体名称为准
2. `review-contract.yaml` classifier step 7: 删除路径推断逻辑和contract_summary注入指令
3. `review-rules.md` 主体条款: reviewer独立核验，不完全信任classifier
