| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311 |
- {
- "project_name": "AI有声书生成工具-第二期",
- "base_config": {
- "backend_port": 8000,
- "frontend_port": 8080,
- "db_host": "localhost",
- "db_port": 3306
- },
- "features": [
- {
- "id": 1,
- "description": "播放记录功能 - 记录播放进度,支持续播",
- "priority": "P1",
- "phase": "第一阶段",
- "backend_test_steps": [
- "1. curl -X GET http://localhost:8000/api/player/progress - 验证获取播放进度接口返回 200",
- "2. curl -X POST http://localhost:8000/api/player/progress -d '{\"audioId\":\"test\",\"progress\":30}' - 验证保存进度接口返回 200",
- "3. curl -X GET http://localhost:8000/api/player/progress - 验证保存后能正确获取进度"
- ],
- "frontend_test_steps": [
- "1. 打开首页,播放一个音频",
- "2. 暂停播放,查看是否显示当前进度",
- "3. 退出页面后重新进入",
- "4. 验证是否显示'继续播放'按钮并正确续播到30秒位置"
- ],
- "status": "db-checking",
- "passes": false,
- "note": "等待MySQL服务启动,代码已编写完成"
- },
- {
- "id": 2,
- "description": "收藏功能 - 收藏喜欢的音频",
- "priority": "P1",
- "phase": "第一阶段",
- "backend_test_steps": [
- "1. curl -X GET http://localhost:8000/api/favorites - 验证获取收藏列表接口返回 200",
- "2. curl -X POST http://localhost:8000/api/favorites -d '{\"audioId\":\"test-audio-1\"}' - 验证添加收藏接口返回 200",
- "3. curl -X GET http://localhost:8000/api/favorites - 验证收藏列表包含新添加的音频",
- "4. curl -X DELETE http://localhost:8000/api/favorites/test-audio-1 - 验证取消收藏接口返回 200"
- ],
- "frontend_test_steps": [
- "1. 打开播放器页面播放音频",
- "2. 点击收藏按钮(心形图标)",
- "3. 验证按钮变为实心红色",
- "4. 进入收藏页面,验证已收藏的音频显示在列表中",
- "5. 点击取消收藏,验证列表中该音频消失"
- ],
- "status": "init",
- "passes": false
- },
- {
- "id": 3,
- "description": "定时关闭功能 - 睡眠定时、15/30/60分钟自动停止",
- "priority": "P1",
- "phase": "第一阶段",
- "backend_test_steps": [],
- "frontend_test_steps": [
- "1. 打开播放器页面开始播放",
- "2. 点击定时按钮打开定时设置",
- "3. 选择15分钟定时",
- "4. 验证显示倒计时(如14:59)",
- "5. 等待约1分钟后刷新页面",
- "6. 验证倒计时正确递减",
- "7. 等待定时结束,验证播放自动暂停"
- ],
- "status": "init",
- "passes": false
- },
- {
- "id": 4,
- "description": "播放速度记忆 - 0.5x-2x速听,记忆用户偏好",
- "priority": "P1",
- "phase": "第一阶段",
- "backend_test_steps": [
- "1. curl -X GET http://localhost:8000/api/user/preferences - 验证获取用户偏好接口返回 200",
- "2. curl -X PUT http://localhost:8000/api/user/preferences -d '{\"playSpeed\":1.5}' - 验证更新偏好接口返回 200",
- "3. curl -X GET http://localhost:8000/api/user/preferences - 验证playSpeed为1.5"
- ],
- "frontend_test_steps": [
- "1. 打开播放器页面",
- "2. 点击倍速按钮选择1.5x",
- "3. 验证播放速度变为1.5x",
- "4. 退出页面",
- "5. 重新进入播放器页面",
- "6. 验证倍速按钮显示1.5x且播放速度为1.5x"
- ],
- "status": "init",
- "passes": false
- },
- {
- "id": 5,
- "description": "分享功能 - 分享给微信好友/朋友圈",
- "priority": "P1",
- "phase": "第一阶段",
- "backend_test_steps": [
- "1. curl -X POST http://localhost:8000/api/share -d '{\"audioId\":\"test-audio-1\"}' - 验证生成分享链接接口返回 200"
- ],
- "frontend_test_steps": [
- "1. 打开播放器页面",
- "2. 点击分享按钮",
- "3. 验证弹出分享菜单(微信好友、朋友圈、复制链接)",
- "4. 选择'复制链接',验证剪贴板包含分享URL",
- "5. 点击微信好友,验证调用微信分享API"
- ],
- "status": "init",
- "passes": false
- },
- {
- "id": 6,
- "description": "加载优化 - 骨架屏、缓存优化",
- "priority": "P1",
- "phase": "贯穿全程",
- "backend_test_steps": [],
- "frontend_test_steps": [
- "1. 清除浏览器缓存",
- "2. 打开首页",
- "3. 验证显示骨架屏加载动画",
- "4. 验证内容加载后骨架屏消失",
- "5. 再次打开首页",
- "6. 验证第二次加载更快(使用缓存)"
- ],
- "status": "init",
- "passes": false
- },
- {
- "id": 7,
- "description": "全局搜索 - 搜索有声书标题、历史记录",
- "priority": "P1",
- "phase": "第二阶段",
- "backend_test_steps": [
- "1. curl -X GET 'http://localhost:8000/api/search?q=test' - 验证搜索接口返回 200",
- "2. curl -X GET 'http://localhost:8000/api/search?q=' - 验证空关键词返回历史记录",
- "3. curl -X GET 'http://localhost:8000/api/search?q=小说' - 验证中文搜索正常"
- ],
- "frontend_test_steps": [
- "1. 点击顶部搜索图标进入搜索页面",
- "2. 验证显示搜索历史和热门推荐",
- "3. 输入关键词'test'",
- "4. 点击搜索按钮",
- "5. 验证搜索结果列表显示匹配的内容",
- "6. 点击搜索结果",
- "7. 验证跳转到播放器页面"
- ],
- "status": "init",
- "passes": false
- },
- {
- "id": 8,
- "description": "内容分类 - 按类型筛选(故事/小说/新闻/学习)",
- "priority": "P2",
- "phase": "第二阶段",
- "backend_test_steps": [
- "1. curl -X GET http://localhost:8000/api/categories - 验证获取分类列表接口返回 200",
- "2. curl -X GET http://localhost:8000/api/categories/1 - 验证获取分类下音频接口返回 200"
- ],
- "frontend_test_steps": [
- "1. 在首页点击分类标签(如'小说')",
- "2. 验证内容列表刷新为该分类的内容",
- "3. 切换到其他分类(如'学习')",
- "4. 验证内容列表正确切换",
- "5. 点击'全部'标签",
- "6. 验证显示全部内容"
- ],
- "status": "init",
- "passes": false
- },
- {
- "id": 9,
- "description": "音质选择 - 高/标准音质切换",
- "priority": "P2",
- "phase": "第二阶段",
- "backend_test_steps": [
- "1. curl -X PUT http://localhost:8000/api/user/preferences -d '{\"quality\":\"high\"}' - 验证更新音质偏好返回 200",
- "2. curl -X GET http://localhost:8000/api/user/preferences - 验证quality为high"
- ],
- "frontend_test_steps": [
- "1. 打开播放器页面",
- "2. 打开音质设置",
- "3. 切换到高清音质",
- "4. 验证显示'高清'标识",
- "5. 退出页面重新进入",
- "6. 验证音质偏好保持为高清"
- ],
- "status": "init",
- "passes": false
- },
- {
- "id": 10,
- "description": "离线缓存 - 下载到本地离线听",
- "priority": "P2",
- "phase": "第二阶段",
- "backend_test_steps": [
- "1. curl -X GET http://localhost:8000/api/downloads - 验证获取下载列表接口返回 200"
- ],
- "frontend_test_steps": [
- "1. 在播放器页面点击下载按钮",
- "2. 验证显示下载进度",
- "3. 等待下载完成",
- "4. 进入'我的下载'页面",
- "5. 验证已下载的音频显示在列表中",
- "6. 开启飞行模式",
- "7. 点击离线音频播放",
- "8. 验证离线播放正常"
- ],
- "status": "init",
- "passes": false
- },
- {
- "id": 11,
- "description": "断点续传 - 大文件下载断点续传",
- "priority": "P2",
- "phase": "贯穿全程",
- "backend_test_steps": [
- "1. curl -X POST http://localhost:8000/api/downloads/check -d '{\"audioId\":\"test\",\"downloaded\":1024000}' - 验证断点查询返回正确信息"
- ],
- "frontend_test_steps": [
- "1. 开始下载一个大音频文件",
- "2. 在下载过程中关闭页面中断下载",
- "3. 重新进入下载页面",
- "4. 验证显示'继续下载'按钮",
- "5. 点击继续下载",
- "6. 验证从断点处继续下载"
- ],
- "status": "init",
- "passes": false
- },
- {
- "id": 12,
- "description": "多端数据同步 - 多端数据实时同步",
- "priority": "P2",
- "phase": "贯穿全程",
- "backend_test_steps": [
- "1. curl -X POST http://localhost:8000/api/favorites -d '{\"audioId\":\"sync-test\"}' - 添加收藏",
- "2. curl -X GET http://localhost:8000/api/favorites - 验证收藏添加成功",
- "3. curl -X PUT http://localhost:8000/api/player/progress -d '{\"audioId\":\"sync-test\",\"progress\":50}' - 更新播放进度"
- ],
- "frontend_test_steps": [
- "1. 在H5端收藏一个音频",
- "2. 在小程序端打开收藏页面",
- "3. 验证收藏列表包含刚添加的音频",
- "4. 在H5端播放并暂停在1分钟位置",
- "5. 在小程序端打开同一音频",
- "6. 验证显示从1分钟位置继续播放"
- ],
- "status": "init",
- "passes": false
- },
- {
- "id": 13,
- "description": "评论打分 - 对内容评论评分",
- "priority": "P2",
- "phase": "第三阶段",
- "backend_test_steps": [
- "1. curl -X GET http://localhost:8000/api/comments/test-audio-1 - 验证获取评论列表接口返回 200",
- "2. curl -X POST http://localhost:8000/api/comments -d '{\"audioId\":\"test-audio-1\",\"content\":\"很好听\",\"rating\":5}' - 验证发表评论接口返回 200",
- "3. curl -X GET http://localhost:8000/api/comments/test-audio-1 - 验证评论已添加"
- ],
- "frontend_test_steps": [
- "1. 打开播放器页面",
- "2. 点击评论按钮",
- "3. 输入评论内容'非常棒的声音'",
- "4. 选择5星评分",
- "5. 点击提交",
- "6. 验证评论显示在评论区",
- "7. 验证评分为5星"
- ],
- "status": "init",
- "passes": false
- },
- {
- "id": 14,
- "description": "消息通知 - 新内容推送、会员优惠",
- "priority": "P3",
- "phase": "第三阶段",
- "backend_test_steps": [
- "1. curl -X GET http://localhost:8000/api/notifications - 验证获取消息列表接口返回 200"
- ],
- "frontend_test_steps": [
- "1. 进入设置页面",
- "2. 找到消息通知开关",
- "3. 开启消息通知",
- "4. 验证弹出通知权限申请",
- "5. 授权后收到推送消息",
- "6. 点击消息通知",
- "7. 验证跳转到对应页面"
- ],
- "status": "init",
- "passes": false
- },
- {
- "id": 15,
- "description": "个性化主题 - 深色/浅色主题切换",
- "priority": "P3",
- "phase": "第三阶段",
- "backend_test_steps": [
- "1. curl -X PUT http://localhost:8000/api/user/preferences -d '{\"theme\":\"dark\"}' - 验证更新主题偏好返回 200",
- "2. curl -X GET http://localhost:8000/api/user/preferences - 验证theme为dark"
- ],
- "frontend_test_steps": [
- "1. 进入设置页面",
- "2. 点击主题设置",
- "3. 选择深色主题",
- "4. 验证页面切换为深色模式",
- "5. 退出页面重新进入",
- "6. 验证主题保持为深色"
- ],
- "status": "init",
- "passes": false
- }
- ]
- }
|