# AI有声书生成工具 - 第二期开发计划 ## 产品定位 基于MVP阶段的文本转语音核心功能,第二期聚焦**体验增强**,提升用户粘性和付费转化。 ## 功能优先级 ### P1 - 核心体验(第一阶段) | 功能 | 描述 | 前端 | 后端 | 测试重点 | |------|------|------|------|----------| | 播放记录 | 记录播放进度,支持续播 | player页面 | API | 续播准确性 | | 收藏功能 | 收藏喜欢的音频 | favorites页面 | API | 收藏列表CRUD | | 定时关闭 | 睡眠定时、15/30/60分钟自动停止 | player页面 | - | 定时器准确性 | | 播放速度记忆 | 0.5x-2x速听,记忆用户偏好 | player页面 | API | 偏好持久化 | | 分享功能 | 分享给微信好友/朋友圈 | player页面 | API | 分享卡片生成 | | 加载优化 | 骨架屏、缓存优化 | 全局 | - | 首屏加载速度 | ### P2 - 丰富功能(第二阶段) | 功能 | 描述 | 前端 | 后端 | 测试重点 | |------|------|------|------|----------| | 全局搜索 | 搜索有声书标题、历史记录 | search页面 | API | 搜索相关性 | | 内容分类 | 按类型筛选(故事/小说/新闻/学习) | index页面 | API | 分类准确性 | | 音质选择 | 高/标准音质切换 | player页面 | API | 音质切换生效 | | 离线缓存 | 下载到本地离线听 | favorites页面 | API | 离线播放 | | 断点续传 | 大文件下载断点续传 | 全局 | API | 续传完整性 | | 数据同步 | 多端数据实时同步 | 全局 | API | 同步一致性 | ### P3 - 完善优化(第三阶段) | 功能 | 描述 | 前端 | 后端 | 测试重点 | |------|------|------|------|----------| | 评论打分 | 对内容评论评分 | player页面 | API | 评论展示 | | 消息通知 | 新内容推送、会员优惠 | 全局 | API | 推送到达率 | --- ## 页面规划 ### 新增页面 ``` pages/ ├── search/ # 搜索页面 │ └── index.vue - 搜索框、搜索历史、热门推荐、搜索结果列表 ├── favorites/ # 收藏页面 │ └── index.vue - 收藏列表、离线缓存管理 └── settings/ # 设置页面 └── index.vue - 通知设置、清理缓存、关于我们 ``` ### 修改页面 ``` pages/ ├── index/ # 首页 │ └── index.vue - 增加分类标签、推荐内容 ├── player/ # 播放器 │ └── index.vue - 增加定时关闭、音质选择、分享、收藏按钮 ├── history/ # 历史记录 │ └── index.vue - 增加搜索入口、收藏入口、分类筛选 └── mine/ # 个人中心 └── index.vue - 增加设置入口、收藏入口 ``` --- ## API设计 ### 播放记录 ``` GET /api/player/progress - 获取播放进度 POST /api/player/progress - 保存播放进度 DELETE /api/player/progress/:id - 删除播放记录 ``` ### 收藏 ``` GET /api/favorites - 获取收藏列表 POST /api/favorites - 添加收藏 DELETE /api/favorites/:id - 取消收藏 ``` ### 搜索 ``` GET /api/search?q=关键词 - 搜索音频 GET /api/categories - 获取分类列表 GET /api/categories/:id - 获取分类下的音频 ``` ### 离线缓存 ``` GET /api/downloads - 获取下载列表 POST /api/downloads/check - 检查下载状态 ``` ### 评论 ``` GET /api/comments/:audioId - 获取评论列表 POST /api/comments - 发表评论 ``` ### 用户偏好 ``` GET /api/user/preferences - 获取用户偏好 PUT /api/user/preferences - 更新用户偏好 ``` --- ## 数据库变更 ### 新增表 **play_records** - 播放记录表 ```prisma model PlayRecord { id String @id @default(uuid()) userId String audioId String progress Float // 播放进度(秒) duration Float // 总时长 updatedAt DateTime @updatedAt createdAt DateTime @default(now()) @@index([userId]) } ``` **favorites** - 收藏表 ```prisma model Favorite { id String @id @default(uuid()) userId String audioId String createdAt DateTime @default(now()) @@unique([userId, audioId]) @@index([userId]) } ``` **categories** - 分类表 ```prisma model Category { id String @id @default(uuid()) name String icon String sort Int createdAt DateTime @default(now()) } ``` **comments** - 评论表 ```prisma model Comment { id String @id @default(uuid()) userId String audioId String content String rating Int // 1-5星 createdAt DateTime @default(now()) @@index([audioId]) } ``` **user_preferences** - 用户偏好表 ```prisma model UserPreference { id String @id @default(uuid()) userId String @unique playSpeed Float @default(1.0) quality String @default("standard") // standard, high theme String @default("light") updatedAt DateTime @updatedAt } ``` ### 修改表 **audios** - 增加分类字段 ```prisma model Audio { // ... 现有字段 categoryId String? category Category? @relation(fields: [categoryId], references: [id]) } ``` --- ## 技术方案 ### 1. 播放记录与续播 **前端**: - 使用Pinia管理播放状态 - 播放进度每5秒自动保存 - 退出页面时保存最新进度 **后端**: - 记录播放进度到play_records表 - 续播时返回保存的progress值 ### 2. 收藏功能 **前端**: - 播放器页面添加收藏按钮 - favorites页面管理收藏列表 **后端**: - favorites表存储收藏关系 - 支持批量操作 ### 3. 定时关闭 **前端**: - 使用setTimeout实现倒计时 - 倒计时结束自动暂停播放 - 页面关闭时保存剩余时间 ### 4. 分享功能 **前端**: - 使用微信JSSDK分享接口 - 生成分享卡片(标题+封面+简介) **后端**: - 生成带参数的分享链接 - 记录分享来源 ### 5. 离线缓存 **前端**: - 使用uni.downloadFile下载音频 - 存储到本地文件系统 - 管理离线列表 **后端**: - 支持CDN域名切换 - 提供音频文件大小信息 ### 6. 加载优化 **前端**: - 骨架屏组件 - 图片懒加载 - 列表虚拟滚动 **缓存策略**: - 接口数据缓存(localStorage) - 音频封面缓存 - 离线音频管理 --- ## 开发顺序 ### 第一阶段(2周) 1. **播放记录 + 续播** (3天) - 数据库表设计 - API开发 - 前端播放器集成 2. **收藏功能** (2天) - 数据库表设计 - API开发 - favorites页面开发 3. **定时关闭** (1天) - 前端定时器实现 4. **播放速度记忆** (1天) - 用户偏好API - 速度记忆实现 5. **分享功能** (2天) - 微信JSSDK集成 - 分享卡片生成 6. **加载优化** (2天) - 骨架屏组件 - 缓存优化 ### 第二阶段(2周) 7. **全局搜索** (3天) - 搜索API - search页面开发 8. **内容分类** (2天) - 分类管理 - 分类筛选 9. **音质选择** (1天) - 音质切换逻辑 - CDN配置 10. **离线缓存** (3天) - 下载管理 - 离线播放 ### 第三阶段(1周) 11. **评论打分** (2天) 12. **消息通知** (2天) --- ## 测试要点 ### 功能测试 - [ ] 播放记录:续播位置准确性 - [ ] 收藏:增删查操作正常 - [ ] 定时:倒计时准确性 - [ ] 分享:微信分享卡片正确 - [ ] 搜索:搜索结果相关性 - [ ] 离线:断网播放正常 ### 性能测试 - [ ] 首屏加载 < 2秒 - [ ] 列表滑动流畅 - [ ] 音频播放无卡顿 ### 兼容性测试 - [ ] iOS/Android微信环境 - [ ] 不同网络环境(2G/3G/4G/WiFi) - [ ] 不同屏幕尺寸 --- ## 里程碑 | 阶段 | 完成时间 | 交付内容 | |------|----------|----------| | 第一阶段完成 | 第2周末 | 核心体验功能上线 | | 第二阶段完成 | 第4周末 | 丰富功能上线 | | 第三阶段完成 | 第5周末 | 全部功能上线 | | 测试验收 | 第6周 | 优化调优、发布 |