# Companion 文件清理方案（待 WeiWei 决策）

## 问题
`contract-cleanup.py` 只删 tracker 里 `original_filename` / `converted_filename` / `delivered_filename` 三个字段精确匹配的文件。companion 文件（审查意见、合同流程单）从不进 tracker → 主合同被清理后 companion 成孤儿，永远残留。

## 方案 A：tracker 增加 companion_files 字段（推荐）

**改动1：pass workflow（skill contract-pass-workflow）**
步骤1写 tracker 时，扫描 `任务交付/` 目录，找到与主合同同目录且包含"审查意见"/"合同流程单"的文件，写入：
```json
"companion_files": ["【审】购销合同 审查意见.docx", "【审】合同流程单-xxx.xlsx"]
```

**改动2：cleanup 脚本（~/.hermes/scripts/contract-cleanup.py）**
删主合同时，读 `companion_files` 字段，逐个 `docker exec rm`。

**优点**：精确匹配，不误删。
**缺点**：需改两处（skill + 脚本）。旧记录无此字段，但不影响——旧 companion 已手动清理或无价值。

## 方案 B：cleanup 按 stem 模糊匹配

**改动：仅 cleanup 脚本**
删主合同时，取 `delivered_filename` 的 stem（去扩展名），在 `任务交付/` 目录找 `*{stem}*审查意见*` / `*{stem}*合同流程单*` 一并删除。

**优点**：只改一处。
**缺点**：模糊匹配有误删风险（如两个合同名相近）。

## 附加修复：.doc 原始文件残留

**问题**：tracker 的 `original_filename` 有时记录了 `.docx`（转换后文件名）而非 `.doc`（真正的原始文件），cleanup 按 `.docx` 去删找不到 `.doc` → 残留。

**修复**：cleanup 脚本删 `original_filename` 时，如果文件不存在，尝试换扩展名（`.doc` ↔ `.docx`）再找一次。兜底逻辑，不影响正常流程。

## 状态
- 2026-06-29：方案已提出，Doro 未授权执行
- 需 WeiWei 决策后实施
