# 结构迁移映射规则（长篇）

Phase 3-L 长篇结构迁移的详细映射规则和模板。将 `拆文库/{书名}/` 分析结果转换为 `{书名}/` 长篇项目结构。

> 短篇迁移规则见 `structure-mapping-short.md`。

---

## 映射总览

| 拆文库路径 | 项目路径 | 转换方式 |
|-----------|---------|---------|
| `原文/` | `正文/第XXX章_章名.md` | 按章节分割并标准化命名 |
| `快速预览.md` | — | 参考卷划分候选、剧情走向，不直接迁移 |
| `角色/{角色名}.md` | `设定/角色/{角色名}.md` | 增加角色模板字段 |
| `角色/角色关系.md` | `设定/关系.md` | 格式转换 |
| `设定/世界观.md` | `设定/世界观/背景设定.md` 等 | 拆分 |
| `设定/金手指.md` | `设定/世界观/金手指.md` | 直接迁移 |
| `剧情/故事线.md` | `大纲/大纲.md` | 反推卷级结构（需用户确认卷划分，见下） |
| `剧情/{标题}.md` | `大纲/卷纲_第X卷.md` | 聚合为卷纲 |
| `剧情/节奏.md` | `对标/{书名}/剧情/节奏.md` | 直接同步为写作侧权威节奏索引（关键信息推进/情绪触动点/爆发节奏） |
| `剧情/情绪模块.md` | `对标/{书名}/剧情/情绪模块.md` | 直接同步为写作侧权威模块索引（读者需求 / 情绪引擎 / 可复现模块） |
| `章节/第N章_摘要.md` | `大纲/细纲_第N章.md` | 反推细纲 |
| — | `设定/题材定位.md` | 从拆文报告生成 |
| — | `追踪/伏笔.md` | 从情节点提取（先于角色状态生成） |
| — | `追踪/时间线.md` | 从时间标记提取（先于角色状态生成） |
| — | `追踪/角色状态.md` | 由 `character-state-reverse.md` 反推（生成顺序见下） |
| `剧情/散落情节.md` | `大纲/大纲.md` 附录或对应卷纲 | 合并到相关卷的大纲 |
| — | `追踪/上下文.md` | 生成进度摘要（最后生成，依赖角色状态） |

### 追踪文件生成顺序（阶段4 约束）

Phase 3-L 追踪文件**必须按以下顺序生成**，不可乱序：

```
① 追踪/伏笔.md     ← 先生成（角色状态反推的「待回收伏笔」字段依赖此文件）
② 追踪/时间线.md   ← 与伏笔同步或紧随其后
③ 追踪/角色状态.md ← 依赖伏笔.md 已存在，见 character-state-reverse.md
④ 追踪/上下文.md   ← 最后生成（其「角色状态：最近变更」字段依赖角色状态.md）
```

---

## 正文标准化规则

### 命名格式

源文件名 → 标准格式：`第{零填充三位}章_{章名}.md`

| 源文件名 | 标准化后 |
|---------|---------|
| 第一章_初入江湖.txt | 第001章_初入江湖.md |
| 第1章.md | 第001章_无题.md |
| chapter01.md | 第001章_无题.md |
| 01_觉醒.md | 第001章_觉醒.md |

### 章节分隔识别

当源为单个大文件时，按以下分隔符切分（与 `length-routing.md` 优先级 2 复用同一识别表）：

| 分隔符模式 | 示例 |
|-----------|------|
| `第X章` / `第X章 ` / `第X章：` / `第X章 XXX` | 第1章 初入江湖 |
| `Chapter X` | Chapter 1 |
| 纯数字编号 + 标题 | 1. 觉醒 |

### 内容处理

- 保留原文内容不变，不做任何修改
- 编码统一为 UTF-8
- 去除文件头尾无关信息（如广告、声明等）

---

## 角色文件迁移模板

```markdown
---
name: {角色名}
---

# {角色名}

## 基本信息
- 身份：{从拆文库角色文件提取}
- 核心特质：{}
- 当前能力：{}
- 核心动机：{}
- 弱点/缺陷：{}

## 外在表现
{身份/言行/外貌}

## 内在分析
{性格/目标/秘密}

## 出场记录
| 章节 | 关键事件 | 状态变化 |
|------|---------|---------|
| 第{N}章 | {事件} | {变化} |

## 别名
{如有别名，列出}
```

