feature_list.json 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436
  1. {
  2. "project_name": "AI有声书生成工具 - 第二期",
  3. "base_config": {
  4. "backend_port": 3000,
  5. "frontend_port": 5173,
  6. "db_host": "localhost",
  7. "db_port": 3306,
  8. "auth_enabled": false
  9. },
  10. "features": [
  11. {
  12. "id": 1,
  13. "description": "播放记录 - 数据库表设计",
  14. "status": "done",
  15. "passes": true,
  16. "backend_test_steps": [
  17. "1. curl -X POST http://localhost:3000/api/player/progress -H 'Content-Type: application/json' -d '{\"userId\":\"test-user\",\"audioId\":\"audio-001\",\"progress\":30.5,\"duration\":180}' - 验证创建播放记录",
  18. "2. curl http://localhost:3000/api/player/progress?userId=test-user - 验证查询播放记录列表",
  19. "3. curl -X PUT http://localhost:3000/api/player/progress/audio-001 -H 'Content-Type: application/json' -d '{\"progress\":60.0}' - 验证更新播放进度",
  20. "4. curl -X DELETE http://localhost:3000/api/player/progress/audio-001 - 验证删除播放记录"
  21. ],
  22. "frontend_test_steps": [
  23. "1. 打开播放器页面",
  24. "2. 点击播放音频",
  25. "3. 等待5秒后查看播放进度是否自动保存",
  26. "4. 刷新页面验证续播位置是否正确"
  27. ]
  28. },
  29. {
  30. "id": 2,
  31. "description": "播放记录 - 前端播放器集成",
  32. "backend_test_steps": [
  33. "1. curl http://localhost:3000/api/player/progress?userId=test-user - 验证获取播放进度接口正常"
  34. ],
  35. "frontend_test_steps": [
  36. "1. 打开player页面",
  37. "2. 选择一个有播放进度的音频",
  38. "3. 验证是否从上次进度位置开始播放",
  39. "4. 验证播放进度每5秒自动保存"
  40. ],
  41. "status": "done",
  42. "passes": true
  43. },
  44. {
  45. "id": 3,
  46. "description": "收藏功能 - 数据库表设计",
  47. "backend_test_steps": [
  48. "1. curl -X POST http://localhost:3000/api/favorites -H 'Content-Type: application/json' -d '{\"userId\":\"test-user\",\"audioId\":\"audio-002\"}' - 验证添加收藏",
  49. "2. curl http://localhost:3000/api/favorites?userId=test-user - 验证查询收藏列表",
  50. "3. curl -X DELETE http://localhost:3000/api/favorites/audio-002 - 验证取消收藏",
  51. "4. curl -X POST http://localhost:3000/api/favorites -H 'Content-Type: application/json' -d '{\"userId\":\"test-user\",\"audioId\":\"audio-003\"}' - 重新添加收藏用于后续测试"
  52. ],
  53. "frontend_test_steps": [
  54. "1. 打开player页面",
  55. "2. 点击收藏按钮",
  56. "3. 验证收藏状态变为已收藏",
  57. "4. 进入favorites页面",
  58. "5. 验证收藏的音频显示在列表中",
  59. "6. 点击取消收藏按钮",
  60. "7. 验证列表中该音频已移除"
  61. ],
  62. "status": "done",
  63. "passes": true
  64. },
  65. {
  66. "id": 4,
  67. "description": "收藏功能 - favorites页面开发",
  68. "backend_test_steps": [
  69. "1. curl http://localhost:3000/api/favorites?userId=test-user - 验证收藏列表查询"
  70. ],
  71. "frontend_test_steps": [
  72. "1. 进入favorites收藏页面",
  73. "2. 验证页面正常加载,显示收藏列表",
  74. "3. 点击某个音频进入播放器",
  75. "4. 返回favorites页面验证列表刷新正常"
  76. ],
  77. "status": "done",
  78. "passes": true
  79. },
  80. {
  81. "id": 5,
  82. "description": "定时关闭 - 前端定时器实现",
  83. "backend_test_steps": [],
  84. "frontend_test_steps": [
  85. "1. 打开player页面并开始播放",
  86. "2. 点击定时关闭按钮",
  87. "3. 选择15分钟定时",
  88. "4. 验证倒计时显示正确",
  89. "5. 等待或快进到定时时间",
  90. "6. 验证播放自动暂停"
  91. ],
  92. "status": "done",
  93. "passes": true
  94. },
  95. {
  96. "id": 6,
  97. "description": "播放速度记忆 - 用户偏好API",
  98. "backend_test_steps": [
  99. "1. curl -X POST http://localhost:3000/api/user/preferences -H 'Content-Type: application/json' -d '{\"userId\":\"test-user\",\"playSpeed\":1.5}' - 验证创建用户偏好",
  100. "2. curl http://localhost:3000/api/user/preferences?userId=test-user - 验证查询用户偏好",
  101. "3. curl -X PUT http://localhost:3000/api/user/preferences -H 'Content-Type: application/json' -d '{\"userId\":\"test-user\",\"playSpeed\":2.0}' - 验证更新播放速度",
  102. "4. curl -X PUT http://localhost:3000/api/user/preferences -H 'Content-Type: application/json' -d '{\"userId\":\"test-user\",\"playSpeed\":1.0}' - 恢复默认速度"
  103. ],
  104. "frontend_test_steps": [
  105. "1. 打开player页面",
  106. "2. 调整播放速度为1.5x",
  107. "3. 刷新页面",
  108. "4. 验证播放速度仍为1.5x"
  109. ],
  110. "status": "done",
  111. "passes": true
  112. },
  113. {
  114. "id": 7,
  115. "description": "分享功能 - 微信JSSDK集成",
  116. "backend_test_steps": [
  117. "1. curl http://localhost:3000/api/share?audioId=audio-001 - 验证生成分享链接接口"
  118. ],
  119. "frontend_test_steps": [
  120. "1. 打开player页面",
  121. "2. 点击分享按钮",
  122. "3. 验证分享面板正常弹出",
  123. "4. 验证分享卡片显示标题、封面、简介"
  124. ],
  125. "status": "done",
  126. "passes": true
  127. },
  128. {
  129. "id": 8,
  130. "description": "分享功能 - 分享卡片生成",
  131. "backend_test_steps": [
  132. "1. curl http://localhost:3000/api/share?audioId=7 - 验证分享信息接口返回正确数据"
  133. ],
  134. "frontend_test_steps": [
  135. "1. 打开player页面",
  136. "2. 点击分享到微信好友",
  137. "3. 验证分享内容包含音频标题",
  138. "4. 点击分享到朋友圈",
  139. "5. 验证朋友圈分享内容正确"
  140. ],
  141. "status": "done",
  142. "passes": true
  143. },
  144. {
  145. "id": 9,
  146. "description": "加载优化 - 骨架屏组件",
  147. "backend_test_steps": [],
  148. "frontend_test_steps": [
  149. "1. 刷新首页",
  150. "2. 验证骨架屏正常显示",
  151. "3. 验证数据加载完成后骨架屏消失",
  152. "4. 验证内容正常渲染"
  153. ],
  154. "status": "done",
  155. "passes": true
  156. },
  157. {
  158. "id": 10,
  159. "description": "加载优化 - 图片懒加载",
  160. "backend_test_steps": [],
  161. "frontend_test_steps": [
  162. "1. 进入包含多张图片的列表页面",
  163. "2. 验证首屏图片正常加载",
  164. "3. 滚动页面",
  165. "4. 验证下方图片进入可视区时加载",
  166. "5. 滚动回顶部",
  167. "6. 验证图片已缓存不会重复加载"
  168. ],
  169. "status": "done",
  170. "passes": true
  171. },
  172. {
  173. "id": 11,
  174. "description": "全局搜索 - 搜索API",
  175. "backend_test_steps": [
  176. "1. curl http://localhost:3000/api/search?q=你好 - 验证搜索接口"
  177. ],
  178. "frontend_test_steps": [
  179. "1. 进入首页点击搜索图标",
  180. "2. 输入搜索关键词",
  181. "3. 验证搜索结果列表正常显示"
  182. ],
  183. "status": "done",
  184. "passes": true
  185. },
  186. {
  187. "id": 12,
  188. "description": "全局搜索 - search页面",
  189. "backend_test_steps": [],
  190. "frontend_test_steps": [
  191. "1. 进入搜索页面",
  192. "2. 验证搜索功能正常"
  193. ],
  194. "status": "done",
  195. "passes": true
  196. },
  197. {
  198. "id": 13,
  199. "description": "内容分类 - 分类管理API",
  200. "backend_test_steps": [
  201. "1. curl http://localhost:3000/api/categories - 验证获取分类列表"
  202. ],
  203. "frontend_test_steps": [
  204. "1. 进入首页",
  205. "2. 验证分类标签显示正确"
  206. ],
  207. "status": "done",
  208. "passes": true
  209. },
  210. {
  211. "id": 14,
  212. "description": "内容分类 - 分类筛选",
  213. "backend_test_steps": [
  214. "1. curl http://localhost:3000/api/categories/1 - 验证获取分类下音频"
  215. ],
  216. "frontend_test_steps": [
  217. "1. 在首页切换不同分类标签",
  218. "2. 验证列表内容随分类变化"
  219. ],
  220. "status": "done",
  221. "passes": true
  222. },
  223. {
  224. "id": 15,
  225. "description": "音质选择 - 音质切换逻辑",
  226. "backend_test_steps": [],
  227. "frontend_test_steps": [
  228. "1. 打开player页面",
  229. "2. 点击音质选择按钮",
  230. "3. 切换到高品质",
  231. "4. 验证音质切换生效"
  232. ],
  233. "status": "done",
  234. "passes": true
  235. },
  236. {
  237. "id": 16,
  238. "description": "离线缓存 - 下载管理",
  239. "backend_test_steps": [],
  240. "frontend_test_steps": [
  241. "1. 打开player页面",
  242. "2. 点击下载按钮",
  243. "3. 验证下载功能工作"
  244. ],
  245. "status": "done",
  246. "passes": true
  247. },
  248. {
  249. "id": 17,
  250. "description": "离线缓存 - 离线播放",
  251. "backend_test_steps": [],
  252. "frontend_test_steps": [
  253. "1. 下载音频后",
  254. "2. 验证离线播放功能"
  255. ],
  256. "status": "done",
  257. "passes": true
  258. },
  259. {
  260. "id": 18,
  261. "description": "评论打分 - 评论API",
  262. "backend_test_steps": [
  263. "1. curl -X POST http://localhost:3000/api/comments - 验证发表评论"
  264. ],
  265. "frontend_test_steps": [
  266. "1. 打开player页面",
  267. "2. 验证评论功能"
  268. ],
  269. "status": "done",
  270. "passes": true
  271. },
  272. {
  273. "id": 19,
  274. "description": "消息通知 - 通知API",
  275. "backend_test_steps": [
  276. "1. curl http://localhost:3000/api/notifications - 验证获取通知列表"
  277. ],
  278. "frontend_test_steps": [
  279. "1. 验证通知图标显示",
  280. "2. 验证通知列表正常显示"
  281. ],
  282. "status": "done",
  283. "passes": true
  284. }
  285. {
  286. "id": 11,
  287. "description": "全局搜索 - 搜索API",
  288. "backend_test_steps": [
  289. "1. curl http://localhost:3000/api/search?q=test - 验证搜索接口",
  290. "2. curl http://localhost:3000/api/search?q=故事 - 验证中文搜索",
  291. "3. curl http://localhost:3000/api/search?q= - 验证空关键词处理"
  292. ],
  293. "frontend_test_steps": [
  294. "1. 进入search搜索页面",
  295. "2. 输入搜索关键词",
  296. "3. 验证搜索结果列表正常显示",
  297. "4. 验证搜索结果相关性"
  298. ],
  299. "status": "done",
  300. "passes": true
  301. },
  302. {
  303. "id": 12,
  304. "description": "全局搜索 - search页面开发",
  305. "backend_test_steps": [
  306. "1. curl http://localhost:3000/api/search?q=小说 - 验证搜索结果正确返回"
  307. ],
  308. "frontend_test_steps": [
  309. "1. 进入search搜索页面",
  310. "2. 验证搜索历史记录显示",
  311. "3. 验证热门推荐显示",
  312. "4. 输入关键词进行搜索",
  313. "5. 点击搜索结果进入player页面"
  314. ],
  315. "status": "done",
  316. "passes": true
  317. },
  318. {
  319. "id": 13,
  320. "description": "内容分类 - 分类管理API",
  321. "backend_test_steps": [
  322. "1. curl http://localhost:3000/api/categories - 验证获取分类列表",
  323. "2. curl http://localhost:3000/api/categories/1 - 验证获取分类下音频",
  324. "3. curl http://localhost:3000/api/categories/999 - 验证无效分类ID处理"
  325. ],
  326. "frontend_test_steps": [
  327. "1. 进入index首页",
  328. "2. 验证分类标签显示正确",
  329. "3. 点击某个分类",
  330. "4. 验证只显示该分类下的音频"
  331. ],
  332. "status": "done",
  333. "passes": true
  334. },
  335. {
  336. "id": 14,
  337. "description": "内容分类 - 分类筛选",
  338. "backend_test_steps": [
  339. "1. curl http://localhost:3000/api/categories/2 - 验证分类2音频列表"
  340. ],
  341. "frontend_test_steps": [
  342. "1. 在index页面切换不同分类标签",
  343. "2. 验证列表内容随分类变化",
  344. "3. 验证分类筛选准确性"
  345. ],
  346. "status": "done",
  347. "passes": true
  348. },
  349. {
  350. "id": 15,
  351. "description": "音质选择 - 音质切换逻辑",
  352. "backend_test_steps": [
  353. "1. curl -X PUT http://localhost:3000/api/user/preferences -H 'Content-Type: application/json' -d '{\"userId\":\"test-user\",\"quality\":\"high\"}' - 验证设置高品质",
  354. "2. curl http://localhost:3000/api/user/preferences?userId=test-user - 验证获取偏好确认"
  355. ],
  356. "frontend_test_steps": [
  357. "1. 打开player页面",
  358. "2. 点击音质选择按钮",
  359. "3. 切换到高音质",
  360. "4. 验证音质切换生效",
  361. "5. 刷新页面验证音质设置已保存"
  362. ],
  363. "status": "done",
  364. "passes": true
  365. },
  366. {
  367. "id": 16,
  368. "description": "离线缓存 - 下载管理",
  369. "backend_test_steps": [
  370. "1. curl http://localhost:3000/api/downloads - 验证获取下载列表",
  371. "2. curl http://localhost:3000/api/downloads/check - 验证检查下载状态"
  372. ],
  373. "frontend_test_steps": [
  374. "1. 进入favorites页面",
  375. "2. 选择一个音频点击下载",
  376. "3. 验证下载进度显示",
  377. "4. 验证下载完成后状态更新"
  378. ],
  379. "status": "done",
  380. "passes": true
  381. },
  382. {
  383. "id": 17,
  384. "description": "离线缓存 - 离线播放",
  385. "backend_test_steps": [
  386. "1. curl http://localhost:3000/api/downloads - 验证下载列表接口"
  387. ],
  388. "frontend_test_steps": [
  389. "1. 进入favorites页面",
  390. "2. 验证已下载音频显示下载状态",
  391. "3. 关闭网络连接",
  392. "4. 点击已下载音频进行播放",
  393. "5. 验证离线播放正常"
  394. ],
  395. "status": "done",
  396. "passes": true
  397. },
  398. {
  399. "id": 18,
  400. "description": "评论打分 - 评论API",
  401. "backend_test_steps": [
  402. "1. curl -X POST http://localhost:3000/api/comments -H 'Content-Type: application/json' -d '{\"userId\":\"test-user\",\"audioId\":\"audio-004\",\"content\":\"很好听\",\"rating\":5}' - 验证发表评论",
  403. "2. curl http://localhost:3000/api/comments/audio-004 - 验证获取评论列表",
  404. "3. curl -X POST http://localhost:3000/api/comments -H 'Content-Type: application/json' -d '{\"userId\":\"test-user2\",\"audioId\":\"audio-004\",\"content\":\"不错\",\"rating\":4}' - 添加更多评论"
  405. ],
  406. "frontend_test_steps": [
  407. "1. 打开player页面",
  408. "2. 滑动到评论区",
  409. "3. 验证评论列表显示",
  410. "4. 输入评论内容并打分",
  411. "5. 点击提交",
  412. "6. 验证新评论显示在列表中"
  413. ],
  414. "status": "done",
  415. "passes": true
  416. },
  417. {
  418. "id": 19,
  419. "description": "消息通知 - 通知API",
  420. "backend_test_steps": [
  421. "1. curl http://localhost:3000/api/notifications - 验证获取通知列表",
  422. "2. curl -X POST http://localhost:3000/api/notifications/read -H 'Content-Type: application/json' -d '{\"id\":\"notif-001\"}' - 验证标记已读"
  423. ],
  424. "frontend_test_steps": [
  425. "1. 进入任意页面",
  426. "2. 验证通知图标显示",
  427. "3. 点击通知图标",
  428. "4. 验证通知列表正常显示",
  429. "5. 点击某条通知",
  430. "6. 验证已读状态更新"
  431. ],
  432. "status": "done",
  433. "passes": true
  434. }
  435. ]
  436. }