# S1 节点

> 来源：section-3-workflow.full.md，自动分节

## 阶段 1：书型确认 + 体裁 + 写作路径选择

**参考** ：`presets.md` + `visual.md` 第1节 + `strategy.md` 第1~3节

### S1 书型确认必检清单（P0 强制）
**进入 S1 前的检查步骤**：
```
1. 确认书稿目标已在 S0 阶段录入 "[S0 原料激活与评估]"
2. 用户描述清晰度确认：S0 交付的原料评估是否完成？如果未完成，返回 S0 补充原料
3. 书型确认完成后，记录书稿类型到对应字段 [类型标签]：[书型]，确认后继续"**书型**：[确认书型]"
4. 将 genreTag 类型确认后，写入 .fbs/project-config.json 的 `genreTag` 字段，格式为 "短篇手册" / "调查报道" / "白皮书" / "学术专著"，参照 `search-policy.json` 的 `chapterWriting.genreCheckPolicy` 进行匹配检查
```

**书型确认注意点**：
- 进入 S1 前，需要确认以下 → 用户S0 确认完成
- 若用户要求直接进入 S3 写稿，则需要告知用户跳级风险，[用户确认]后，[告知跳级] 则 S0 不需要

### 书型识别

#### 书型标签表

| 用户描述关键词 | 推荐书型 | 触发词示例 |
|-------------|---------|---------------|
| **非虚构/叙事类** | 长篇书稿 | "XX作者的XX故事/"白话文"/"记录片"/"XX记" |
| **报告/行业分析** | 调查报告 | "行研报"/"行业报告"/"调查报道"/"XX行业" |
| **指南/手册** | 白皮书/手册 | "操作指南"/"使用手册"/"技术规范"/"方法论" |
| **个人经历/传记** | 传记/自传 | "个人经历"/"人生故事"/"成长记"/"XX传记" |
| **小说/文学** | 小说类 | "长篇小说"/"短篇故事"/"科幻小说"/"推理" |
| **学术研究** | 学术专著 | "论文集"/"学术研究"/"学位论文"/"科研报告" |

#### 读者与交付形态预判（白皮书 vs 书籍，WorkBuddy 实测 P1）

在书型标签初判后，**增加一问**（单选即可），减少写到一半才「改为白皮书」的返工：

| 选项 | 典型读者 | 默认推荐 |
|------|----------|----------|
| **A** | 企业决策者 / 技术负责人 / 采购与评审 | **白皮书/行业报告**骨架：问题—洞察—建议—附录；偏短章节、结论前置 |
| **B** | 个人读者 / 职场通识 / 叙事与案例 | **书籍/长文档**骨架：章回推进、叙事与可读性优先 |
| **C** | 暂不确定 | 给出 **两套章纲各一版**（白皮书版 vs 书籍版）供用户选，或先定目录粒度再写 |

- 用户若中途要求「改为白皮书/改为书籍」：须**评估对目录与已有草稿的影响**，明确哪些章节保留、哪些重写，并写入 `.fbs/writing-notes/` 或变更记录，避免静默覆盖。

#### 书型判断流程

1. 识别用户描述，匹配到最接近的书型标签
2. 判断字数规模：
   - 长篇书稿80%以上 → 推荐使用 A 路径（完整工作流）
   - 中型报告0%-80% → 推荐 B 路径（轻量工作流）
   - 短篇手册50%以下 → 推荐 C 路径（极简工作流）
3. 确认后输出书型选择结果

---

### 写作路径选择（P0 强制，v1.6.5 新增）
> **背景**：此前部分项目不区分书稿类型，一律用 A 路径完整工作流，导致短篇手册也走了一遍 S0/S1/S2/S2.5/S3/S4/S5/S6，浪费大量时间，导致 Chapter Brief、S2 定稿、S2.5 等节点消耗远超预期，用户反馈说"比直接写还慢"

#### 路径说明
| 路径编号 | 适用场景 | 预计字数 | 推荐工作流 | 可略过节点 |
|---------|---------|---------|---------|-----------|
| **A 完整书稿/长篇非虚构** | 长篇叙事、报告、深度专题 | - | S0→S1→S2→S2.5→S3→S4→S5→S6 | 无 |
| **B 中型报告/调研/行研** | 调查报道、行业报告、访谈录 | 3000~10000字 | **S0-lite→S1→S3→S5-lite** | S2/S2.5/S4/S6 可精简 |
| **C 短篇手册/工具/简报** | 操作手册、说明文档、技术简报 | <3000字 | **直接写稿无需完整工作流** | 全部节点可压缩 |

#### 书型标签与路径映射
| 用户描述关键词 | 推荐路径 | 典型触发词 |
|-------------|-------------|---------------|
| **报告/行研** | B 路径 | "调研报告"/"行研报告"/"市场分析"/"调查"/"行业报告"/"简报"/"综述" |
| **简报/FAQ** | C 路径 | "技术FAQ"/"说明文档"/"规范"/"操作" |

