基于MVP阶段的文本转语音核心功能,第二期聚焦体验增强,提升用户粘性和付费转化。
| 功能 | 描述 | 前端 | 后端 | 测试重点 |
|---|---|---|---|---|
| 播放记录 | 记录播放进度,支持续播 | player页面 | API | 续播准确性 |
| 收藏功能 | 收藏喜欢的音频 | favorites页面 | API | 收藏列表CRUD |
| 定时关闭 | 睡眠定时、15/30/60分钟自动停止 | player页面 | - | 定时器准确性 |
| 播放速度记忆 | 0.5x-2x速听,记忆用户偏好 | player页面 | API | 偏好持久化 |
| 分享功能 | 分享给微信好友/朋友圈 | player页面 | API | 分享卡片生成 |
| 加载优化 | 骨架屏、缓存优化 | 全局 | - | 首屏加载速度 |
| 功能 | 描述 | 前端 | 后端 | 测试重点 |
|---|---|---|---|---|
| 全局搜索 | 搜索有声书标题、历史记录 | search页面 | API | 搜索相关性 |
| 内容分类 | 按类型筛选(故事/小说/新闻/学习) | index页面 | API | 分类准确性 |
| 音质选择 | 高/标准音质切换 | player页面 | API | 音质切换生效 |
| 离线缓存 | 下载到本地离线听 | favorites页面 | API | 离线播放 |
| 断点续传 | 大文件下载断点续传 | 全局 | API | 续传完整性 |
| 数据同步 | 多端数据实时同步 | 全局 | API | 同步一致性 |
| 功能 | 描述 | 前端 | 后端 | 测试重点 |
|---|---|---|---|---|
| 评论打分 | 对内容评论评分 | player页面 | API | 评论展示 |
| 消息通知 | 新内容推送、会员优惠 | 全局 | API | 推送到达率 |
| 个性化主题 | 深色/浅色主题切换 | settings页面 | - | 主题切换流畅 |
pages/
├── search/ # 搜索页面
│ └── index.vue - 搜索框、搜索历史、热门推荐、搜索结果列表
├── favorites/ # 收藏页面
│ └── index.vue - 收藏列表、离线缓存管理
└── settings/ # 设置页面
└── index.vue - 主题设置、通知设置、清理缓存、关于我们
pages/
├── index/ # 首页
│ └── index.vue - 增加分类标签、推荐内容
├── player/ # 播放器
│ └── index.vue - 增加定时关闭、音质选择、分享、收藏按钮
├── history/ # 历史记录
│ └── index.vue - 增加搜索入口、收藏入口、分类筛选
└── mine/ # 个人中心
└── index.vue - 增加设置入口、收藏入口
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 - 播放记录表
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 - 收藏表
model Favorite {
id String @id @default(uuid())
userId String
audioId String
createdAt DateTime @default(now())
@@unique([userId, audioId])
@@index([userId])
}
categories - 分类表
model Category {
id String @id @default(uuid())
name String
icon String
sort Int
createdAt DateTime @default(now())
}
comments - 评论表
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 - 用户偏好表
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 - 增加分类字段
model Audio {
// ... 现有字段
categoryId String?
category Category? @relation(fields: [categoryId], references: [id])
}
前端:
后端:
前端:
后端:
前端:
前端:
后端:
前端:
后端:
前端:
缓存策略:
播放记录 + 续播 (3天)
收藏功能 (2天)
定时关闭 (1天)
播放速度记忆 (1天)
分享功能 (2天)
加载优化 (2天)
全局搜索 (3天)
内容分类 (2天)
音质选择 (1天)
离线缓存 (3天)
| 阶段 | 完成时间 | 交付内容 |
|---|---|---|
| 第一阶段完成 | 第2周末 | 核心体验功能上线 |
| 第二阶段完成 | 第4周末 | 丰富功能上线 |
| 第三阶段完成 | 第5周末 | 全部功能上线 |
| 测试验收 | 第6周 | 优化调优、发布 |