---

## 关系文件转换规则

拆文库格式（角色关系.md）→ 项目格式（设定/关系.md）：

```
拆文库格式：
A<->B：关系类型 | 情感 | 描述（50-200字）| 演变轨迹

项目格式：
| 角色 A | 角色 B | 关系类型 | 情感倾向 | 当前状态 | 起始章节 | 变化节点 |
```

转换规则：
- 关系类型映射：家人→亲情、恋人→爱情、朋友→友情等
- 情感倾向直接复用：正面/负面/中性/复杂
- 演变轨迹提取到「变化节点」列

### 目标格式模板（设定/关系.md）

```markdown
# 角色关系图

## 关系总览

| 角色 A | 角色 B | 关系类型{亲情/爱情/友情/敌对/师生/主从/利益} | 情感倾向{正面/负面/中性/复杂} | 当前状态 | 起始章节 | 变化节点 |
|--------|--------|---------------------------------------------|-----------------------------|---------|---------|---------|
| {名} | {名} | {类型} | {倾向} | {描述} | 第{N}章 | {事件} |

## 关系演变

{角色A}<->{角色B}：
- 起点：{初始关系}
- 转折：{章节·事件·变化}
- 当前：{现状}

## 核心冲突关系

{列出推动剧情的2-3对核心对立/合作关系}
```

---

## 世界观拆分规则

### 拆分决策

| 内容块 | 字数 | 目标文件 |
|--------|------|---------|
| 力量体系 | >= 200 字 | 独立为 `力量体系.md` |
| 地理 | >= 200 字 | 独立为 `地理.md` |
| 金手指 | 任意 | 独立为 `金手指.md` |
| 势力 | >= 200 字 | 独立为 `势力/{势力名}.md`（不足 200 字合并到 `背景设定.md`） |
| 其他内容 | 任意 | 合并到 `背景设定.md` |

### 拆分后文件模板

```markdown
# {设定名}

## 来源
拆分自：世界观.md

## 内容
{从拆文库设定文件提取的具体内容}
```

---

## 大纲反推规则

### 大纲.md（卷级结构）与卷划分规则

从 `剧情/故事线.md`、`剧情/*.md` 和 `快速预览.md` 反推，**卷划分必须遵守以下决策规则**：

**情形 A：原文有明确卷界**

原文中存在明确卷级标记（如「第一卷 XXXX」「卷一」等章节层级标题）→ 按原文卷界直接划分，无需询问用户。

**情形 B：原文无明确卷界**

不做机械切卷。执行流程：

1. 根据故事线/场景切换/大型时间跳跃，检测候选卷边界（见下方「候选边界检测参考」）；
2. 向用户展示候选划分方案，格式示例：

   ```
   候选卷划分（供参考，非定论）：
   - 候选卷一：第 1-18 章（世界观建立 + 初步成长，场景：城郊学院）
   - 候选卷二：第 19-45 章（主线冲突爆发，场景：帝都议事堂）
   - 候选卷三：第 46-XX 章（最终对决，场景切换：上古遗迹）
   以上为故事线/场景切换自动检测结果，请确认或调整。
   ```

3. **等待用户确认卷划分方案**后，才生成 `大纲/大纲.md` 的卷级结构和对应 `大纲/卷纲_第X卷.md`；
4. 用户未确认前，`大纲/大纲.md` 只记录候选方案，不写定卷纲。

> **不允许**用「每卷默认 20-40 章」机械切分原文无卷界的书。候选仅作参考，最终由用户拍板。

### 候选边界检测参考

| 信号类型 | 示例 | 卷边界可能性 |
|---------|------|------------|
| 章节连续 + 同一故事线 | 同一城市/同一势力视角 | 同一卷 |
| 主要场景切换（新地图/新阵营） | 从城郊进入帝都 | 候选新卷起点 |
| 大型时间跳跃（数月/数年） | 「三年后…」 | 候选新卷起点 |
| 主要阶段目标完成 + 新目标开启 | 击败阶段 boss → 新危机出现 | 候选新卷起点 |
| 故事线汇总中已有阶段划分 | `剧情/故事线.md` 内部分段 | 优先参考 |

