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

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` | 从拆文报告生成 |
| — | `追踪/_tracking-state.json.imported_through_chapter` | 记录导入截止章 N；第 1..N 章不伪造日更记录 |
| — | `追踪/伏笔.md` | 每个已实际埋设/回收的伏笔 ID 只保留一行当前状态 |
| — | `追踪/_tracking-state.json.timeline` | 同一事件登记客观事实、读者认知与实际揭示状态；Markdown 时间线只做派生阅读视图 |
| — | `追踪/时间线/作者真相.md`、`读者已知.md` | 由 `_tracking-state.json.timeline` 派生；读者视图不得泄露作者秘密 |
| — | `追踪/角色状态/{角色名}.md` | 由 `character-state-reverse.md` 反推核心角色当前快照 |
| — | `追踪/逐章记录/` | 创建空目录；导入章不伪造日更记录，续写从 N+1 章生成 |
| `剧情/散落情节.md` | `大纲/大纲.md` 附录或对应卷纲 | 合并到相关卷的大纲 |
| — | `追踪/上下文.md` | 由初始化事务生成续写状态卡（固定 7 栏），≤12288 字节 |

---

## 正文标准化规则

### 命名格式

源文件名 → 标准格式：`第{零填充三位}章_{章名}.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对核心对立/合作关系}
```

---

## 世界观同步规则

当前 `story-long-analyze` 已输出主题化目录，导入阶段只做 pass-through，不再解析或拆分扁平 `世界观.md`。

| 源路径 | 目标路径 | 当前契约 |
|---------|---------|---------|
| `拆文库/{导入书名}/设定/世界观/*.md` | `{项目}/设定/世界观/*.md` | 原样同步；`背景设定.md` 必须存在 |
| `拆文库/{导入书名}/设定/势力/*.md` | `{项目}/设定/势力/*.md` | 原样同步已独立的势力文件 |

`力量体系.md`、`地理.md` 或小势力资料不足 200 字时，上游会将其并入 `背景设定.md`，因此这些独立文件可省略。如缺少 `背景设定.md`，或当前内容指向独立力量体系却未产出对应文件，停止导入并提示重跑 `story-long-analyze` Stage 4。

---

## 大纲反推规则

### 大纲.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} | {事件} |

## 卷契约与终局储备（反推）
- 卷契约：{从本卷剧情归纳读者期待与主角高光；证据不足写 `[待补充]`}
- 本卷主推线：{从情节点归纳承担本卷最大高潮的线}
- 本卷战果：{其余顺带兑现的线；证据不足写 `[待补充]`}
- 本卷解锁的终局里程碑：`[待补充]`
- 本卷禁碰的终局底牌：`[待补充]`
- 契约风险：{契约安全 / 需补强 / 契约破坏；无法判断写 `[待补充]`}

## 剧情单元（反推）
| 单元ID | 章节范围 | 单元节拍（铺垫→释放→反应层→衔接） | 主推线/战果 | 下一单元因果钩子 |
|------|---------|---------|-------|---------|
| L{卷}-1 | {章X-Y} | {从爽点/情节点分布归纳} | {线} | {方式} |

（导入反推只填有证据的字段，未知写 `[待补充]`、不杜撰；后续补纲/改纲时按 story-long-write 技能的「剧情单元卡」完整字段模板升级。）

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

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

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

#### 字段映射

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

### 细纲反推

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

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

---

## 角色状态反推

由 character-state-reverse.md 反推，详见该文件。

---

## 伏笔提取规则

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

### 识别模式

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

### 状态推断

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

---

## 时间线提取规则

### 时间标记识别

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

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

### 排序规则

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

---

## 题材定位生成

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

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

```markdown
# 题材定位

## 基本信息
- 题材类型：{玄幻/都市/系统/...}
- 目标平台：{Phase 1 向用户采集的目标平台；无则从拆文报告提取，仍无填 [待补充]。story-review 据此选平台 rubric}
- 核心梗：{一句话卖点}
- 微创新点：{与同类题材的差异}

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

## 读者需求 / 情绪引擎
> 本段从 `拆文库/{导入书名}/剧情/情绪模块.md` 提炼，只记录本书已写内容的续写基线，不把本书登记成对标。

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

## 节奏与触发参考
> 本段从 `拆文库/{导入书名}/剧情/节奏.md` 提炼，只记录已写部分的节奏事实。

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

<!-- 仅当用户显式绑定独立外部对标时生成以下两节；未绑定时整段省略。 -->
## 对标书清单（canonical registry，可选）
主对标书: {对标书名}  # 最多 1 本；必须是独立外部参考作品
对标书列表:
  - 书名: {对标书名}
    引用强度: 主  # 主 / 辅 / 参考
    题材类型: {玄幻/都市/系统/...}
    相关性: 同题材
    用途: 文风+核心结构
  - 书名: {书名 B}
    引用强度: 辅
    题材类型: {题材}
    相关性: 同题材/弱相关
    用途: {补设定/大纲/模块，不进文风}
  - 书名: {书名 C}
    引用强度: 参考
    题材类型: {题材}
    相关性: 同题材/弱相关
    用途: {仅按预算召回摘要}

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

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

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

### 字段映射

- 题材类型、核心梗、微创新点 → 从 `拆文报告.md` 基本信息与核心发现段提取
- 核心梗三分法 → 从 `拆文报告.md` 表层吸引力、爽点设计、长线悬念段提取
- 读者需求 / 情绪引擎 → 从 `剧情/情绪模块.md` 提取；缺失时停止导入并给出重跑 Stage 3+ 的修复动作
- 节奏与触发参考 → 从 `剧情/节奏.md` 提取；缺失时停止导入，不得以 `拆文报告.md`、章节摘要或 `剧情/故事线.md` 代替
- 对标书清单 → 仅登记用户显式选择、且能回溯到 `拆文库/{对标书名}/` 的外部作品；未绑定时省略，不得用 `{导入书名}` 补位
- 对标分析（派生概要） → 只总结已登记的外部对标；题材框架仍从本书导入分析生成，不得把两类来源混写

---

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

本节只对用户显式绑定的外部 `{对标书名}` 生效：从 `拆文库/{对标书名}/` 同步到项目 `对标/{对标书名}/`。未绑定时不创建对标子目录；严禁把 `拆文库/{导入书名}/`、项目 `设定/` 或由其生成的文件复制到 `对标/`。

| 源路径 | 目标路径 | 同步语义 |
|-------|---------|----------|
| `拆文库/{对标书名}/剧情/节奏.md` | `{项目}/对标/{对标书名}/剧情/节奏.md` | 日更选择 `rhythm_reference` 的必备权威文件；缺失则不登记该对标 |
| `拆文库/{对标书名}/剧情/情绪模块.md` | `{项目}/对标/{对标书名}/剧情/情绪模块.md` | 日更选择 `selected_emotion_module` 的必备权威文件；缺失则不登记该对标 |
| `拆文库/{对标书名}/剧情/*.md` | `{项目}/对标/{对标书名}/剧情/*.md` | 剧情单元、故事线、散落情节等剧情资产；与权威节奏/情绪文件冲突时以后者为准 |
| `拆文库/{对标书名}/章节/*.md`（第N章_摘要.md + 黄金三章 第1-3章_深度拆解.md）| `{项目}/对标/{对标书名}/章节/*.md` | 匹配章证据，含「关键信息与扩写技法」 |
| `拆文库/{对标书名}/角色/*.md` | `{项目}/对标/{对标书名}/角色/*.md` | 角色功能位、关系与反应层参考 |
| `拆文库/{对标书名}/设定/` | `{项目}/对标/{对标书名}/设定/` | 世界观、势力、金手指等设定约束参考 |
| `拆文库/{对标书名}/拆文报告.md` | `{项目}/对标/{对标书名}/拆文报告.md` | 人类可读摘要投影 |
| `拆文库/{对标书名}/文风.md` | `{项目}/对标/{对标书名}/文风.md` | 日更文风召回必读 |

冲突规则：已登记外部对标的 `对标/{对标书名}/剧情/情绪模块.md` 和 `对标/{对标书名}/剧情/节奏.md` 是对标召回权威；`拆文报告.md`、`剧情/故事线.md` 只作为摘要投影。若摘要冲突，保留冲突说明并以权威文件为准；缺少任一权威文件时不生成半套对标视图，先修复该外部作品的拆文产物。

---

## 质量检查清单

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

- [ ] 正文文件数 = 源文件章节数
- [ ] 主要角色（主角 + 核心配角）文件已创建
- [ ] 关系.md 非空
- [ ] 大纲.md 有卷级结构
- [ ] 每章细纲已生成
- [ ] `_tracking-state.json.imported_through_chapter` 等于最后完整导入章
- [ ] `追踪/伏笔.md` 每个 ID 至多一行，未来尚未埋设的设计没有混入
- [ ] `_tracking-state.json.timeline` 已登记关键事实与读者认知，`读者已知.md` 无真相泄露
- [ ] `追踪/角色状态/{角色名}.md` 已覆盖全部核心角色并对齐 `character-state-reverse.md`
- [ ] 追踪/逐章记录/ 空目录已创建，且没有为导入章伪造日更记录
- [ ] `追踪/上下文.md` 顶层恰好 固定 7 栏且 ≤12288 字节
- [ ] `tracking_commit.py check` 通过，`_tracking-state.json` 与全部派生视图一致
- [ ] 散落情节已合并到相关卷纲或大纲附录
- [ ] 卷划分已经用户确认（原文无明确卷界时必检）
- [ ] `拆文库/{导入书名}/` 未被复制到 `对标/`，本书未登记为自身对标
- [ ] 若绑定外部对标，`拆文库/{对标书名}/` 与 `对标/{对标书名}/` 名称和来源一致，两个主产物均已同步；否则报告修复动作但不回滚本书工程
