本文引用的文件
本文件为“AI有声书生成平台”的整体架构设计文档,面向前端uniapp应用层、后端Koa.js服务层、数据库与第三方服务层的三层架构,结合微服务化理念(模块化服务划分、服务间通信机制、API网关设计)、水平扩展能力(负载均衡、服务发现、容器化部署)、系统安全架构(身份认证、授权控制、数据加密),并提供系统架构图与用户请求完整流转路径,帮助开发者与运维人员快速理解与落地。
项目采用前后端分离的三层架构:
数据与第三方服务:数据库采用MySQL(Prisma ORM),文件存储支持本地或OSS,AI服务通过外部TTS服务(如阿里云百炼)提供语音合成能力。
graph TB
subgraph "前端层uniapp"
FE_App["应用入口<br/>main.ts"]
FE_Request["请求封装<br/>request.ts"]
end
subgraph "后端层Koa.js"
BE_App["应用入口<br/>server/src/app.ts"]
BE_Router["路由注册<br/>REST + WebSocket"]
BE_Config["配置中心<br/>config/index.ts"]
end
subgraph "数据与第三方服务"
DB["数据库<br/>MySQL + Prisma"]
Storage["文件存储<br/>本地/OSS"]
TTS["TTS服务<br/>阿里云百炼等"]
end
FE_App --> FE_Request
FE_Request --> BE_Router
BE_Router --> BE_App
BE_App --> BE_Config
BE_App --> DB
BE_App --> Storage
BE_App --> TTS
图表来源
章节来源
章节来源
系统采用三层架构与微服务化理念:
数据库与第三方服务层:MySQL(Prisma ORM),文件存储(本地或OSS),TTS服务(阿里云百炼等)。
graph TB
Client["客户端<br/>H5/小程序"] --> APIGW["API网关/反向代理<br/>Nginx"]
APIGW --> Koa["Koa应用<br/>server/src/app.ts"]
Koa --> Modules["业务模块控制器<br/>REST + WebSocket"]
Modules --> DB["数据库<br/>MySQL + Prisma"]
Modules --> OSS["对象存储<br/>本地/OSS"]
Modules --> TTS["TTS服务<br/>阿里云百炼"]
图表来源
请求封装与错误处理
统一设置Authorization头,支持GET/POST/PUT/DELETE,具备重试、超时、缓存与错误提示;对401、429、5xx等进行差异化处理。
sequenceDiagram
participant U as "用户"
participant APP as "uniapp应用"
participant REQ as "请求封装"
participant API as "后端API"
participant WS as "WebSocket(可选)"
U->>APP : 触发操作
APP->>REQ : request(url, options)
REQ->>REQ : 设置Authorization/缓存/重试
REQ->>API : HTTP请求
API-->>REQ : 返回{code,data}
REQ-->>APP : 成功/失败处理
API-->>WS : 生成进度推送(可选)
WS-->>APP : 推送进度
图表来源
章节来源
配置中心
统一管理端口、JWT密钥、数据库连接、模型配置(DashScope/TTS)、上传目录与大小限制等。
flowchart TD
Start(["请求进入"]) --> CORS["CORS/日志/安全防护"]
CORS --> Body["解析请求体/静态文件"]
Body --> Route["路由匹配 /api/*"]
Route --> Ctrl{"控制器分发"}
Ctrl --> |认证| AuthCtrl["auth.controller"]
Ctrl --> |TTS| TTSCtrl["tts.controller"]
Ctrl --> |书籍生成| BGCtrl["book-generator.controller"]
Ctrl --> |其他模块| OtherCtrl["..."]
AuthCtrl --> DB["数据库/存储"]
TTSCtrl --> DB
BGCtrl --> DB
OtherCtrl --> DB
DB --> Resp["返回响应"]
Resp --> End(["结束"])
图表来源
章节来源
TTS控制器
提供音色列表、服务商列表、测试数据库连接、异步生成音频、状态查询、预览音色、单/批量下载音频等接口;集成配额检查与使用限制中间件。
sequenceDiagram
participant FE as "前端"
participant API as "后端API"
participant BG as "书籍生成控制器"
participant Svc as "书籍生成服务"
participant DB as "数据库"
participant WS as "WebSocket"
FE->>API : POST /api/book-generator/books/ : id/batch-generate
API->>BG : 校验书籍/步骤/并发
BG->>Svc : 创建批量生成任务
Svc->>DB : 更新状态/持久化
Svc-->>WS : 推送进度
WS-->>FE : 生成进度
Svc-->>API : 返回任务ID
API-->>FE : {code,message,data}
图表来源
章节来源
提供状态字段说明与常用查询示例,便于业务扩展与性能优化。
erDiagram
BOOK {
int id PK
int user_id
varchar title
int total_chapters
enum status
json outline_json
int album_id
}
BOOK_CHAPTER {
int id PK
int book_id FK
int number
varchar title
text key_points
enum status
int audio_id
}
AUDIO {
int id PK
int user_id
varchar title
text audio_url
int audio_duration
enum status
}
ALBUM {
int id PK
int user_id
varchar name
enum type
}
ALBUM_AUDIO {
int id PK
int album_id FK
int audio_id FK
int order_index
}
BOOK ||--o{ BOOK_CHAPTER : "包含"
BOOK ||--o{ AUDIO : "生成"
ALBUM ||--o{ ALBUM_AUDIO : "包含"
AUDIO ||--|| ALBUM_AUDIO : "被包含"
图表来源
章节来源
后端依赖
Koa、@koa/router、@koa/cors、koa-body、koa-mount、koa-static、Prisma、LangChain/LangGraph、Bull队列、ioredis、Axios、Sentry、Winston、WebSocket等,覆盖Web框架、ORM、AI链路、队列、缓存、监控与日志等能力。
graph LR
FE["前端<br/>uniapp"] --> |HTTP/WS| BE["后端<br/>Koa.js"]
BE --> DB["数据库<br/>MySQL"]
BE --> REDIS["缓存<br/>Redis"]
BE --> OSS["存储<br/>OSS/本地"]
BE --> LLM["AI/LLM<br/>LangChain/LangGraph"]
BE --> TTS["TTS<br/>阿里云百炼"]
图表来源
章节来源
章节来源
章节来源
本架构以uniapp前端与Koa.js后端为核心,配合MySQL与对象存储,以及外部TTS服务,实现了从文本到音频、从音频到视频的完整生成链路。通过模块化控制器、队列与WebSocket推送、统一配置中心与中间件体系,系统具备良好的可扩展性与可维护性。结合Nginx反向代理与Docker容器化部署,可进一步提升系统的高可用与弹性伸缩能力。
章节来源