### 卷纲反推

#### 目标格式模板（大纲/卷纲_第X卷.md）

卷纲是大纲的展开——大纲决定方向，卷纲决定节奏。包含本卷全部创作规划。

```markdown
# {卷名} 卷纲

## 核心信息
- 章节范围：第{X}-{Y}章
- 字数目标：{W}万字
- 本卷定位：{铺垫/发展/高潮/转折/收尾}

## 核心矛盾
{一句话：本卷要解决什么问题或达到什么目标}

## 情绪弧线
- 模板：{V形/倒V形/W形/渐进形/延迟满足形/急转弯形}
- 选择理由：{结合题材和本卷定位}

| 章节 | 情绪基调{紧张/轻松/悲伤/热血/温馨/震惊} | 强度{1-10} | 触发事件 |
|------|-----------------------------------------|-----------|---------|
| 第{N}章 | {基调} | {N} | {事件} |

## 爽点节奏
| 周期 | 章节范围 | 铺垫(起) | 释放(承) | 反应层 | 衔接(转) |
|------|---------|---------|---------|-------|---------|
| 第1个 | {章X-Y} | {简述} | {简述} | {N层} | {方式} |

## 人物弧线
| 角色 | 本卷起点 | 本卷终点 | 关键转变 |
|------|---------|---------|---------|
| {名} | {状态} | {状态} | {事件} |

## 本卷反转（如有）
| 类型{身份/动机/阵营/信息/命运} | 涉及角色 | 误导路径 | 揭示章节 | 影响范围 |
|------|---------|---------|---------|---------|
| {类型} | {名} | {如何误导读者} | 第{N}章 | {影响哪些线} |

## 本卷伏笔
| 伏笔 | 埋设章节 | 预计回收 | 类型{短期/中期/长期} |
|------|---------|---------|---------------------|
```

#### 字段映射

从剧情文件提取每卷的：
- 核心矛盾 → 核心矛盾字段
- 情节点分布 → 情绪弧线 + 爽点节奏
- 角色出场 → 人物弧线
- 铺垫类情节点 → 伏笔

### 细纲反推

从每章摘要（`章节/第N章_摘要.md`）提取：

| 摘要字段 | 细纲字段 | 转换方式 |
|---------|---------|---------|
| 关键事件 | 核心事件 | 直接复用 |
| 章节字数 | 字数目标 | 从原文统计 |
| 章节基调 / 情绪曲线 | 目标情绪 | 从摘要提取；缺失写 `[待补充]` |
| 第一个情节点 | 章首钩子 | 只作为证据，设计目标标 `[待补充]` |
| 爽点类情节点 | 爽点 | 从情节点类型推断；没有则写“无显性爽点 / [待补充]” |
| 情节点起承转合 | 内容概括（起因/发展/转折/高潮/结尾） | 按情节点顺序归纳；证据不足写 `[待补充]` |
| 主线/支线/任务线索 | 情节安排（主线/辅线/事件线/感情线/逻辑线） | 从剧情线索引与摘要反推；无证据的辅线/感情线写“无”或 `[待补充]`，不得杜撰 |
| 出场角色 / 关键物件 | 人物关系和出场顺序 | 按摘要出现顺序列出；关系变化只写有证据的“前 → 后”，缺失写 `[待补充]` |
| 全部情节点 | 情节细化 / 情节点序列 | 每点写“谁做了什么 + 功能标签”；功能不明写 `[待补充]` |
| 胜负/反转/收益损失 | 代价兑现 / 收益兑现 | 有明确证据才填写；否则 `[待补充]` |
| 最后一个情节点 / 悬念类情节点 | 结尾设定和钩子 | 收束状态可归纳；章尾钩子设计目标标 `[待补充]` |

---

## 角色状态反推

`追踪/角色状态.md` 由 `character-state-reverse.md` 中定义的反推算法生成，不在本文件重复描述。

关键要点：
- **生成时机**：必须在 `追踪/伏笔.md` 生成之后（步骤 5「待回收伏笔」依赖伏笔文件）；
- **输入来源**：拆文库已有产物（角色档案、关系.md、章节摘要、剧情文件），不重读 `原文/`；
- **输出对齐**：严格对齐 `character-state-reverse.md`「输出格式」的标准模板；
- **追踪范围**：主角、反派、核心配角；功能角色不进入。

