本文档引用的文件
AI有声书生成平台是一个基于LangGraph的智能内容创作系统,专注于自动化生成高质量的有声读物内容。该平台采用三级目录结构设计,通过AI驱动的内容生成流程,为用户提供从书籍规划到最终发布的完整解决方案。
本平台的核心价值在于其创新的内容数据模型设计,通过精心设计的Book和BookChapter模型,实现了内容的层次化组织、状态化的生命周期管理和智能化的生成流程控制。系统支持从简单的文本描述到复杂的多媒体内容的全方位创作需求。
平台采用模块化的架构设计,主要分为以下几个核心模块:
graph TB
subgraph "数据层"
A[Prisma ORM]
B[MySQL 数据库]
end
subgraph "业务逻辑层"
C[Book Generator 模块]
D[Search 模块]
E[TTS 模块]
F[Video Generator 模块]
end
subgraph "表现层"
G[前端应用]
H[API 接口]
end
A --> B
C --> A
D --> A
E --> A
F --> A
G --> H
H --> C
H --> D
H --> E
H --> F
图表来源
章节来源
平台的核心数据模型围绕两个主要实体构建:Book(书籍)和BookChapter(章节)。这两个模型通过外键关系紧密关联,形成了完整的书籍内容管理体系。
Book模型作为书籍的顶层容器,负责管理书籍的基本元数据、生成状态和整体进度。其设计体现了现代内容管理系统的核心需求:
核心字段说明:
id: 主键标识符,自增整数userId: 创建者标识,支持匿名创建title/subtitle/description: 书籍基本信息,支持副标题和详细描述coverUrl: 封面图片URL,支持自定义封面targetAudience/style/bookScale: 内容定位参数,影响生成策略totalChapters/estimatedWords: 书籍规模指标,指导生成资源配置progress/isPublished: 生成进度和发布状态outlineJson/foreword/afterword: 大纲和前后记内容errorMsg/bookAnalysis: 错误信息和AI分析结果genStage/status: 生成阶段和业务状态BookChapter模型采用三级目录结构,实现了内容的层次化组织:
层级结构:
内容存储策略:
状态管理:
genStage: 生成阶段状态,从idle到video_completed的完整流程status: 章节业务状态,支持pending、completed、failed等状态contentError: 内容生成错误信息generatedAt: 内容生成时间戳章节内容字段:
title: 章节标题summary/keyPoints: 章节概述和核心要点estimatedWords/wordCount: 预估和实际字数统计content: 正文内容(仅Level 3存储)audioUrl/audioDuration: 音频资源和时长videoUrl/videoDuration: 视频资源和时长isPublic: 公开状态,控制内容可见性章节来源
平台采用分层架构设计,确保了系统的可扩展性和维护性:
graph TD
subgraph "API 层"
A[LangGraph 控制器]
B[批量生成控制器]
C[搜索控制器]
end
subgraph "服务层"
D[Book Generator 服务]
E[批量生成编排器]
F[搜索服务]
end
subgraph "存储层"
G[BookStore 存储]
H[Prisma 数据库]
end
subgraph "外部服务"
I[TTS 服务]
J[视频生成服务]
K[WebSocket 通知]
end
A --> D
B --> E
C --> F
D --> G
E --> G
F --> H
G --> H
D --> I
D --> J
E --> K
G --> K
图表来源
章节来源
Book模型的设计充分考虑了内容创作的复杂性和多样性,通过合理的字段划分实现了功能的完整性:
classDiagram
class Book {
+id : number
+userId : number
+title : string
+subtitle : string
+description : string
+coverUrl : string
+targetAudience : string
+style : string
+bookScale : string
+totalChapters : number
+estimatedWords : number
+progress : number
+isPublished : boolean
+outlineJson : string
+foreword : string
+afterword : string
+errorMsg : string
+bookAnalysis : string
+genStage : string
+status : string
+failedStage : string
+createdAt : Date
+updatedAt : Date
}
class BookChapter {
+id : number
+bookId : number
+parentId : number
+level : number
+number : number
+title : string
+summary : string
+keyPoints : string
+estimatedWords : number
+content : string
+wordCount : number
+contentError : string
+generatedAt : Date
+audioUrl : string
+audioDuration : number
+videoUrl : string
+videoDuration : number
+isPublic : boolean
+genStage : string
+status : string
+lrcLyrics : string
}
Book "1" --> "*" BookChapter : "has many"
图表来源
Book模型实现了完整的生命周期状态管理,支持从草稿到发布的全流程控制:
状态流转图:
stateDiagram-v2
[*] --> 草稿
草稿 --> 规划中 : 创建大纲
规划中 --> 生成中 : 内容生成
生成中 --> 已完成 : 全部章节完成
生成中 --> 失败 : 生成异常
已完成 --> 已发布 : 发布操作
失败 --> 规划中 : 重新规划
已发布 --> 已完成 : 内容更新
状态字段说明:
status: 业务状态,支持draft、planning、generating、completed、failed、interruptedgenStage: 生成阶段,支持draft、outlining、content_generating、video_completed等failedStage: 失败阶段记录,便于问题定位和恢复平台采用了智能的内容存储策略,通过JSON格式存储大纲信息,实现了灵活性和结构化的平衡:
大纲数据格式:
{
"bookType": "textbook",
"mainTheme": "人工智能基础",
"structureLogic": "理论-实践-案例",
"chapters": [
{
"number": 1,
"title": "第一章:AI概述",
"summary": "介绍人工智能的基本概念和发展历程",
"keyPoints": ["AI定义", "发展历程", "应用领域"],
"estimatedWords": 5000,
"sections": [
{
"number": 1,
"title": "1.1 什么是人工智能",
"summary": "详细解释AI的概念和特征",
"keyPoints": ["定义", "特征", "分类"],
"estimatedWords": 2000,
"subsections": [
{
"number": 1,
"title": "1.1.1 基本概念",
"summary": "AI的核心概念和基本原理",
"keyPoints": ["机器学习", "深度学习", "神经网络"],
"estimatedWords": 1000
}
]
}
]
}
]
}
章节来源
BookChapter模型实现了严格的三级目录结构,这是平台内容组织的核心设计:
目录层级关系:
graph TD
A[Level 1 - 章] --> B[Level 2 - 节]
B --> C[Level 3 - 小节]
A["章节标题<br/>不存储正文"]
B["节标题<br/>不存储正文"]
C["小节内容<br/>存储正文"]
style A fill:#e1f5fe
style B fill:#f3e5f5
style C fill:#e8f5e8
图表来源
平台的章节生成流程体现了高度的智能化和自动化:
sequenceDiagram
participant U as 用户
participant API as API接口
participant LS as LangGraph服务
participant DB as 数据库
participant TTS as TTS服务
U->>API : 创建书籍请求
API->>LS : 启动生成流程
LS->>DB : 创建Level 1章节
LS->>LS : 生成Level 2节
LS->>LS : 生成Level 3小节
LS->>DB : 存储正文内容
DB->>TTS : 生成音频
TTS->>DB : 更新音频URL
DB->>API : 返回生成结果
API->>U : 返回完成状态
图表来源
每个章节都具有独立的状态管理系统,支持精细化的进度跟踪:
章节状态机:
stateDiagram-v2
[*] --> 空闲
空闲 --> 大纲完成 : 生成大纲
大纲完成 --> 内容生成中 : 开始生成
内容生成中 --> 内容完成 : 生成完成
内容生成中 --> 失败 : 生成异常
内容完成 --> 音频生成中 : 生成音频
音频生成中 --> 音频完成 : 音频完成
音频完成 --> 视频生成中 : 生成视频
视频生成中 --> 视频完成 : 视频完成
失败 --> 大纲完成 : 重新生成
状态字段映射:
genStage: 生成阶段状态status: 业务状态contentError: 内容错误信息generatedAt: 生成时间章节来源
平台提供了完整的书籍管理API,支持从创建到发布的全流程操作:
核心API接口:
POST /api/book-generator/langgraph/books - 创建书籍GET /api/book-generator/langgraph/books/:id - 获取书籍详情POST /api/book-generator/langgraph/books/:id/generate - 一键生成POST /api/book-generator/books/:id/batch-generate - 批量生成PUT /api/book-generator/langgraph/books/:id/publish - 切换发布状态搜索功能:
GET /api/search - 全局搜索GET /api/search/hot - 热门搜索词GET /api/search/history - 搜索历史智能推荐:
POST /api/book-generator/langgraph/smart-recommend - 智能推荐章节来源
平台的数据模型之间存在清晰的依赖关系,确保了数据的一致性和完整性:
graph LR
subgraph "核心模型"
A[Book] --> B[BookChapter]
B --> C[Comment]
B --> D[PlayRecord]
B --> E[PlaylistItem]
end
subgraph "关联模型"
F[Favorite] --> A
G[User] --> A
H[User] --> B
I[VideoProject] --> A
I --> B
end
subgraph "工具模型"
J[SearchHistory]
K[HotSearch]
L[TokenUsage]
end
图表来源
平台的业务流程体现了高度的模块化和解耦设计:
流程依赖关系:
章节来源
平台在数据库层面采用了多项优化策略:
索引设计:
Book表:(userId, status)复合索引,createdAt索引BookChapter表:bookId、bookId_parentId、bookId_level复合索引title和description字段建立全文检索支持查询优化:
平台实现了多层次的缓存机制:
内存缓存:
分布式缓存:
平台采用了多种并发控制机制:
事务管理:
队列管理:
状态不一致问题: 当遇到书籍状态与章节状态不一致的情况时,可以通过以下方式诊断:
computeBookGenStage函数的计算逻辑genStage字段值failedStage字段的正确设置数据迁移问题: 对于历史数据的迁移,需要注意:
监控指标:
告警机制:
章节来源
AI有声书生成平台通过精心设计的数据模型和架构,成功实现了从内容创作到发布的完整解决方案。Book和BookChapter模型的设计体现了现代内容管理系统的核心理念,即通过合理的数据结构支持复杂的业务流程。
平台的主要优势包括:
未来的发展方向包括:
创建书籍:
// POST /api/book-generator/langgraph/books
const response = await fetch('/api/book-generator/langgraph/books', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
title: '示例书籍',
description: '这是一本示例书籍的描述',
targetAudience: '通用',
style: '专业严谨'
})
});
批量生成:
// POST /api/book-generator/books/{id}/batch-generate
const response = await fetch(`/api/book-generator/books/${bookId}/batch-generate`, {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
steps: ['generate_content', 'generate_audio', 'merge_audio']
})
});
搜索内容:
// GET /api/search?q=关键词
const response = await fetch(`/api/search?q=人工智能&limit=20`);
const results = await response.json();
状态更新策略:
性能优化建议: