Files
hermes-skills/skills/legal/contract-reviewer/references/manual-fix-workflow-omissions-20260709.md
T

95 lines
3.4 KiB
Markdown

# Workflow审查遗漏手动补修方法(2026-07-09 职业卫生合同实证)
## 场景
Doro要求"查看交付合同哪里不符合审查规则"并指示手动修复。
## 诊断步骤
### 1. 提取修订清单
```python
# 从交付文件提取所有WB tracked changes
import zipfile
from lxml import etree
W = 'http://schemas.openxmlformats.org/wordprocessingml/2006/main'
with zipfile.ZipFile(path) as z:
xml = z.read('word/document.xml')
root = etree.fromstring(xml)
# INS
for ins in root.findall(f'.//{{{W}}}ins'):
if ins.get(f'{{{W}}}author') != 'WB': continue
texts = [t.text for t in ins.iter(f'{{{W}}}t') if t.text]
text = ''.join(texts).strip()
if text:
print(f"[INS] {text[:100]}")
# DEL
for d in root.findall(f'.//{{{W}}}del'):
if d.get(f'{{{W}}}author') != 'WB': continue
texts = [t.text for t in d.iter(f'{{{W}}}delText') if t.text]
text = ''.join(texts).strip()
if text:
print(f"[DEL] {text[:100]}")
```
### 2. 逐条对照review-rules.md
将每一条审查规则(10大项)与已做修订比对,找出"规则要求做但没做的"。
### 3. 用ContractEditor补修
```python
import sys
sys.path.insert(0, '/home/maggie/contract-work')
from contract_docx_lib import ContractEditor
editor = ContractEditor(work_path)
# tracked_replace: 在现有文本上追加/替换
editor.tracked_replace("原文片段。", "原文片段并新增内容。")
# add_clause: 在某段落之后插入新条款
# 参数: (full_text, after_search, use_title_format=False)
editor.add_clause(
"X.X 新增条款内容。",
"在包含此文本的段落之后插入" # after_search
)
editor.save(work_path)
editor.validate() # 返回空列表=无问题
```
### 4. 字体验证
```bash
python3 ~/.hermes/skills/legal/contract-reviewer/scripts/wb-ins-font-verify.py <file.docx>
```
已知误报:混合字体段落(如"甲方:"用仿宋,名称用宋体)中的INS匹配相邻run但脚本比对首个run——属于false positive,无需修复。
### 5. 上传替换
```bash
sudo docker cp <local.docx> nextcloud-nextcloud-1:<NC路径>
sudo docker exec nextcloud-nextcloud-1 chown www-data:www-data <NC路径>
sudo docker exec -u www-data nextcloud-nextcloud-1 php occ files:scan --path="doro/files/..."
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
```
## 2026-07-09 职业卫生合同具体修复
| # | 类型 | 位置 | 修订内容 | 规则 |
|---|------|------|----------|------|
| 1 | tracked_replace | 1.4条 | "承担全部责任。"→"承担全部责任并全额赔偿甲方因此遭受的一切损失。" | 规则6 |
| 2 | add_clause | 4.8.1后 | 新增4.8.2数据归属 | 规则4 |
| 3 | add_clause | 4.8.2后 | 新增4.8.3泄露责任 | 规则4 |
| 4 | add_clause | 5.7后 | 新增5.8持续使用权 | 规则9 |
同时修复了"有2才有1"编号问题:原4.8.1是唯一子项(违规),加上4.8.2和4.8.3后变为3个子项(合规)。
## 关键注意事项
1. **ContractEditor.add_clause参数是(full_text, after_search)**,不是keyword argument `after_text=`
2. 新增子项时注意"有2才有1"规则——单独一个子项就不要加子编号
3. P4字体验证FAIL是已知false positive(混合字体段落),详见`references/wb-ins-font-verify-false-positive.md`
4. 手动修复直接替换交付目录文件,不重跑workflow