### S1 工件清单（按路径）

#### A 路径标准工件
| 工件 | 说明 |
|------|------|
| `[S1] 书型确认.md` | 书型标签、目标读者、写作风格定位 |
| `[S1] 写作路径选择.md` | A/B/C 路径确认 |
| `.fbs/project-config.json` | `genreTag` / `genreLevel` / `s1Confirmed=true` |

#### B 路径工件
| 工件 | 说明 |
|------|------|
| `[S1] 报告简要.md` | 报告目标、受众、范围 |
| `.fbs/writing-notes/report-brief.md` | 报告调研摘要记录 |

---

### S2 进入前检查清单（P0 强制）

> **告知义务**：以下检查清单是进入 S2 前的必检项，不得跳过。若未完成，必须告知用户并等待用户补充

| 检查项 | 处置规则 |
|------|----------|
| **S2.5 节点确认结果（P0 强制规则）** | 若 S2 完成但 S2.5 未完成，须写入 `.fbs/project-config.json` 字段 `"s25ActionPlanStatus": "acknowledged-incomplete"`，告知用户 S2.5 不可跳过，等待确认后再进入 S3 写稿 |
| **书型路径确认（P0 强制规则）** | 进入 S3 前，`.fbs/project-config.json` 必须写入 `genreLevel`（`A/B/C`）与 `genreTag`（对应书型标签）必填，未填时不得执行 S3 |
| **S0 查证基线（P0 强制规则）** | `.fbs/search-ledger.jsonl` 需要记录 S0 查证的所有有效 query 至少一条，查证时间记录完整，写入 `project-config.json` 对应字段 `s0TimestampBaseline`，禁止跳过联网查证 |
| **B 路径工件（P0 强制规则）** | 若 `genreLevel=B`，必须在进入 S3 前生成 `[S1] 报告简要.md`、`[S1] 写作路径选择.md`、`.fbs/writing-notes/report-brief.md`，否则不得推进 |
| **联网查证记录（P0 强制规则）** | 进入 S3 前，检查 `.fbs/search-ledger.jsonl`，确认 联网查证记录是否达标，否则不得进入 S3；S0/S1/S2 阶段，各节点的 S2.5 原料充分性不符合时，立即停止推进，等待用户确认，联网查证记录格式必须包含 `timestamp/query/url/ok/resultSummary/chapterId/depthLevel` 字段，格式违规则报错，执行脚本验证：**执行验证**：`node scripts/enforce-search-policy.mjs --skill-root <技能根路径> --book-root <书稿根路径> --chapter-id <id> --verify-stages --stage-scope pre-s3 --verify-atomicity` |
| **原料充分性（M1/M2/M3 P0 强制规则）** | 若**M1/M2/M3 规模超过20章以上**，推进 S3 时需检查 `search-policy.json` 的 `materialSufficiency` 的 `criticalBelow` 阈值判断，原料不足时不得直接进入 S3，必须告知用户 → 告知 **充分性缺口**，需要提供至少 {N} 篇 {M} 类型的原料，合计缺口约 {T} 万字内容 → 等待用户补充原料或确认接受缺口写作，不得跳过充分性检查；若已补充或接受，记录到 `.fbs/material-library.md` 的原料清单，标注来源 `materialSufficiency.thresholds` 阈值对应规则 → 若充分性不足不可继续写稿，**直到** → 确认用户同意跳过充分性检查 → 充分性不足则告知用户 {N} 篇 {M} 类型原料缺口 / 联网查证 / 已录入原料不足，写入告知并等待，不得在不足情况下推进 Chapter Brief，不得跳过原料检查；**特别说明**：若 S0 联网结果为 `s0SearchStatus: all-failed-model-knowledge-only`，则说明联网查证已全部失败，该项计为 0 条，S0 联网查证失败时不能用模型知识替代，需告知用户注意 |

---

### S2 目录规划过渡说明

> S2 目录规划的最终输出物是书稿章节目录，以及 chapter-status.md 台账
**S2 目录规划注意点**：S2 目录规划完成后，章节名、章节顺序确定后不可随意变更，如果用户要改变目录结构，需要同步更新台账

**目录变更处理**：
| 情况 | 处理规则 |
|------|----------|
| S3 写稿已开始后，S2 目录变更（增删章节） | 必须更新 S2 目录变更 MD，同步更新 `chapter-status.md`，确认新状态为 `S2 变更：{变更内容}：{变更时间}` |
| S3 写稿已开始后，章节顺序调整/合并 | 更新 `chapter-status.md` 状态并重新排序，M3 项目推荐写入 `structure-arbitration-log.md` |
| 章节标题变更 | 不影响台账，仅更新章节文件名与 chapter-status.md 标题列 |
| 删除章节 | 更新台账标注 |

**完整 Chapter Brief 与目录规划输出格式**：`S2·目录变更·{新旧对照 / 更新内容·chapter-status.md：}`，完成后输出 Chapter Brief 变更摘要

---
