# 飞书文档写回预检与验收
## 诊断流程样例:飞书 docx 写回预检
### 输入
| 字段 | 示例 |
|---|---|
| URL | `https://bytedance.larkoffice.com/wiki/FSUiwNDc2iU2Vxku3LdcNuGWnNc` |
| 用户指令 | `第一列把工作日期补上` |
| 当前日期 | `2026-05-18` |
### Preflight 输出
| 检查项 | 结果 | 处理 |
|---|---|---|
| wiki resolve | 指向 docx `Landing 日记` | 继续 |
| 文档结构 | 1 个 5 列表格,第一行是表头 | 继续 |
| 用户意图歧义 | `补第一列表头` 与 `补第一列日期行` 两种解释都成立 | 标记 `needs_semantic_confirmation` |
| 目标块 | 左上角表头 block 唯一;日期列空白行也存在 | 生成两个候选 patch plan |
| 风险对象 | 表格内含其他列文本,无画板/图片 token | patch 只能落在第一列 text block |
### 写前 patch plan
```text
Plan A: 只把表头空格改成“工作日期”。风险低,但不能满足“5月18日”这类日期补齐诉求。
Plan B: 从最后已有日期推导工作日序列,填充第一列空白行;若行数不足,用 insert_table_row 追加。风险中,需要写后校验行数和尾部日期。
```
### 成功信号
| 信号 | 判定 |
|---|---|
| 目标文本存在 | 第一列尾部包含 `5月18日` |
| 表格结构正确 | 行数从 31 变为 42,列数仍为 5 |
| 非目标内容未动 | 其他列文本、图片 token、画板 token、sheet token 数量不变 |
| 回读一致 | markdown 与 blocks 两种视图都能看到目标结果 |
### 失败信号
- 只看到表头变成“工作日期”,但第一列日期没有补到 `5月18日`。
- 目标章节在给定 URL 不存在,例如页面只有“一、数据 / 二、统计”,却要求写“4. 需求详述”。
- patch plan 需要替换整张表或覆盖含图片/画板 token 的区域。
### 落地路径
1. 运行 `lark_docx_writeback_preflight.py --url <url> --instruction <text> --today 2026-05-18 --json out/preflight.json`。
2. 人或 agent 检查 `out/preflight.json` 的 `patch_plan`、`risk_objects`、`ambiguous_intent`。
3. 只执行 `risk=low` 或已确认的 `risk=medium` patch。
4. 运行 `lark_docx_writeback_verify.py --url <url> --expect out/preflight.json --json out/verify.json`。
5. 最终回复必须包含目标写入位置、写入数量、回读信号和未改动对象。