详细规则见 [character-state-reverse.md](character-state-reverse.md)。

---

## 伏笔提取规则

从情节点中识别潜在伏笔：

### 识别模式

| 情节点类型 | 伏笔可能性 | 提取方式 |
|-----------|-----------|---------|
| 铺垫 | 高 | 直接提取为伏笔 |
| 信息揭示（部分） | 中 | 检查后续是否有呼应 |
| 物品首次出现 | 中 | 检查后续是否有使用 |
| 角色秘密 | 高 | 标记为角色伏笔 |
| 未解决的悬念 | 高 | 从章尾标记提取 |

### 状态推断

- 铺垫点在后续章节有「揭示」或「解决」类情节点 → 标记「已回收」
- 铺垫点无后续呼应 → 标记「已埋」
- 半成品小说的最后几章铺垫 → 标记「已埋」，备注「接近断点」

---

## 时间线提取规则

### 时间标记识别

从情节点和时间标记中提取：

| 标记模式 | 示例 | 提取方式 |
|---------|------|---------|
| 明确日期 | "天元三年春" | 直接记录 |
| 相对时间 | "三日后"、"半月后" | 推算绝对时间 |
| 事件间隔 | "翌日"、"次日" | 连续标记 |
| 季节标记 | "入冬"、"春暖花开" | 季节推断 |

### 排序规则

按章节顺序排列，同一章内按情节点序号排列。时间标记缺失时标注 `[推断]`。

---

## 题材定位生成

从拆文报告中提取核心发现，生成 `设定/题材定位.md`。

### 目标格式模板（设定/题材定位.md）

```markdown
# 题材定位

## 基本信息
- 题材类型：{玄幻/都市/系统/...}
- 核心梗：{一句话卖点}
- 微创新点：{与同类题材的差异}

## 核心梗三分法
- 表层卖点：{读者一眼看到的吸引力}
- 深层爽点：{持续追读的情绪驱动力}
- 长线钩子：{支撑全书的悬念/目标}

## 读者需求 / 情绪引擎
> 详细模块见 `对标/{书名}/剧情/情绪模块.md`；本段只保留开书/续写时的快速定位。

| 读者需求 | 情绪缺口 | 满足方式 | 可复现模块 | 来源 |
|---------|---------|---------|------------|------|
| {安全感/优越感/期待感/情感补偿/认知反转/陪伴感} | {缺什么} | {如何被满足} | {EM-001 等} | `对标/{书名}/剧情/情绪模块.md` |

## 节奏与触发参考
> 详细节奏见 `对标/{书名}/剧情/节奏.md`；写作时以该文件为节奏权威。

| 节奏模块 | 关键信息推进 | 情绪触动点 | 爆发节奏 | 来源 |
|---------|-------------|------------|----------|------|
| {RH/TR 编号} | {信息如何被扩写} | {触发什么感受} | {铺垫→爆发→冷却} | `对标/{书名}/剧情/节奏.md` |

## 对标书清单（canonical registry）
主对标书: {书名}  # 最多 1 本；日更默认只读取这本的文风.md 和原文锚点
对标书列表:
  - 书名: {书名 A}
    引用强度: 主  # 主 / 辅 / 参考
    题材类型: {玄幻/都市/系统/...}
    相关性: 同题材
    用途: 文风+核心结构
  - 书名: {书名 B}
    引用强度: 辅
    题材类型: {题材}
    相关性: 同题材/弱相关
    用途: {补设定/大纲/模块，不进文风}
  - 书名: {书名 C}
    引用强度: 参考
    题材类型: {题材}
    相关性: 同题材/弱相关
    用途: {仅按预算召回摘要}

## 对标分析（派生概要）
> 完整对标数据见 `对标/` 目录；上方 registry 是权威清单。本表仅做快速概览，不可替代 `主对标书` + `对标书列表`。

| 对标书 | 相似点 | 差异点 | 可借鉴 |
|--------|-------|-------|-------|
| {书名} | {点} | {点} | {点} |

## 题材框架
- 八节点位置：{当前处于哪个节点}
- 关键转折节点：{列出}
```

### 字段映射

