# LangGraph工作流引擎

<cite>
**本文档引用的文件**
- [graph.ts](file://server/src/modules/book-generator/graph.ts)
- [langgraph-controller.ts](file://server/src/modules/book-generator/langgraph-controller.ts)
- [stage-manager.ts](file://server/src/modules/book-generator/stage-manager.ts)
- [book-generator.types.ts](file://server/src/modules/book-generator/book-generator.types.ts)
- [index.ts](file://server/src/modules/book-generator/index.ts)
- [content.node.ts](file://server/src/modules/book-generator/nodes/content.node.ts)
- [outline.node.ts](file://server/src/modules/book-generator/nodes/outline.node.ts)
- [full-outline.node.ts](file://server/src/modules/book-generator/nodes/full-outline.node.ts)
- [plan.node.ts](file://server/src/modules/book-generator/nodes/plan.node.ts)
- [selector.ts](file://server/src/modules/book-generator/strategies/selector.ts)
- [fault-tolerance.ts](file://server/src/modules/book-generator/fault-tolerance.ts)
- [utils.ts](file://server/src/modules/book-generator/utils.ts)
- [book-generator.store.ts](file://server/src/modules/book-generator/book-generator.store.ts)
- [book-type-config.ts](file://server/src/modules/book-generator/book-type-config.ts)
- [langgraph-types.ts](file://server/src/modules/book-generator/langgraph-types.ts)
</cite>

## 目录
1. [简介](#简介)
2. [项目结构](#项目结构)
3. [核心组件](#核心组件)
4. [架构概览](#架构概览)
5. [详细组件分析](#详细组件分析)
6. [依赖分析](#依赖分析)
7. [性能考虑](#性能考虑)
8. [故障排查指南](#故障排查指南)
9. [结论](#结论)
10. [附录](#附录)

## 简介
本文件为 LangGraph 工作流引擎的技术文档，面向希望理解并扩展“书籍生成”自动化流水线的工程师与产品人员。文档从系统架构、节点设计、状态管理、阶段切换、容错机制、配置选项、调试监控等方面进行深入剖析，并提供最佳实践与排障建议。

## 项目结构
LangGraph 工作流位于后端服务的书籍生成模块中，采用“策略门面 + 图编排 + 节点执行 + 阶段管理 + 容错控制”的分层设计。核心目录与职责如下：
- graph.ts：定义 LangGraph 状态与 reducer，作为工作流的“状态中枢”
- nodes/*：具体节点实现（规划、大纲、内容、连贯性编辑等）
- strategies/*：生成策略选择器与不同策略实现
- langgraph-controller.ts：对外 API 路由与任务调度
- stage-manager.ts：章节阶段机，负责线性阶段推进与回退
- fault-tolerance.ts：AI 调用重试、节点超时、进度监控与自动恢复
- book-generator.store.ts：持久化与数据访问层
- book-type-config.ts：书籍规模与章节/字数估算配置
- utils.ts：通用工具（进度常量、字数统计）

```mermaid
graph TB
subgraph "API 层"
C["langgraph-controller.ts<br/>路由与任务调度"]
end
subgraph "策略层"
S["selector.ts<br/>策略选择器"]
I["index.ts<br/>策略门面"]
end
subgraph "编排层"
G["graph.ts<br/>状态与reducer"]
end
subgraph "节点层"
P["plan.node.ts<br/>书籍规划"]
O["outline.node.ts<br/>大纲生成"]
FO["full-outline.node.ts<br/>一步大纲"]
W["content.node.ts<br/>内容生成/并行"]
end
subgraph "阶段管理"
SM["stage-manager.ts<br/>章节阶段机"]
end
subgraph "容错层"
FT["fault-tolerance.ts<br/>重试/超时/监控"]
end
subgraph "存储层"
BS["book-generator.store.ts<br/>持久化"]
BTC["book-type-config.ts<br/>规模配置"]
end
C --> I
I --> S
I --> G
G --> P --> O --> W
G --> FO
W --> SM
O --> BS
W --> BS
FO --> BS
P --> BS
C --> FT
C --> BS
C --> BTC
```

图表来源
- [langgraph-controller.ts:1-800](file://server/src/modules/book-generator/langgraph-controller.ts#L1-L800)
- [index.ts:1-119](file://server/src/modules/book-generator/index.ts#L1-L119)
- [selector.ts:1-81](file://server/src/modules/book-generator/strategies/selector.ts#L1-L81)
- [graph.ts:1-83](file://server/src/modules/book-generator/graph.ts#L1-L83)
- [plan.node.ts:1-201](file://server/src/modules/book-generator/nodes/plan.node.ts#L1-L201)
- [outline.node.ts:1-129](file://server/src/modules/book-generator/nodes/outline.node.ts#L1-L129)
- [full-outline.node.ts:1-243](file://server/src/modules/book-generator/nodes/full-outline.node.ts#L1-L243)
- [content.node.ts:1-546](file://server/src/modules/book-generator/nodes/content.node.ts#L1-L546)
- [stage-manager.ts:1-202](file://server/src/modules/book-generator/stage-manager.ts#L1-L202)
- [fault-tolerance.ts:1-387](file://server/src/modules/book-generator/fault-tolerance.ts#L1-L387)
- [book-generator.store.ts:1-800](file://server/src/modules/book-generator/book-generator.store.ts#L1-L800)
- [book-type-config.ts:1-133](file://server/src/modules/book-generator/book-type-config.ts#L1-L133)

章节来源
- [langgraph-controller.ts:1-800](file://server/src/modules/book-generator/langgraph-controller.ts#L1-L800)
- [graph.ts:1-83](file://server/src/modules/book-generator/graph.ts#L1-L83)

## 核心组件
- 状态中枢（GraphState）：使用 LangChain Annotation API 定义工作流状态，含书籍标识、主题、规模、大纲层级、当前章节、完成章节列表、完成标志、错误信息、进度、失败章节等字段；通过 reducer 实现并发写入的安全合并。
- 节点（Node）：每个节点负责特定阶段的工作，如“规划”“大纲生成”“内容生成”“并行内容生成”“一步大纲”等，节点间通过 GraphState 传递上下文。
- 策略（Strategy）：通过策略选择器在“串行”“一步大纲+并行内容”“逐章内聚”“DeepPlan+并行”等方案间切换。
- 阶段管理（StageManager）：维护章节线性阶段机，提供安全推进与回退，支持资源清理与乐观锁。
- 容错（FaultTolerance）：提供 AI 调用重试、节点超时、进度监控与自动恢复，保证生成任务的稳定性。
- 存储（BookStore）：封装 Prisma 访问，提供书籍/章节 CRUD、树形大纲重建、音频生成回调更新等能力。

章节来源
- [graph.ts:23-82](file://server/src/modules/book-generator/graph.ts#L23-L82)
- [index.ts:74-91](file://server/src/modules/book-generator/index.ts#L74-L91)
- [stage-manager.ts:100-198](file://server/src/modules/book-generator/stage-manager.ts#L100-L198)
- [fault-tolerance.ts:17-51](file://server/src/modules/book-generator/fault-tolerance.ts#L17-L51)
- [book-generator.store.ts:163-800](file://server/src/modules/book-generator/book-generator.store.ts#L163-L800)

## 架构概览
LangGraph 工作流以“策略门面 + 图编排 + 节点执行”为核心，结合“阶段管理 + 容错控制 + 存储层”，形成完整的书籍生成流水线。API 层接收请求后，选择策略并启动图编排；节点在图中按顺序执行，状态通过 reducer 合并；阶段管理器确保章节状态线性推进；容错层保障稳定性；存储层提供持久化与数据重建能力。

```mermaid
sequenceDiagram
participant Client as "客户端"
participant API as "langgraph-controller.ts"
participant Strat as "index.ts/selector.ts"
participant Graph as "graph.ts"
participant Node as "nodes/*"
participant Stage as "stage-manager.ts"
participant Store as "book-generator.store.ts"
Client->>API : POST /api/book-generator/langgraph/books
API->>Strat : 选择策略并初始化
Strat->>Graph : 初始化GraphState
Graph->>Node : planBookNode规划
Node->>Store : 写入规划结果/更新bookPlan
Graph->>Node : generateOutlineNode 或 fullOutlineNode
Node->>Store : 写入大纲/创建章节
Graph->>Node : writeChaptersParallelNode并行内容
Node->>Stage : advanceChapter/content_completed
Node->>Store : 更新章节内容/字数/音频URL
Graph-->>API : 返回进度/状态
API-->>Client : 任务状态/进度
```

图表来源
- [langgraph-controller.ts:388-546](file://server/src/modules/book-generator/langgraph-controller.ts#L388-L546)
- [index.ts:74-91](file://server/src/modules/book-generator/index.ts#L74-L91)
- [graph.ts:23-82](file://server/src/modules/book-generator/graph.ts#L23-L82)
- [plan.node.ts:145-200](file://server/src/modules/book-generator/nodes/plan.node.ts#L145-L200)
- [outline.node.ts:14-128](file://server/src/modules/book-generator/nodes/outline.node.ts#L14-L128)
- [full-outline.node.ts:135-217](file://server/src/modules/book-generator/nodes/full-outline.node.ts#L135-L217)
- [content.node.ts:444-545](file://server/src/modules/book-generator/nodes/content.node.ts#L444-L545)
- [stage-manager.ts:158-198](file://server/src/modules/book-generator/stage-manager.ts#L158-L198)
- [book-generator.store.ts:402-428](file://server/src/modules/book-generator/book-generator.store.ts#L402-L428)

## 详细组件分析

### 状态与图编排（graph.ts）
- 状态字段：包含 bookId、userId、topic、bookScale、genLevel、description、bookPlan、currentChapter、completedChapters、finished、error、progress、failedChapters 等。
- Reducer 设计：
  - 进度与完成章节只增不减，防止回退导致状态倒退。
  - 失败章节列表通过追加合并，避免覆盖。
- 控制流：GraphState 作为节点间共享上下文，节点通过返回 partial state 更新状态。

```mermaid
classDiagram
class GraphState {
+string bookId
+string|number userId
+string topic
+string bookScale
+number genLevel
+string description
+string|undefined bookPlan
+number currentChapter
+number[] completedChapters
+boolean finished
+string|undefined error
+number progress
+number[] failedChapters
}
```

图表来源
- [graph.ts:23-82](file://server/src/modules/book-generator/graph.ts#L23-L82)

章节来源
- [graph.ts:12-82](file://server/src/modules/book-generator/graph.ts#L12-L82)

### 节点设计与执行（nodes/*）
- 规划节点（plan.node.ts）：在生成前由 AI 对书籍类型、目标读者、内容深度、写作风格、结构逻辑进行分析，输出可被后续节点使用的 bookPlan。
- 大纲节点（outline.node.ts）：基于 topic、bookScale、description 与 bookPlan 生成大纲，校验章节数并在范围内自动补全或截断。
- 一步大纲节点（full-outline.node.ts）：一次性生成完整树形大纲（章→节→小节），按 genLevel 决定层级。
- 内容节点（content.node.ts）：
  - 串行内容生成：遍历叶节点，逐个生成内容，更新章节状态与进度。
  - 并行内容生成：使用 AsyncPool 并发生成，支持拓扑排序与依赖处理，提升吞吐。
  - 安全防护：章节预算偏差检测、全书字数上限、配额消耗、失败回退。

```mermaid
flowchart TD
Start(["开始：content.node"]) --> FindLeaves["查找叶节点无子节点"]
FindLeaves --> Filter["过滤未完成内容的叶节点"]
Filter --> Loop{"还有待生成节点？"}
Loop --> |否| Done["完成：推进父节点状态"]
Loop --> |是| Gen["生成单个叶节点内容"]
Gen --> Safety["安全防护：预算/上限/配额"]
Safety --> Save["保存内容与字数"]
Save --> Advance["advanceChapter 到 content_completed"]
Advance --> Trigger["触发音频生成"]
Trigger --> Next["下一个节点"]
Next --> Loop
```

图表来源
- [content.node.ts:102-332](file://server/src/modules/book-generator/nodes/content.node.ts#L102-L332)
- [content.node.ts:444-545](file://server/src/modules/book-generator/nodes/content.node.ts#L444-L545)

章节来源
- [plan.node.ts:145-200](file://server/src/modules/book-generator/nodes/plan.node.ts#L145-L200)
- [outline.node.ts:14-128](file://server/src/modules/book-generator/nodes/outline.node.ts#L14-L128)
- [full-outline.node.ts:135-217](file://server/src/modules/book-generator/nodes/full-outline.node.ts#L135-L217)
- [content.node.ts:102-332](file://server/src/modules/book-generator/nodes/content.node.ts#L102-L332)
- [content.node.ts:444-545](file://server/src/modules/book-generator/nodes/content.node.ts#L444-L545)

### 阶段管理器（stage-manager.ts）
- 章节阶段机：定义章节阶段顺序与转移矩阵，确保只能按序推进或在允许范围内回退。
- 安全转移：使用乐观锁更新章节状态，若检测到冲突，记录日志并优雅处理。
- 资源清理：回退时按阶段索引清理下游资源（音频/视频 URL 与时长）。
- 上层封装：提供 advanceChapter（仅前进）、regenerateChapter（回退/重试）等便捷方法。

```mermaid
stateDiagram-v2
[*] --> idle
idle --> content_generating : "advanceChapter"
idle --> failed : "regenerateChapter"
outline_completed --> content_generating : "advanceChapter"
outline_completed --> failed : "regenerateChapter"
content_generating --> content_completed : "完成"
content_generating --> failed : "失败"
content_completed --> audio_generating : "advanceChapter"
content_completed --> audio_completed : "advanceChapter"
content_completed --> content_generating : "regenerateChapter"
content_completed --> failed : "regenerateChapter"
audio_generating --> audio_completed : "完成"
audio_generating --> content_completed : "回退"
audio_generating --> failed : "失败"
audio_completed --> video_generating : "advanceChapter"
audio_completed --> audio_generating : "regenerateChapter"
audio_completed --> content_generating : "regenerateChapter"
audio_completed --> failed : "regenerateChapter"
video_generating --> video_completed : "完成"
video_generating --> failed : "失败"
video_completed --> video_generating : "regenerateChapter"
video_completed --> audio_generating : "regenerateChapter"
video_completed --> content_generating : "regenerateChapter"
video_completed --> failed : "regenerateChapter"
failed --> content_generating : "regenerateChapter"
failed --> audio_generating : "regenerateChapter"
failed --> video_generating : "regenerateChapter"
failed --> idle : "regenerateChapter"
```

图表来源
- [stage-manager.ts:39-67](file://server/src/modules/book-generator/stage-manager.ts#L39-L67)
- [stage-manager.ts:100-198](file://server/src/modules/book-generator/stage-manager.ts#L100-L198)

章节来源
- [stage-manager.ts:100-198](file://server/src/modules/book-generator/stage-manager.ts#L100-L198)

### 容错与稳定性（fault-tolerance.ts）
- AI 调用重试：指数退避重试，记录失败日志并通知用户。
- 节点超时：为各节点配置超时阈值，超时后记录并尝试自动恢复。
- 进度监控：定时检查书籍进度，长时间无进展发出警告并尝试自动恢复。
- 自动恢复：重新入队并延时重试，避免任务永久卡死。

```mermaid
flowchart TD
Enter(["进入节点"]) --> Timeout["设置超时计时器"]
Timeout --> CallLLM["调用LLM带重试"]
CallLLM --> Success{"成功？"}
Success --> |是| Complete["通知完成并返回"]
Success --> |否| Retry["指数退避重试"]
Retry --> Max{"超过最大重试？"}
Max --> |否| CallLLM
Max --> |是| Fail["记录失败并通知用户"]
Timeout --> |超时| TimeoutAction["记录超时并尝试恢复"]
TimeoutAction --> Recovery["自动恢复：重新入队"]
```

图表来源
- [fault-tolerance.ts:68-180](file://server/src/modules/book-generator/fault-tolerance.ts#L68-L180)
- [fault-tolerance.ts:188-323](file://server/src/modules/book-generator/fault-tolerance.ts#L188-L323)

章节来源
- [fault-tolerance.ts:17-51](file://server/src/modules/book-generator/fault-tolerance.ts#L17-L51)
- [fault-tolerance.ts:68-180](file://server/src/modules/book-generator/fault-tolerance.ts#L68-L180)
- [fault-tolerance.ts:188-323](file://server/src/modules/book-generator/fault-tolerance.ts#L188-L323)

### 存储与数据模型（book-generator.store.ts, book-generator.types.ts）
- 数据模型：Book、Chapter、BookOutline、GenerateTask 等，支持三级树形结构（章→节→小节）。
- 存储能力：创建/更新书籍、批量创建章节、按 ID 更新章节内容、发布/取消发布、生成音频并回调更新 URL。
- 阶段映射：根据章节状态计算书籍整体阶段，确保整体进度一致性。

```mermaid
erDiagram
BOOK {
int id PK
string title
string description
string bookScale
int totalChapters
int estimatedWords
string genStage
int progress
boolean isPublished
}
CHAPTER {
int id PK
int bookId FK
int number
string title
string content
int wordCount
string genStage
string audioUrl
float audioDuration
string videoUrl
float videoDuration
int level
int parentId
}
BOOK ||--o{ CHAPTER : "包含"
```

图表来源
- [book-generator.types.ts:32-112](file://server/src/modules/book-generator/book-generator.types.ts#L32-L112)
- [book-generator.store.ts:244-274](file://server/src/modules/book-generator/book-generator.store.ts#L244-L274)
- [book-generator.store.ts:445-509](file://server/src/modules/book-generator/book-generator.store.ts#L445-L509)

章节来源
- [book-generator.types.ts:8-112](file://server/src/modules/book-generator/book-generator.types.ts#L8-L112)
- [book-generator.store.ts:19-60](file://server/src/modules/book-generator/book-generator.store.ts#L19-L60)
- [book-generator.store.ts:402-428](file://server/src/modules/book-generator/book-generator.store.ts#L402-L428)

### 策略选择与配置（index.ts, selector.ts）
- 策略门面：LangGraphBookGenerator.generate 调用当前策略执行生成。
- 策略选择器：支持 sequential、one-step-outline、per-chapter、deep-plan-parallel 四种策略，可通过运行时切换。
- 大纲层级：根据书籍规模与话题文本自动推荐 genLevel，也可由用户显式指定。

章节来源
- [index.ts:74-91](file://server/src/modules/book-generator/index.ts#L74-L91)
- [selector.ts:14-77](file://server/src/modules/book-generator/strategies/selector.ts#L14-L77)

### API 与任务调度（langgraph-controller.ts）
- 估算接口：提供书籍规模预估、章节数量、音频时长估算与配额检查。
- 书籍创建：支持立即生成与队列模式，失败时优雅降级为同步执行。
- 任务进度：提供书籍进度查询，基于章节完成情况计算。
- 交互模式：支持交互式创建（仅创建书籍，不自动生成）。

章节来源
- [langgraph-controller.ts:42-92](file://server/src/modules/book-generator/langgraph-controller.ts#L42-L92)
- [langgraph-controller.ts:388-546](file://server/src/modules/book-generator/langgraph-controller.ts#L388-L546)
- [langgraph-controller.ts:677-714](file://server/src/modules/book-generator/langgraph-controller.ts#L677-L714)

## 依赖分析
- 组件耦合：
  - graph.ts 与 nodes/* 强耦合，节点通过 GraphState 读写状态。
  - langgraph-controller.ts 依赖策略选择器与存储层，协调任务生命周期。
  - stage-manager.ts 与 book-generator.store.ts 协作，确保状态一致性。
  - fault-tolerance.ts 与 API 层协作，提供稳定的服务体验。
- 外部依赖：
  - LangChain LangGraph：状态注解与图编排。
  - Prisma：数据库访问与事务。
  - LLM 服务：提示词构建与调用。

```mermaid
graph LR
Controller["langgraph-controller.ts"] --> Strategy["selector.ts"]
Strategy --> Graph["graph.ts"]
Graph --> Nodes["nodes/*"]
Nodes --> Store["book-generator.store.ts"]
Nodes --> Stage["stage-manager.ts"]
Controller --> FT["fault-tolerance.ts"]
Controller --> Store
Controller --> BTC["book-type-config.ts"]
```

图表来源
- [langgraph-controller.ts:1-36](file://server/src/modules/book-generator/langgraph-controller.ts#L1-L36)
- [selector.ts:14-77](file://server/src/modules/book-generator/strategies/selector.ts#L14-L77)
- [graph.ts:5-6](file://server/src/modules/book-generator/graph.ts#L5-L6)
- [content.node.ts:6-17](file://server/src/modules/book-generator/nodes/content.node.ts#L6-L17)
- [stage-manager.ts:6-8](file://server/src/modules/book-generator/stage-manager.ts#L6-L8)
- [fault-tolerance.ts:11-13](file://server/src/modules/book-generator/fault-tolerance.ts#L11-L13)
- [book-generator.store.ts:5-13](file://server/src/modules/book-generator/book-generator.store.ts#L5-L13)
- [book-type-config.ts:61-75](file://server/src/modules/book-generator/book-type-config.ts#L61-L75)

章节来源
- [langgraph-controller.ts:1-36](file://server/src/modules/book-generator/langgraph-controller.ts#L1-L36)
- [selector.ts:14-77](file://server/src/modules/book-generator/strategies/selector.ts#L14-L77)
- [graph.ts:5-6](file://server/src/modules/book-generator/graph.ts#L5-L6)
- [content.node.ts:6-17](file://server/src/modules/book-generator/nodes/content.node.ts#L6-L17)
- [stage-manager.ts:6-8](file://server/src/modules/book-generator/stage-manager.ts#L6-L8)
- [fault-tolerance.ts:11-13](file://server/src/modules/book-generator/fault-tolerance.ts#L11-L13)
- [book-generator.store.ts:5-13](file://server/src/modules/book-generator/book-generator.store.ts#L5-L13)
- [book-type-config.ts:61-75](file://server/src/modules/book-generator/book-type-config.ts#L61-L75)

## 性能考虑
- 并行内容生成：content.node.ts 使用 AsyncPool 并发生成叶节点内容，显著提升吞吐；建议根据服务器资源与 LLM 限流策略调整并发度。
- 进度只增不减：graph.ts 的 reducer 设计避免回退导致的重复计算与状态抖动，提高稳定性。
- 预算与上限：节点内嵌预算偏差检测与全书字数上限，防止超支与资源浪费。
- 队列与降级：API 层优先使用队列提升用户体验，队列不可用时自动降级为同步执行，保证核心业务可用性。

## 故障排查指南
- AI 调用失败：
  - 检查重试日志与失败记录，确认是否达到最大重试次数。
  - 关注通知消息（ai_retry/ai_failed），定位失败节点。
- 节点超时：
  - 查看节点超时配置，确认执行时间是否异常。
  - 观察自动恢复流程，确认是否重新入队。
- 进度停滞：
  - 使用进度监控接口确认书籍进度，长时间无更新将触发警告与自动恢复。
- 章节状态异常：
  - 使用 safeTransition 的日志与冲突处理，确认乐观锁更新是否成功。
  - 必要时使用 regenerateChapter 进行回退与重试。

章节来源
- [fault-tolerance.ts:68-180](file://server/src/modules/book-generator/fault-tolerance.ts#L68-L180)
- [fault-tolerance.ts:188-323](file://server/src/modules/book-generator/fault-tolerance.ts#L188-L323)
- [stage-manager.ts:100-198](file://server/src/modules/book-generator/stage-manager.ts#L100-L198)

## 结论
LangGraph 工作流引擎通过“策略门面 + 图编排 + 节点执行 + 阶段管理 + 容错控制”的分层设计，实现了从书籍规划到内容生成的自动化流水线。其状态中枢与 reducer 设计保证了并发安全性，阶段管理器确保线性推进与资源清理，容错层提升了稳定性与用户体验。配合存储层的数据模型与 API 层的任务调度，形成了可扩展、可观测、可恢复的完整体系。

## 附录
- 配置选项与最佳实践
  - 大纲层级：根据书籍规模与话题文本自动推荐 genLevel，复杂书籍建议使用 3 层结构。
  - 并发控制：并行内容生成建议从 8 起步，结合 LLM 限流与服务器资源动态调整。
  - 超时设置：依据节点复杂度调整超时阈值，避免误伤正常执行。
  - 重试策略：指数退避重试，最大重试次数与最大延迟需结合 SLA 设定。
  - 日志与监控：启用进度监控与节点通知，及时发现异常并自动恢复。
- 参考类型定义
  - LangGraph 状态参考：langgraph-types.ts（实际运行时以 graph.ts 的 Annotation API 为准）
  - 书籍/章节类型：book-generator.types.ts

章节来源
- [book-type-config.ts:61-133](file://server/src/modules/book-generator/book-type-config.ts#L61-L133)
- [content.node.ts:337-338](file://server/src/modules/book-generator/nodes/content.node.ts#L337-L338)
- [fault-tolerance.ts:17-51](file://server/src/modules/book-generator/fault-tolerance.ts#L17-L51)
- [langgraph-types.ts:16-53](file://server/src/modules/book-generator/langgraph-types.ts#L16-L53)
- [book-generator.types.ts:8-112](file://server/src/modules/book-generator/book-generator.types.ts#L8-L112)