开发计划-第二期.md 8.0 KB

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 推送到达率
个性化主题 深色/浅色主题切换 settings页面 - 主题切换流畅

页面规划

新增页面

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 - 播放记录表

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])
}

技术方案

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周)

  1. 全局搜索 (3天)

    • 搜索API
    • search页面开发
  2. 内容分类 (2天)

    • 分类管理
    • 分类筛选
  3. 音质选择 (1天)

    • 音质切换逻辑
    • CDN配置
  4. 离线缓存 (3天)

    • 下载管理
    • 离线播放

第三阶段(1周)

  1. 评论打分 (2天)
  2. 消息通知 (2天)
  3. 个性化主题 (1天)

测试要点

功能测试

  • 播放记录:续播位置准确性
  • 收藏:增删查操作正常
  • 定时:倒计时准确性
  • 分享:微信分享卡片正确
  • 搜索:搜索结果相关性
  • 离线:断网播放正常

性能测试

  • 首屏加载 < 2秒
  • 列表滑动流畅
  • 音频播放无卡顿

兼容性测试

  • iOS/Android微信环境
  • 不同网络环境(2G/3G/4G/WiFi)
  • 不同屏幕尺寸

里程碑

阶段 完成时间 交付内容
第一阶段完成 第2周末 核心体验功能上线
第二阶段完成 第4周末 丰富功能上线
第三阶段完成 第5周末 全部功能上线
测试验收 第6周 优化调优、发布