- 题材类型、核心梗、微创新点 → 从 `拆文报告.md` 基本信息与核心发现段提取
- 核心梗三分法 → 从 `拆文报告.md` 表层吸引力、爽点设计、长线悬念段提取
- 读者需求 / 情绪引擎 → 优先从 `剧情/情绪模块.md` 提取；缺失时回退 `拆文报告.md` 对应摘要
- 节奏与触发参考 → 优先从 `剧情/节奏.md` 提取；缺失时回退 `拆文报告.md` 节奏摘要或 `剧情/故事线.md`
- 对标书清单 → 导入当前书时至少登记自身为 `主`；若用户提供多本素材，全部进入 `对标书列表`，副对标/参考对标不限制数量
- 对标分析（派生概要）、题材框架 → 可由导入场景生成摘要；不得替代 canonical registry

---

## 对标引用视图同步规则

长篇迁移必须把拆文库关键分析资产同步到项目侧 `对标/{书名}/`，使 story-long-write 优先读项目引用视图，旧工程仍可回退到根目录 `拆文库/{书名}/`。

| 源路径 | 目标路径 | 同步语义 |
|-------|---------|----------|
| `拆文库/{书名}/剧情/节奏.md` | `{项目}/对标/{书名}/剧情/节奏.md` | 节奏已同步后，日更用它选择 `rhythm_reference`；v12 新契约缺失时先修复，旧库才记录 `rhythm_missing` 并回退 |
| `拆文库/{书名}/剧情/情绪模块.md` | `{项目}/对标/{书名}/剧情/情绪模块.md` | 情绪模块已同步后，日更用它选择 `selected_emotion_module`；v12 新契约缺失时先修复，旧库才记录 `module_missing` 并回退 |
| `拆文库/{书名}/剧情/*.md` | `{项目}/对标/{书名}/剧情/*.md` | 剧情线、故事线、散落情节等剧情资产；与权威节奏/情绪文件冲突时以后者为准 |
| `拆文库/{书名}/章节/第N章_摘要.md` | `{项目}/对标/{书名}/章节/第N章_摘要.md` | 匹配章证据，含「关键信息与扩写技法」 |
| `拆文库/{书名}/角色/*.md` | `{项目}/对标/{书名}/角色/*.md` | 角色功能位、关系与反应层参考 |
| `拆文库/{书名}/设定/` | `{项目}/对标/{书名}/设定/` | 世界观、势力、金手指等设定约束参考 |
| `拆文库/{书名}/拆文报告.md` | `{项目}/对标/{书名}/拆文报告.md` | 人类报告与旧拆文库回退 |
| `拆文库/{书名}/文风.md` | `{项目}/对标/{书名}/文风.md` | 日更文风召回必读 |

冲突规则：`对标/{书名}/剧情/情绪模块.md` 和 `对标/{书名}/剧情/节奏.md` 是写作侧情绪/节奏权威；`拆文报告.md`、`剧情/故事线.md` 只作为摘要投影。若摘要冲突，保留冲突说明并以权威文件为准。若检测到 v12 新契约拆文库缺少任一权威文件，先重跑/修复拆文产物；只有 pre-v12 旧库可以标记 `legacy_deconstruction: true` 后降级。

---

## 质量检查清单

Phase 3-L 迁移完成后执行：

- [ ] 正文文件数 = 源文件章节数
- [ ] 主要角色（主角 + 核心配角）文件已创建
- [ ] 关系.md 非空
- [ ] 大纲.md 有卷级结构
- [ ] 每章细纲已生成
- [ ] 追踪/伏笔.md 中有内容（如有铺垫类情节点）
- [ ] 追踪/时间线.md 中有内容（如有时间标记）
- [ ] 追踪/角色状态.md 已生成且对齐 `character-state-reverse.md` 标准模板
- [ ] 追踪/上下文.md 进度摘要已填写
- [ ] 散落情节已合并到相关卷纲或大纲附录
- [ ] 卷划分已经用户确认（原文无明确卷界时必检）
- [ ] `剧情/节奏.md` 已同步到 `对标/{书名}/剧情/节奏.md`，或导入报告明确标注未同步并说明 `rhythm_missing` 回退
- [ ] `剧情/情绪模块.md` 已同步到 `对标/{书名}/剧情/情绪模块.md`，或导入报告明确标注未同步并说明 `module_missing` 回退
