# 内容数据模型
**本文档引用的文件**
- [schema.prisma](file://server/prisma/schema.prisma)
- [book-generator.types.ts](file://server/src/modules/book-generator/book-generator.types.ts)
- [book-generator.store.ts](file://server/src/modules/book-generator/book-generator.store.ts)
- [book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts)
- [book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts)
- [langgraph-controller.ts](file://server/src/modules/book-generator/langgraph-controller.ts)
- [search.service.ts](file://server/src/modules/search/search.service.ts)
- [search.controller.ts](file://server/src/modules/search/search.controller.ts)
- [README.md](file://server/src/modules/book-generator/README.md)
- [status-system-analysis.md](file://status-system-analysis.md)
## 目录
1. [简介](#简介)
2. [项目结构](#项目结构)
3. [核心组件](#核心组件)
4. [架构概览](#架构概览)
5. [详细组件分析](#详细组件分析)
6. [依赖关系分析](#依赖关系分析)
7. [性能考虑](#性能考虑)
8. [故障排除指南](#故障排除指南)
9. [结论](#结论)
10. [附录](#附录)
## 简介
AI有声书生成平台是一个基于LangGraph的智能内容创作系统,专注于自动化生成高质量的有声读物内容。该平台采用三级目录结构设计,通过AI驱动的内容生成流程,为用户提供从书籍规划到最终发布的完整解决方案。
本平台的核心价值在于其创新的内容数据模型设计,通过精心设计的Book和BookChapter模型,实现了内容的层次化组织、状态化的生命周期管理和智能化的生成流程控制。系统支持从简单的文本描述到复杂的多媒体内容的全方位创作需求。
## 项目结构
平台采用模块化的架构设计,主要分为以下几个核心模块:
```mermaid
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
```
**图表来源**
- [schema.prisma](file://server/prisma/schema.prisma)
- [book-generator.types.ts](file://server/src/modules/book-generator/book-generator.types.ts)
**章节来源**
- [schema.prisma](file://server/prisma/schema.prisma)
- [book-generator.types.ts](file://server/src/modules/book-generator/book-generator.types.ts)
## 核心组件
### 数据模型概述
平台的核心数据模型围绕两个主要实体构建:Book(书籍)和BookChapter(章节)。这两个模型通过外键关系紧密关联,形成了完整的书籍内容管理体系。
#### Book模型设计
Book模型作为书籍的顶层容器,负责管理书籍的基本元数据、生成状态和整体进度。其设计体现了现代内容管理系统的核心需求:
**核心字段说明:**
- `id`: 主键标识符,自增整数
- `userId`: 创建者标识,支持匿名创建
- `title/subtitle/description`: 书籍基本信息,支持副标题和详细描述
- `coverUrl`: 封面图片URL,支持自定义封面
- `targetAudience/style/bookScale`: 内容定位参数,影响生成策略
- `totalChapters/estimatedWords`: 书籍规模指标,指导生成资源配置
- `progress/isPublished`: 生成进度和发布状态
- `outlineJson/foreword/afterword`: 大纲和前后记内容
- `errorMsg/bookAnalysis`: 错误信息和AI分析结果
- `genStage/status`: 生成阶段和业务状态
#### BookChapter模型设计
BookChapter模型采用三级目录结构,实现了内容的层次化组织:
**层级结构:**
- Level 1 (章): 书籍的主要章节,不存储正文内容
- Level 2 (节): 章节下的子章节,不存储正文内容
- Level 3 (小节): 最终内容单元,存储实际的正文内容
**内容存储策略:**
- 正文内容仅存储在Level 3小节中,避免数据冗余
- Level 1和Level 2仅作为导航结构,提供清晰的层次关系
- 通过parentId字段建立父子关系,形成完整的树形结构
**状态管理:**
- `genStage`: 生成阶段状态,从idle到video_completed的完整流程
- `status`: 章节业务状态,支持pending、completed、failed等状态
- `contentError`: 内容生成错误信息
- `generatedAt`: 内容生成时间戳
**章节内容字段:**
- `title`: 章节标题
- `summary/keyPoints`: 章节概述和核心要点
- `estimatedWords/wordCount`: 预估和实际字数统计
- `content`: 正文内容(仅Level 3存储)
- `audioUrl/audioDuration`: 音频资源和时长
- `videoUrl/videoDuration`: 视频资源和时长
- `isPublic`: 公开状态,控制内容可见性
**章节来源**
- [schema.prisma](file://server/prisma/schema.prisma)
- [book-generator.types.ts](file://server/src/modules/book-generator/book-generator.types.ts)
## 架构概览
平台采用分层架构设计,确保了系统的可扩展性和维护性:
```mermaid
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
```
**图表来源**
- [langgraph-controller.ts](file://server/src/modules/book-generator/langgraph-controller.ts)
- [book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts)
- [book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts)
- [book-generator.store.ts](file://server/src/modules/book-generator/book-generator.store.ts)
**章节来源**
- [langgraph-controller.ts](file://server/src/modules/book-generator/langgraph-controller.ts)
- [book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts)
- [book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts)
## 详细组件分析
### Book模型详细分析
#### 数据结构设计
Book模型的设计充分考虑了内容创作的复杂性和多样性,通过合理的字段划分实现了功能的完整性:
```mermaid
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"
```
**图表来源**
- [schema.prisma](file://server/prisma/schema.prisma)
#### 业务状态管理
Book模型实现了完整的生命周期状态管理,支持从草稿到发布的全流程控制:
**状态流转图:**
```mermaid
stateDiagram-v2
[*] --> 草稿
草稿 --> 规划中 : 创建大纲
规划中 --> 生成中 : 内容生成
生成中 --> 已完成 : 全部章节完成
生成中 --> 失败 : 生成异常
已完成 --> 已发布 : 发布操作
失败 --> 规划中 : 重新规划
已发布 --> 已完成 : 内容更新
```
**状态字段说明:**
- `status`: 业务状态,支持draft、planning、generating、completed、failed、interrupted
- `genStage`: 生成阶段,支持draft、outlining、content_generating、video_completed等
- `failedStage`: 失败阶段记录,便于问题定位和恢复
#### 内容存储策略
平台采用了智能的内容存储策略,通过JSON格式存储大纲信息,实现了灵活性和结构化的平衡:
**大纲数据格式:**
```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
}
]
}
]
}
]
}
```
**章节来源**
- [book-generator.types.ts](file://server/src/modules/book-generator/book-generator.types.ts)
- [book-generator.store.ts](file://server/src/modules/book-generator/book-generator.store.ts)
### BookChapter模型详细分析
#### 三级目录结构
BookChapter模型实现了严格的三级目录结构,这是平台内容组织的核心设计:
**目录层级关系:**
```mermaid
graph TD
A[Level 1 - 章] --> B[Level 2 - 节]
B --> C[Level 3 - 小节]
A["章节标题
不存储正文"]
B["节标题
不存储正文"]
C["小节内容
存储正文"]
style A fill:#e1f5fe
style B fill:#f3e5f5
style C fill:#e8f5e8
```
**图表来源**
- [README.md](file://server/src/modules/book-generator/README.md)
#### 内容生成流程
平台的章节生成流程体现了高度的智能化和自动化:
```mermaid
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 : 返回完成状态
```
**图表来源**
- [book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts)
- [book-generator.store.ts](file://server/src/modules/book-generator/book-generator.store.ts)
#### 章节状态管理
每个章节都具有独立的状态管理系统,支持精细化的进度跟踪:
**章节状态机:**
```mermaid
stateDiagram-v2
[*] --> 空闲
空闲 --> 大纲完成 : 生成大纲
大纲完成 --> 内容生成中 : 开始生成
内容生成中 --> 内容完成 : 生成完成
内容生成中 --> 失败 : 生成异常
内容完成 --> 音频生成中 : 生成音频
音频生成中 --> 音频完成 : 音频完成
音频完成 --> 视频生成中 : 生成视频
视频生成中 --> 视频完成 : 视频完成
失败 --> 大纲完成 : 重新生成
```
**状态字段映射:**
- `genStage`: 生成阶段状态
- `status`: 业务状态
- `contentError`: 内容错误信息
- `generatedAt`: 生成时间
**章节来源**
- [book-generator.types.ts](file://server/src/modules/book-generator/book-generator.types.ts)
- [book-generator.store.ts](file://server/src/modules/book-generator/book-generator.store.ts)
### API接口设计
#### 书籍管理API
平台提供了完整的书籍管理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` - 切换发布状态
#### 搜索和推荐API
**搜索功能:**
- `GET /api/search` - 全局搜索
- `GET /api/search/hot` - 热门搜索词
- `GET /api/search/history` - 搜索历史
**智能推荐:**
- `POST /api/book-generator/langgraph/smart-recommend` - 智能推荐
**章节来源**
- [langgraph-controller.ts](file://server/src/modules/book-generator/langgraph-controller.ts)
- [book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts)
- [search.controller.ts](file://server/src/modules/search/search.controller.ts)
## 依赖关系分析
### 数据模型依赖
平台的数据模型之间存在清晰的依赖关系,确保了数据的一致性和完整性:
```mermaid
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
```
**图表来源**
- [schema.prisma](file://server/prisma/schema.prisma)
### 业务流程依赖
平台的业务流程体现了高度的模块化和解耦设计:
**流程依赖关系:**
- BookGenerator服务依赖于BookStore存储
- 批量生成编排器依赖于各个生成步骤
- 搜索服务独立于内容生成流程
- TTS和视频生成服务通过接口集成
**章节来源**
- [book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts)
- [book-generator.store.ts](file://server/src/modules/book-generator/book-generator.store.ts)
## 性能考虑
### 数据库优化
平台在数据库层面采用了多项优化策略:
**索引设计:**
- `Book`表:`(userId, status)`复合索引,`createdAt`索引
- `BookChapter`表:`bookId`、`bookId_parentId`、`bookId_level`复合索引
- 搜索优化:对`title`和`description`字段建立全文检索支持
**查询优化:**
- 分页查询:限制返回结果数量,避免大数据集查询
- 条件查询:使用精确匹配和范围查询减少扫描
- 连接优化:合理使用JOIN操作,避免N+1查询问题
### 缓存策略
平台实现了多层次的缓存机制:
**内存缓存:**
- 书籍对象缓存,减少数据库访问
- 章节树结构缓存,加速树形结构构建
- 搜索结果缓存,提升搜索性能
**分布式缓存:**
- Redis缓存热门内容
- WebSocket连接池,支持实时通知
### 并发控制
平台采用了多种并发控制机制:
**事务管理:**
- 批量操作使用数据库事务保证一致性
- 发布操作使用原子性更新
- 状态更新使用乐观锁机制
**队列管理:**
- 生成任务队列,支持任务调度
- 限流控制,防止系统过载
- 重试机制,提高可靠性
## 故障排除指南
### 常见问题诊断
**状态不一致问题:**
当遇到书籍状态与章节状态不一致的情况时,可以通过以下方式诊断:
1. 检查`computeBookGenStage`函数的计算逻辑
2. 验证所有章节的`genStage`字段值
3. 确认`failedStage`字段的正确设置
**数据迁移问题:**
对于历史数据的迁移,需要注意:
1. 章节层级识别:区分Level 1和Level 3的异常数据
2. 父子关系修复:确保parentId字段的正确性
3. 数据完整性检查:验证所有必要字段的完整性
### 性能监控
**监控指标:**
- 数据库查询延迟
- API响应时间
- 内存使用情况
- 磁盘I/O性能
**告警机制:**
- 自动化健康检查
- 异常状态检测
- 性能阈值告警
**章节来源**
- [status-system-analysis.md](file://status-system-analysis.md)
- [book-generator.store.ts](file://server/src/modules/book-generator/book-generator.store.ts)
## 结论
AI有声书生成平台通过精心设计的数据模型和架构,成功实现了从内容创作到发布的完整解决方案。Book和BookChapter模型的设计体现了现代内容管理系统的核心理念,即通过合理的数据结构支持复杂的业务流程。
平台的主要优势包括:
1. **灵活的内容组织**:三级目录结构支持复杂的内容层次
2. **智能化的生成流程**:基于LangGraph的AI驱动内容生成
3. **完善的生命周期管理**:从草稿到发布的全流程控制
4. **可扩展的架构设计**:模块化设计支持功能扩展
5. **高性能的实现**:优化的数据库设计和缓存策略
未来的发展方向包括:
- 增强AI生成能力,支持更多内容类型的创作
- 优化用户体验,提供更直观的创作界面
- 扩展多平台支持,覆盖更多的发布渠道
- 加强数据分析,提供内容质量评估功能
## 附录
### API使用示例
**创建书籍:**
```javascript
// 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: '专业严谨'
})
});
```
**批量生成:**
```javascript
// 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']
})
});
```
**搜索内容:**
```javascript
// GET /api/search?q=关键词
const response = await fetch(`/api/search?q=人工智能&limit=20`);
const results = await response.json();
```
### 状态管理最佳实践
**状态更新策略:**
1. 使用原子性更新确保状态一致性
2. 实现幂等性操作避免重复更新
3. 建立状态回滚机制处理异常情况
4. 提供状态查询接口便于调试
**性能优化建议:**
1. 合理使用缓存减少数据库访问
2. 实现批量操作提升处理效率
3. 优化索引设计提升查询性能
4. 建立监控体系及时发现问题