# 内容数据模型 **本文档引用的文件** - [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. 建立监控体系及时发现问题