# 快速开始
**本文引用的文件**
- [README.md](file://README.md)
- [DEPLOY.md](file://docs/DEPLOY.md)
- [app-troubleshooting.md](file://docs/app-troubleshooting.md)
- [server/package.json](file://server/package.json)
- [my-uniapp-vue3/package.json](file://my-uniapp-vue3/package.json)
- [server/src/config/index.ts](file://server/src/config/index.ts)
- [server/src/config/models.json](file://server/src/config/models.json)
- [server/src/config/models-validator.ts](file://server/src/config/models-validator.ts)
- [server/src/models/index.ts](file://server/src/models/index.ts)
- [server/src/services/ffmpeg.processor.ts](file://server/src/services/ffmpeg.processor.ts)
- [my-uniapp-vue3/src/utils/config.ts](file://my-uniapp-vue3/src/utils/config.ts)
## 目录
1. [简介](#简介)
2. [项目结构](#项目结构)
3. [核心组件](#核心组件)
4. [架构总览](#架构总览)
5. [详细组件分析](#详细组件分析)
6. [依赖关系分析](#依赖关系分析)
7. [性能注意事项](#性能注意事项)
8. [故障排除指南](#故障排除指南)
9. [结论](#结论)
10. [附录](#附录)
## 简介
本指南面向新加入的开发者,帮助你在约30分钟内完成环境准备、项目克隆、依赖安装与启动,并理解关键配置项与常见问题的排查方法。项目采用前后端分离架构:后端基于 Node.js 18 + Koa 2.x,数据库使用 MongoDB(项目配置中也包含 Prisma MySQL 客户端),前端基于 uniapp + Vue 3 + TypeScript,支持 H5 与微信小程序。
## 项目结构
- 后端 server:包含模块化业务逻辑、中间件、配置与服务层,使用 Prisma 管理数据库连接。
- 前端 my-uniapp-vue3:基于 uniapp 的跨端应用,支持 H5 与微信小程序。
- 文档 docs:包含部署、故障排除等运维文档。
```mermaid
graph TB
subgraph "后端"
S_CFG["配置
server/src/config/index.ts"]
S_MOD["模型配置
server/src/config/models.json"]
S_DB["数据库连接
server/src/models/index.ts"]
S_FFMPEG["音频处理
server/src/services/ffmpeg.processor.ts"]
end
subgraph "前端"
F_CFG["API 地址配置
my-uniapp-vue3/src/utils/config.ts"]
end
F_CFG --> S_CFG
S_CFG --> S_DB
S_CFG --> S_FFMPEG
S_MOD --> S_CFG
```
**图表来源**
- [server/src/config/index.ts:69-117](file://server/src/config/index.ts#L69-L117)
- [server/src/config/models.json:1-186](file://server/src/config/models.json#L1-L186)
- [server/src/models/index.ts:1-15](file://server/src/models/index.ts#L1-L15)
- [server/src/services/ffmpeg.processor.ts:194-378](file://server/src/services/ffmpeg.processor.ts#L194-L378)
- [my-uniapp-vue3/src/utils/config.ts:1-80](file://my-uniapp-vue3/src/utils/config.ts#L1-L80)
**章节来源**
- [README.md:31-52](file://README.md#L31-L52)
## 核心组件
- 后端配置中心:集中管理端口、数据库、JWT、阿里云百炼 TTS、模型列表与默认值。
- 数据库连接:Prisma 客户端负责连接 MySQL(尽管配置中存在 MongoDB URI,但源码使用 Prisma 连接 MySQL)。
- 音频处理:基于 FFmpeg 的合并、格式转换、音量调整等能力。
- 前端 API 地址:根据运行平台自动选择开发/生产 API 地址。
**章节来源**
- [server/src/config/index.ts:69-117](file://server/src/config/index.ts#L69-L117)
- [server/src/models/index.ts:1-15](file://server/src/models/index.ts#L1-L15)
- [server/src/services/ffmpeg.processor.ts:194-378](file://server/src/services/ffmpeg.processor.ts#L194-L378)
- [my-uniapp-vue3/src/utils/config.ts:1-80](file://my-uniapp-vue3/src/utils/config.ts#L1-L80)
## 架构总览
后端通过 Koa 提供 REST API,前端通过 uniapp 在 H5/小程序环境下访问后端接口;音频生成与处理依赖 FFmpeg;配置与模型管理由后端集中维护。
```mermaid
graph TB
FE["前端应用
H5/小程序"] --> BE["后端服务
Koa + Prisma"]
BE --> DB["数据库
MySQL (Prisma)"]
BE --> TTS["TTS 服务
阿里云百炼/其他模型"]
BE --> FS["文件存储
本地/对象存储"]
BE --> FFMPEG["FFmpeg 处理"]
```
**图表来源**
- [server/src/config/index.ts:73-93](file://server/src/config/index.ts#L73-L93)
- [server/src/models/index.ts:1-15](file://server/src/models/index.ts#L1-L15)
- [server/src/services/ffmpeg.processor.ts:194-378](file://server/src/services/ffmpeg.processor.ts#L194-L378)
## 详细组件分析
### 后端启动流程
- 进入 server 目录,安装依赖后复制并编辑 .env,然后启动开发服务。
- 开发脚本使用 tsx watch 监听 TypeScript 源文件变化,自动重启服务。
```mermaid
sequenceDiagram
participant Dev as "开发者"
participant Shell as "终端"
participant NPM as "npm 脚本"
participant TSX as "tsx 监听"
participant Koa as "Koa 应用"
Dev->>Shell : 进入 server 目录
Shell->>NPM : npm install
Shell->>Shell : 复制 .env.example 为 .env
Shell->>NPM : npm run dev
NPM->>TSX : 启动监听
TSX->>Koa : 加载入口并启动
Koa-->>Dev : 服务就绪 (端口)
```
**图表来源**
- [README.md:62-75](file://README.md#L62-L75)
- [server/package.json:6-9](file://server/package.json#L6-L9)
**章节来源**
- [README.md:62-75](file://README.md#L62-L75)
- [server/package.json:6-9](file://server/package.json#L6-L9)
### 前端启动流程
- 进入 my-uniapp-vue3 目录,安装依赖后启动 H5 开发服务器。
- 支持多种小程序平台的开发与构建脚本。
```mermaid
sequenceDiagram
participant Dev as "开发者"
participant Shell as "终端"
participant Uni as "uni 命令"
participant Browser as "浏览器/H5"
Dev->>Shell : 进入 my-uniapp-vue3
Shell->>Shell : npm install
Shell->>Uni : npm run dev : h5
Uni-->>Browser : 启动 H5 开发服务器
```
**图表来源**
- [README.md:77-90](file://README.md#L77-L90)
- [my-uniapp-vue3/package.json:4-37](file://my-uniapp-vue3/package.json#L4-L37)
**章节来源**
- [README.md:77-90](file://README.md#L77-L90)
- [my-uniapp-vue3/package.json:4-37](file://my-uniapp-vue3/package.json#L4-L37)
### 环境变量与配置要点
- 服务端口与环境:PORT、NODE_ENV。
- 数据库连接:MONGODB_URI(配置中存在,但源码使用 Prisma 连接 MySQL)。
- JWT:JWT_SECRET、JWT_EXPIRES_IN。
- 阿里云百炼 TTS:DASHSCOPE_API_KEY、DASHSCOPE_MODEL、DASHSCOPE_VOICE、DASHSCOPE_TTS_MODELS、DASHSCOPE_USE_REALTIME、DASHSCOPE_REALTIME_MODEL。
- 模型配置:models.json 统一管理供应商、模型列表与默认值;可通过 models-validator.ts 进行批量可用性验证。
```mermaid
flowchart TD
Start(["读取 .env"]) --> Port["解析端口与环境"]
Port --> DB["数据库连接配置"]
DB --> JWT["JWT 密钥与过期时间"]
JWT --> TTS["阿里云百炼 TTS 参数"]
TTS --> Models["模型配置加载"]
Models --> Done(["应用启动"])
```
**图表来源**
- [server/src/config/index.ts:69-117](file://server/src/config/index.ts#L69-L117)
- [server/src/config/models.json:1-186](file://server/src/config/models.json#L1-L186)
**章节来源**
- [server/src/config/index.ts:69-117](file://server/src/config/index.ts#L69-L117)
- [server/src/config/models.json:1-186](file://server/src/config/models.json#L1-L186)
### FFmpeg 音频处理流程
- 下载远程音频至本地临时目录,生成合并列表,执行合并/格式转换/音量调整等操作,最后上传并清理临时文件。
```mermaid
flowchart TD
A["输入音频URL列表"] --> B["下载到本地临时目录"]
B --> C["生成合并列表文件"]
C --> D["执行合并/转换/调整"]
D --> E["上传输出文件"]
E --> F["清理临时文件"]
F --> G["返回处理结果"]
```
**图表来源**
- [server/src/services/ffmpeg.processor.ts:194-378](file://server/src/services/ffmpeg.processor.ts#L194-L378)
**章节来源**
- [server/src/services/ffmpeg.processor.ts:194-378](file://server/src/services/ffmpeg.processor.ts#L194-L378)
### 前端 API 地址选择逻辑
- 根据运行平台(H5/小程序/App)与环境变量自动选择 API 基础地址,开发环境默认使用反向代理路径,生产环境使用固定域名。
```mermaid
flowchart TD
P["检测运行平台"] --> Env{"是否生产环境?"}
Env --> |是| Prod["使用固定域名"]
Env --> |否| H5Check{"是否 H5 且在小程序模拟器?"}
H5Check --> |是| DevWeb["使用 Web 地址"]
H5Check --> |否| DevRel["使用相对路径 (反向代理)"]
Prod --> Out["返回 API 基础地址"]
DevWeb --> Out
DevRel --> Out
```
**图表来源**
- [my-uniapp-vue3/src/utils/config.ts:1-80](file://my-uniapp-vue3/src/utils/config.ts#L1-L80)
**章节来源**
- [my-uniapp-vue3/src/utils/config.ts:1-80](file://my-uniapp-vue3/src/utils/config.ts#L1-L80)
## 依赖关系分析
- 后端依赖:Koa、Prisma、LangChain、阿里云 OSS、Redis、FFmpeg(fluent-ffmpeg)、微信支付、Sentry 等。
- 前端依赖:uni-app、Vue 3、Pinia、marked、katex 等。
```mermaid
graph LR
S_Pkg["server/package.json"] --> Deps["后端依赖集合"]
F_Pkg["my-uniapp-vue3/package.json"] --> F_Deps["前端依赖集合"]
Deps --> S_FFMPEG["FFmpeg 相关"]
Deps --> S_PRISMA["Prisma/MySQL"]
Deps --> S_LANG["LangChain/OpenAI"]
Deps --> S_OSS["阿里云 OSS"]
Deps --> S_REDIS["Redis"]
Deps --> S_SENTRY["Sentry"]
```
**图表来源**
- [server/package.json:11-44](file://server/package.json#L11-L44)
- [my-uniapp-vue3/package.json:39-63](file://my-uniapp-vue3/package.json#L39-L63)
**章节来源**
- [server/package.json:11-44](file://server/package.json#L11-L44)
- [my-uniapp-vue3/package.json:39-63](file://my-uniapp-vue3/package.json#L39-L63)
## 性能注意事项
- 使用 Redis 缓存可提升响应速度(可选)。
- 合理设置上传文件大小限制与超时时间。
- 对于大量音频处理任务,建议使用队列与异步处理,避免阻塞主线程。
[本节为通用指导,无需列出具体文件来源]
## 故障排除指南
- MongoDB 连接失败:检查服务状态、认证凭据与日志;按需重置用户。
- FFmpeg 找不到:确认系统已安装并加入 PATH。
- 端口被占用:查找占用进程并释放,或修改 .env 中的 PORT。
- 跨域问题:在后端配置允许的源与凭证。
- 前端 App 白屏:marked 版本过高导致正则不兼容,需降级到旧版本。
- 平台判断错误:修复前端 config.ts 中平台名大小写不一致的问题。
- JSON 循环引用:避免对包含循环引用的对象直接序列化。
- CSS gap 兼容性:App 端不支持 gap,使用 margin 替代。
**章节来源**
- [DEPLOY.md:445-558](file://docs/DEPLOY.md#L445-L558)
- [app-troubleshooting.md:1-201](file://docs/app-troubleshooting.md#L1-L201)
## 结论
按照本指南完成环境准备与启动后,你将拥有可运行的后端服务与前端 H5 页面。后续可根据需要完善 .env 配置、接入真实 TTS 服务与对象存储,并结合文档进行部署与运维。
[本节为总结性内容,无需列出具体文件来源]
## 附录
### 环境要求与安装
- Node.js 18+
- MongoDB 6.0+(配置中存在 URI,但源码使用 Prisma 连接 MySQL)
- FFmpeg(用于音频处理)
**章节来源**
- [README.md:56-60](file://README.md#L56-L60)
- [DEPLOY.md:15-22](file://docs/DEPLOY.md#L15-L22)
### 项目克隆与启动步骤
- 克隆仓库后,分别进入 server 与 my-uniapp-vue3 目录安装依赖。
- 后端:复制 .env.example 为 .env,然后 npm run dev。
- 前端:npm install 后 npm run dev:h5。
**章节来源**
- [README.md:54-90](file://README.md#L54-L90)
### 关键环境变量说明
- 服务端口与环境:PORT、NODE_ENV。
- 数据库:MONGODB_URI(配置中存在,源码使用 Prisma 连接 MySQL)。
- JWT:JWT_SECRET、JWT_EXPIRES_IN。
- 阿里云百炼 TTS:DASHSCOPE_API_KEY、DASHSCOPE_MODEL、DASHSCOPE_VOICE、DASHSCOPE_TTS_MODELS、DASHSCOPE_USE_REALTIME、DASHSCOPE_REALTIME_MODEL。
- 应用 URL:APP_URL。
**章节来源**
- [server/src/config/index.ts:69-117](file://server/src/config/index.ts#L69-L117)
- [DEPLOY.md:118-143](file://docs/DEPLOY.md#L118-L143)
### 模型配置与验证
- models.json 统一管理供应商与模型列表,默认模型与音色。
- models-validator.ts 支持批量验证模型可用性并生成报告。
**章节来源**
- [server/src/config/models.json:1-186](file://server/src/config/models.json#L1-L186)
- [server/src/config/models-validator.ts:90-128](file://server/src/config/models-validator.ts#L90-L128)