本文引用的文件
本技术文档围绕“容错与错误处理系统”展开,聚焦于书籍生成流水线中的故障检测、自动恢复、错误分类与处理、状态检查点与断点续传、进度保护与通知机制。文档基于现有代码实现,系统化梳理了以下关键能力:
与容错与错误处理相关的核心文件分布如下:
控制器与接口:book-generator.controller.ts
graph TB
subgraph "容错与错误处理"
FT["fault-tolerance.ts"]
SM["stage-manager.ts"]
FTM["FAULT_TOLERANCE.md"]
end
subgraph "状态与类型"
TYPES["book-generator.types.ts"]
STATUS["status-system-redesign.md"]
end
subgraph "存储与编排"
STORE["book-generator.store.ts"]
SERVICE["book-generator.service.ts"]
QUEUE["book-queue.processor.ts"]
end
subgraph "错误处理与日志"
ERR["errorHandler.ts"]
LOG["logger.service.ts"]
LGS["log.service.ts"]
end
subgraph "断点续传"
ADDCHK["add-chapter-checkpoint.js"]
FIXCHK["fix-checkpoint.js"]
end
CTRL["book-generator.controller.ts"]
FT --> SERVICE
FT --> STORE
FT --> QUEUE
SM --> SERVICE
SM --> STORE
SERVICE --> CTRL
STORE --> QUEUE
ERR --> CTRL
LOG --> SERVICE
LGS --> ERR
ADDCHK --> SERVICE
FIXCHK --> SERVICE
图表来源
章节来源
章节来源
容错与错误处理系统贯穿“生成编排 → 节点执行 → 状态迁移 → 队列处理 → 用户通知”的全链路。
sequenceDiagram
participant Ctrl as "控制器<br/>book-generator.controller.ts"
participant Orchestrator as "编排器<br/>book-generator.service.ts"
participant FT as "容错层<br/>fault-tolerance.ts"
participant SM as "阶段管理器<br/>stage-manager.ts"
participant Store as "存储<br/>book-generator.store.ts"
participant Queue as "队列处理器<br/>book-queue.processor.ts"
participant WS as "WebSocket<br/>前端"
Ctrl->>Orchestrator : 启动批量生成任务
Orchestrator->>FT : 启动进度监控
Orchestrator->>Store : 更新书籍阶段/进度
Orchestrator->>SM : advanceChapter/regenerateChapter
SM->>Store : 乐观锁写入 + 资源清理
Orchestrator->>FT : 节点执行带超时/重试
FT->>WS : 通知用户重试/超时/恢复
FT->>Queue : 自动恢复时重新入队
Queue-->>Orchestrator : 任务完成/失败回调
Orchestrator-->>Ctrl : 推送进度/完成状态
图表来源
自动恢复
重新入队并等待服务恢复后继续执行
flowchart TD
Start(["开始节点"]) --> CallLLM["调用LLM带重试"]
CallLLM --> Retry{"重试次数用尽?"}
Retry --> |否| Sleep["指数退避等待"] --> CallLLM
Retry --> |是| Fail["记录失败并通知用户"]
Fail --> Timeout["节点超时检测"]
Timeout --> TO{"超时?"}
TO --> |是| AutoRec["自动恢复:重新入队"]
TO --> |否| Proceed["继续执行"]
AutoRec --> Monitor["进度监控:分级告警"]
Monitor --> Warn1["10分钟:警告"]
Monitor --> Warn2["20分钟:建议干预"]
Monitor --> Recover["30分钟:自动恢复"]
Recover --> Requeue["重新入队"]
Requeue --> Proceed
图表来源
章节来源
上层封装
regenerateChapter:允许回退并自动清理下游资源
flowchart TD
S0["当前阶段"] --> Check["检查是否允许转移到目标阶段"]
Check --> |允许| Clean["计算并应用资源清理规则"]
Clean --> Optimistic["乐观锁更新状态"]
Optimistic --> Conflict{"更新成功?"}
Conflict --> |是| Done["完成"]
Conflict --> |否| Query["查询实际状态"]
Query --> Same{"目标与实际相同?"}
Same --> |是| Skip["跳过并记录"] --> Done
Same --> |否| FailedState{"当前为failed且目标非idle?"}
FailedState --> |是| Skip
FailedState --> |否| Warn["记录警告但不崩溃"] --> Done
图表来源
章节来源
队列处理器
任务完成/失败回调中更新书籍状态与错误信息
sequenceDiagram
participant Orchestrator as "编排器"
participant Store as "存储"
participant WS as "WebSocket"
Orchestrator->>Store : 更新书籍阶段/进度
Orchestrator->>WS : 推送步骤进度
Orchestrator->>Orchestrator : 轮询检查完成状态
Orchestrator-->>Orchestrator : 步骤间检查取消标志
Orchestrator-->>Store : 最终更新进度为100%
图表来源
章节来源
生成字数统计
统计已生成字数,结合完成状态实现更精细的断点续传
flowchart TD
Load["加载书籍大纲"] --> ListCh["遍历章节"]
ListCh --> CheckComp{"章节已完成?"}
CheckComp --> |是| Skip["跳过该章节"] --> NextCh["下一章节"]
CheckComp --> |否| GenCh["生成章节内容"]
GenCh --> NextCh
NextCh --> Done{"全部章节处理完?"}
Done --> |否| ListCh
Done --> |是| End["结束"]
图表来源
章节来源
日志服务
错误模式识别与建议生成,支持清理旧日志
flowchart TD
Req["请求到达"] --> Try["业务处理"]
Try --> |成功| Resp["正常响应"]
Try --> |异常| Catch["错误中间件捕获"]
Catch --> Build["构建错误响应"]
Build --> Log["记录结构化日志"]
Log --> Resp
图表来源
章节来源
错误处理与日志服务贯穿全链路,提供统一的错误响应与日志记录
graph LR
FT["容错层"] --> STORE["存储"]
FT --> QUEUE["队列"]
SM["阶段管理器"] --> STORE
SERVICE["编排器"] --> WS["WebSocket"]
SERVICE --> STORE
ERR["错误中间件"] --> LOG["日志服务"]
LOG --> FS["文件系统"]
图表来源
章节来源
章节来源
本容错与错误处理系统通过“智能重试 + 节点超时 + 进度监控 + 自动恢复 + 线性阶段管理 + 断点续传 + 统一日志与错误处理”的组合拳,显著提升了书籍生成流水线的稳定性与用户体验。建议在生产环境中持续优化超时与重试参数、完善前端通知与状态展示,并建立定期健康检查与日志清理机制,以保障系统的长期可靠运行。
章节来源