Files
hermes-skills/skills/legal/contract-reviewer/references/classifier-party-mismatch-fix-20260611.md
T

86 lines
3.2 KiB
Markdown

# 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