{
  "project_name": "AI语音应用 - 页面优化与付费转化",
  "base_config": {
    "backend_port": 3000,
    "frontend_port": 5173,
    "db_host": "localhost",
    "db_port": 3306,
    "auth_enabled": false
  },
  "features": [
    {
      "id": 1,
      "description": "生成页 - 音色选择器网格布局",
      "status": "init",
      "passes": false,
      "priority": "high",
      "phase": "1",
      "backend_test_steps": [
        "1. curl http://localhost:3000/api/voices - 验证获取音色列表接口"
      ],
      "frontend_test_steps": [
        "1. 进入生成页",
        "2. 验证音色选择器改为网格布局（2列x5行）",
        "3. 验证每个音色卡片显示名称和图标",
        "4. 点击选中音色验证高亮效果",
        "5. 验证选中状态清晰可见"
      ]
    },
    {
      "id": 2,
      "description": "生成页 - 滑块实时数值反馈",
      "status": "init",
      "passes": false,
      "priority": "high",
      "phase": "1",
      "backend_test_steps": [],
      "frontend_test_steps": [
        "1. 进入生成页",
        "2. 拖动语速滑块",
        "3. 验证滑块上方实时显示当前数值（如：1.5x）",
        "4. 拖动音调滑块",
        "5. 验证音调数值实时更新",
        "6. 拖动音量滑块",
        "7. 验证音量百分比实时显示"
      ]
    },
    {
      "id": 3,
      "description": "生成页 - 字数限制提示",
      "status": "init",
      "passes": false,
      "priority": "high",
      "phase": "1",
      "backend_test_steps": [
        "1. curl -X POST http://localhost:3000/api/validate/text -H 'Content-Type: application/json' -d '{\"text\":\"测试文本\"}' - 验证文本验证接口"
      ],
      "frontend_test_steps": [
        "1. 进入生成页",
        "2. 验证输入框上方显示'最多2000字'提示",
        "3. 输入超过1000字验证字数统计显示",
        "4. 输入接近2000字验证警告提示",
        "5. 超过2000字验证禁止继续输入",
        "6. 验证字数统计样式美观"
      ]
    },
    {
      "id": 4,
      "description": "生成页 - AI生成按钮视觉优化",
      "status": "init",
      "passes": false,
      "priority": "medium",
      "phase": "1",
      "backend_test_steps": [],
      "frontend_test_steps": [
        "1. 进入生成页",
        "2. 验证AI生成按钮使用渐变背景色",
        "3. 验证按钮有阴影效果",
        "4. 验证按钮尺寸醒目",
        "5. hover按钮验证悬停效果增强",
        "6. 点击时验证点击反馈动画"
      ]
    },
    {
      "id": 5,
      "description": "首页 - 专辑封面默认图",
      "status": "init",
      "passes": false,
      "priority": "medium",
      "phase": "1",
      "backend_test_steps": [
        "1. curl http://localhost:3000/api/albums - 验证专辑列表接口返回封面URL"
      ],
      "frontend_test_steps": [
        "1. 进入首页",
        "2. 验证专辑卡片有封面图显示",
        "3. 无自定义封面时显示默认占位图",
        "4. 验证默认封面样式美观",
        "5. 验证封面加载失败时的兜底处理"
      ]
    },
    {
      "id": 6,
      "description": "首页 - 订阅数友好格式",
      "status": "init",
      "passes": false,
      "priority": "low",
      "phase": "1",
      "backend_test_steps": [
        "1. curl http://localhost:3000/api/albums - 验证订阅数接口"
      ],
      "frontend_test_steps": [
        "1. 进入首页",
        "2. 验证订阅数显示为'12 位订阅者'格式",
        "3. 验证1位订阅者显示'1 位订阅者'",
        "4. 验证0位订阅者显示'暂无订阅者'"
      ]
    },
    {
      "id": 7,
      "description": "首页 - 专辑描述精简",
      "status": "init",
      "passes": false,
      "priority": "low",
      "phase": "1",
      "backend_test_steps": [],
      "frontend_test_steps": [
        "1. 进入首页",
        "2. 验证默认专辑描述显示为'未分类音频'",
        "3. 验证描述简洁不换行"
      ]
    },
    {
      "id": 8,
      "description": "历史页 - 空状态美化",
      "status": "init",
      "passes": false,
      "priority": "medium",
      "phase": "1",
      "backend_test_steps": [],
      "frontend_test_steps": [
        "1. 进入历史页（无数据）",
        "2. 验证显示友好的空状态插画",
        "3. 验证空状态文案清晰",
        "4. 验证有引导按钮（如：去生成）"
      ]
    },
    {
      "id": 9,
      "description": "历史页 - 批量操作功能",
      "status": "init",
      "passes": false,
      "priority": "medium",
      "phase": "2",
      "backend_test_steps": [
        "1. curl -X POST http://localhost:3000/api/history/batch-delete -H 'Content-Type: application/json' -d '{\"ids\":[\"id1\",\"id2\"]}' - 验证批量删除",
        "2. curl -X POST http://localhost:3000/api/history/batch-move -H 'Content-Type: application/json' -d '{\"ids\":[\"id1\"],\"albumId\":1}' - 验证批量移动到专辑"
      ],
      "frontend_test_steps": [
        "1. 进入历史页",
        "2. 长按或勾选多个音频",
        "3. 验证批量选择模式开启",
        "4. 验证选中数量显示",
        "5. 点击批量删除",
        "6. 验证确认弹窗",
        "7. 验证删除成功提示",
        "8. 验证批量移动到专辑功能"
      ]
    },
    {
      "id": 10,
      "description": "历史页 - 排序功能",
      "status": "init",
      "passes": false,
      "priority": "low",
      "phase": "2",
      "backend_test_steps": [
        "1. curl http://localhost:3000/api/history?sortBy=time&order=desc - 验证按时间排序",
        "2. curl http://localhost:3000/api/history?sortBy=name&order=asc - 验证按名称排序"
      ],
      "frontend_test_steps": [
        "1. 进入历史页",
        "2. 点击排序按钮",
        "3. 验证显示排序选项（时间/名称）",
        "4. 选择按时间排序验证效果",
        "5. 选择按名称排序验证效果",
        "6. 验证升序/降序切换"
      ]
    },
    {
      "id": 11,
      "description": "历史页 - 按专辑筛选",
      "status": "init",
      "passes": false,
      "priority": "low",
      "phase": "2",
      "backend_test_steps": [
        "1. curl http://localhost:3000/api/history?albumId=1 - 验证按专辑筛选"
      ],
      "frontend_test_steps": [
        "1. 进入历史页",
        "2. 点击筛选按钮",
        "3. 验证显示专辑筛选选项",
        "4. 选择某个专辑",
        "5. 验证列表只显示该专辑音频"
      ]
    },
    {
      "id": 12,
      "description": "我的页 - 未登录引导",
      "status": "init",
      "passes": false,
      "priority": "medium",
      "phase": "1",
      "backend_test_steps": [],
      "frontend_test_steps": [
        "1. 未登录状态下进入我的页",
        "2. 验证显示引导插画",
        "3. 验证登录/注册CTA按钮醒目",
        "4. 点击引导按钮验证跳转登录页"
      ]
    },
    {
      "id": 13,
      "description": "我的页 - 菜单图标统一",
      "status": "init",
      "passes": false,
      "priority": "low",
      "phase": "1",
      "backend_test_steps": [],
      "frontend_test_steps": [
        "1. 进入我的页",
        "2. 验证所有菜单项有图标",
        "3. 验证图标风格统一",
        "4. 验证图标清晰可见"
      ]
    },
    {
      "id": 14,
      "description": "我的页 - 设置功能",
      "status": "init",
      "passes": false,
      "priority": "medium",
      "phase": "2",
      "backend_test_steps": [
        "1. curl http://localhost:3000/api/user/settings - 验证获取用户设置",
        "2. curl -X PUT http://localhost:3000/api/user/settings -H 'Content-Type: application/json' -d '{\"theme\":\"dark\"}' - 验证更新设置"
      ],
      "frontend_test_steps": [
        "1. 进入我的页",
        "2. 验证设置入口显示",
        "3. 点击进入设置页",
        "4. 验证账号设置选项",
        "5. 验证主题切换选项（明亮/暗黑）",
        "6. 验证通知设置选项",
        "7. 修改设置验证生效"
      ]
    },
    {
      "id": 15,
      "description": "我的页 - 免费用户标签优化",
      "status": "init",
      "passes": false,
      "priority": "low",
      "phase": "1",
      "backend_test_steps": [],
      "frontend_test_steps": [
        "1. 免费用户进入我的页",
        "2. 验证会员标签改为'免费试用'样式",
        "3. 验证标签样式吸引人",
        "4. 点击标签验证引导开通会员"
      ]
    },
    {
      "id": 16,
      "description": "专辑管理页 - 新建专辑入口",
      "status": "init",
      "passes": false,
      "priority": "high",
      "phase": "1",
      "backend_test_steps": [
        "1. curl -X POST http://localhost:3000/api/albums -H 'Content-Type: application/json' -d '{\"name\":\"测试专辑\",\"description\":\"描述\"}' - 验证创建专辑"
      ],
      "frontend_test_steps": [
        "1. 进入专辑管理页",
        "2. 验证页面顶部有'新建专辑'按钮",
        "3. 点击新建专辑",
        "4. 验证弹窗表单（名称/描述/封面）",
        "5. 填写信息并确认",
        "6. 验证新专辑创建成功"
      ]
    },
    {
      "id": 17,
      "description": "专辑管理页 - 快捷操作菜单",
      "status": "init",
      "passes": false,
      "priority": "medium",
      "phase": "1",
      "backend_test_steps": [
        "1. curl -X PUT http://localhost:3000/api/albums/1 -H 'Content-Type: application/json' -d '{\"name\":\"更新名称\"}' - 验证更新专辑",
        "2. curl -X DELETE http://localhost:3000/api/albums/1 - 验证删除专辑"
      ],
      "frontend_test_steps": [
        "1. 进入专辑管理页",
        "2. 长按或右滑专辑卡片",
        "3. 验证显示编辑/删除快捷操作",
        "4. 点击编辑验证弹窗",
        "5. 点击删除验证确认弹窗",
        "6. 验证操作成功反馈"
      ]
    },
    {
      "id": 18,
      "description": "专辑管理页 - 排序功能",
      "status": "init",
      "passes": false,
      "priority": "low",
      "phase": "2",
      "backend_test_steps": [
        "1. curl http://localhost:3000/api/albums?sortBy=name - 验证按名称排序",
        "2. curl http://localhost:3000/api/albums?sortBy=subscribers - 验证按订阅数排序"
      ],
      "frontend_test_steps": [
        "1. 进入专辑管理页",
        "2. 点击排序按钮",
        "3. 验证按名称/订阅数排序选项",
        "4. 切换排序验证列表变化"
      ]
    },
    {
      "id": 19,
      "description": "专辑管理页 - 默认专辑标注",
      "status": "init",
      "passes": false,
      "priority": "medium",
      "phase": "1",
      "backend_test_steps": [],
      "frontend_test_steps": [
        "1. 进入专辑管理页",
        "2. 验证默认专辑有明确标注",
        "3. 验证标注显示'默认专辑不可删除'",
        "4. 验证默认专辑无编辑入口"
      ]
    },
    {
      "id": 20,
      "description": "全局 - 底部导航选中高亮",
      "status": "init",
      "passes": false,
      "priority": "medium",
      "phase": "1",
      "backend_test_steps": [],
      "frontend_test_steps": [
        "1. 切换不同底部导航",
        "2. 验证选中项有高亮效果",
        "3. 验证选中项图标/文字颜色变化",
        "4. 验证选中项有下划线或背景高亮"
      ]
    },
    {
      "id": 21,
      "description": "全局 - 页面切换loading动画",
      "status": "init",
      "passes": false,
      "priority": "medium",
      "phase": "1",
      "backend_test_steps": [],
      "frontend_test_steps": [
        "1. 点击底部导航切换页面",
        "2. 验证加载动画显示",
        "3. 验证动画样式美观",
        "4. 验证数据加载完成后动画消失"
      ]
    },
    {
      "id": 22,
      "description": "全局 - 错误提示优化",
      "status": "init",
      "passes": false,
      "priority": "medium",
      "phase": "1",
      "backend_test_steps": [
        "1. curl http://localhost:3000/api/nonexist - 验证404响应"
      ],
      "frontend_test_steps": [
        "1. 断网状态下操作",
        "2. 验证显示友好错误提示",
        "3. 验证提示文案清晰",
        "4. 验证有重试按钮",
        "5. 验证错误提示可关闭"
      ]
    },
    {
      "id": 23,
      "description": "全局 - 无障碍标签",
      "status": "init",
      "passes": false,
      "priority": "low",
      "phase": "2",
      "backend_test_steps": [],
      "frontend_test_steps": [
        "1. 使用读屏软件测试",
        "2. 验证emoji图标有aria-label属性",
        "3. 验证可访问性标签正确"
      ]
    },
    {
      "id": 24,
      "description": "试听功能 - 预览API",
      "status": "init",
      "passes": false,
      "priority": "high",
      "phase": "1",
      "backend_test_steps": [
        "1. curl -X POST http://localhost:3000/api/preview -H 'Content-Type: application/json' -d '{\"text\":\"测试预览文本\"}' - 验证生成预览音频"
      ],
      "frontend_test_steps": [
        "1. 进入生成页输入文本",
        "2. 选择音色参数",
        "3. 点击试听预览按钮",
        "4. 验证预览音频播放",
        "5. 验证试听不消耗额度"
      ]
    },
    {
      "id": 25,
      "description": "历史页 - 一键试听按钮",
      "status": "init",
      "passes": false,
      "priority": "high",
      "phase": "1",
      "backend_test_steps": [],
      "frontend_test_steps": [
        "1. 进入历史页",
        "2. 验证每个音频卡片有播放按钮",
        "3. 点击播放按钮",
        "4. 验证音频开始播放",
        "5. 验证播放状态图标变化"
      ]
    },
    {
      "id": 26,
      "description": "下载功能 - 明显下载按钮",
      "status": "init",
      "passes": false,
      "priority": "high",
      "phase": "1",
      "backend_test_steps": [
        "1. curl http://localhost:3000/api/audio/audio-001/download - 验证下载接口"
      ],
      "frontend_test_steps": [
        "1. 进入历史页或详情页",
        "2. 验证下载按钮明显可见",
        "3. 点击下载按钮",
        "4. 验证下载进度显示",
        "5. 验证下载完成提示"
      ]
    },
    {
      "id": 27,
      "description": "分享功能 - 分享链接生成",
      "status": "init",
      "passes": false,
      "priority": "high",
      "phase": "1",
      "backend_test_steps": [
        "1. curl http://localhost:3000/api/share/audio-001 - 验证生成分享链接"
      ],
      "frontend_test_steps": [
        "1. 进入音频详情页",
        "2. 验证分享按钮明显可见",
        "3. 点击分享按钮",
        "4. 验证分享面板显示",
        "5. 验证可生成分享链接",
        "6. 验证复制链接功能"
      ]
    },
    {
      "id": 28,
      "description": "每日签到 - 签到API",
      "status": "init",
      "passes": false,
      "priority": "high",
      "phase": "1",
      "backend_test_steps": [
        "1. curl -X POST http://localhost:3000/api/signin -H 'Content-Type: application/json' -d '{\"userId\":\"test-user\"}' - 验证签到",
        "2. curl http://localhost:3000/api/signin/status?userId=test-user - 验证签到状态"
      ],
      "frontend_test_steps": [
        "1. 进入我的页或首页",
        "2. 验证签到入口显示",
        "3. 点击签到",
        "4. 验证签到成功动画",
        "5. 验证获得免费额度",
        "6. 验证连续签到天数显示"
      ]
    },
    {
      "id": 29,
      "description": "会员购买 - 会员卡入口",
      "status": "init",
      "passes": false,
      "priority": "high",
      "phase": "1",
      "backend_test_steps": [
        "1. curl http://localhost:3000/api/vip/plans - 验证获取会员套餐",
        "2. curl -X POST http://localhost:3000/api/vip/purchase -H 'Content-Type: application/json' -d '{\"planId\":\"monthly\"}' - 验证购买"
      ],
      "frontend_test_steps": [
        "1. 进入会员中心",
        "2. 验证月卡/年卡选项显示",
        "3. 验证套餐价格和权益说明",
        "4. 点击购买",
        "5. 验证支付流程",
        "6. 验证购买成功提示"
      ]
    },
    {
      "id": 30,
      "description": "额度用尽 - 付费引导弹窗",
      "status": "init",
      "passes": false,
      "priority": "high",
      "phase": "1",
      "backend_test_steps": [
        "1. curl http://localhost:3000/api/user/quota - 验证获取用户额度"
      ],
      "frontend_test_steps": [
        "1. 额度用尽时点击生成",
        "2. 验证弹窗提示'今日免费额度已用完'",
        "3. 验证弹窗有开通会员引导",
        "4. 点击立即开通",
        "5. 验证跳转会员购买页"
      ]
    },
    {
      "id": 31,
      "description": "邀请有礼 - 邀请API",
      "status": "init",
      "passes": false,
      "priority": "medium",
      "phase": "2",
      "backend_test_steps": [
        "1. curl http://localhost:3000/api/invite/code - 验证获取邀请码",
        "2. curl -X POST http://localhost:3000/api/invite/claim -H 'Content-Type: application/json' -d '{\"inviteCode\":\"xxx\"}' - 验证使用邀请码"
      ],
      "frontend_test_steps": [
        "1. 进入邀请有礼页面",
        "2. 验证邀请码显示",
        "3. 验证分享邀请链接按钮",
        "4. 验证被邀请人获得奖励",
        "5. 验证邀请人获得奖励"
      ]
    },
    {
      "id": 32,
      "description": "任务中心 - 任务API",
      "status": "init",
      "passes": false,
      "priority": "medium",
      "phase": "2",
      "backend_test_steps": [
        "1. curl http://localhost:3000/api/tasks - 验证获取任务列表",
        "2. curl -X POST http://localhost:3000/api/tasks/complete -H 'Content-Type: application/json' -d '{\"taskId\":\"task-001\"}' - 验证完成任务"
      ],
      "frontend_test_steps": [
        "1. 进入任务中心",
        "2. 验证新手任务列表",
        "3. 完成某个任务",
        "4. 验证奖励发放",
        "5. 验证任务进度更新"
      ]
    },
    {
      "id": 33,
      "description": "积分体系 - 积分API",
      "status": "init",
      "passes": false,
      "priority": "medium",
      "phase": "2",
      "backend_test_steps": [
        "1. curl http://localhost:3000/api/points/balance - 验证获取积分余额",
        "2. curl http://localhost:3000/api/points/history - 验证积分明细"
      ],
      "frontend_test_steps": [
        "1. 进入我的积分页",
        "2. 验证积分余额显示",
        "3. 验证积分来源记录",
        "4. 验证积分消耗记录",
        "5. 验证积分兑换入口"
      ]
    },
    {
      "id": 34,
      "description": "生成成功 - 分享引导",
      "status": "init",
      "passes": false,
      "priority": "medium",
      "phase": "2",
      "backend_test_steps": [],
      "frontend_test_steps": [
        "1. 生成音频成功",
        "2. 验证成功动画显示",
        "3. 验证分享按钮引导",
        "4. 点击分享验证分享面板",
        "5. 验证分享可获得积分"
      ]
    },
    {
      "id": 35,
      "description": "声音克隆 - 克隆API",
      "status": "init",
      "passes": false,
      "priority": "medium",
      "phase": "3",
      "backend_test_steps": [
        "1. curl -X POST http://localhost:3000/api/voice/clone -H 'Content-Type: application/json' -d '{\"name\":\"克隆音色\",\"audioFiles\":[\"file1.mp3\"]}' - 验证克隆请求",
        "2. curl http://localhost:3000/api/voice/clone/status/clone-001 - 验证克隆状态"
      ],
      "frontend_test_steps": [
        "1. 进入声音克隆页",
        "2. 验证上传音频引导",
        "3. 上传5分钟音频",
        "4. 验证上传进度",
        "5. 验证克隆训练状态",
        "6. 验证克隆完成音色列表"
      ]
    },
    {
      "id": 36,
      "description": "批量生成 - 批量API",
      "status": "init",
      "passes": false,
      "priority": "medium",
      "phase": "3",
      "backend_test_steps": [
        "1. curl -X POST http://localhost:3000/api/batch/generate -F 'file=@test.txt' - 验证批量上传",
        "2. curl http://localhost:3000/api/batch/status/batch-001 - 验证批量状态"
      ],
      "frontend_test_steps": [
        "1. 进入批量生成页",
        "2. 验证上传TXT/PDF入口",
        "3. 上传批量文件",
        "4. 验证解析结果预览",
        "5. 验证批量生成进度",
        "6. 验证批量下载功能"
      ]
    },
    {
      "id": 37,
      "description": "作品展示墙",
      "status": "init",
      "passes": false,
      "priority": "medium",
      "phase": "3",
      "backend_test_steps": [
        "1. curl http://localhost:3000/api/works/ranking - 验证获取作品排行榜"
      ],
      "frontend_test_steps": [
        "1. 进入作品展示墙",
        "2. 验证优秀作品展示",
        "3. 验证点赞/播放数据",
        "4. 验证可查看作品详情",
        "5. 验证可关注创作者"
      ]
    },
    {
      "id": 38,
      "description": "足迹地图 - 成就API",
      "status": "init",
      "passes": false,
      "priority": "low",
      "phase": "2",
      "backend_test_steps": [
        "1. curl http://localhost:3000/api/achievements - 验证获取成就数据"
      ],
      "frontend_test_steps": [
        "1. 进入我的成就页",
        "2. 验证累计生成时长显示",
        "3. 验证累计字数统计",
        "4. 验证成就徽章展示",
        "5. 验证游戏化进度条"
      ]
    },
    {
      "id": 39,
      "description": "多语言支持 - 翻译API",
      "status": "init",
      "passes": false,
      "priority": "low",
      "phase": "3",
      "backend_test_steps": [
        "1. curl -X POST http://localhost:3000/api/translate -H 'Content-Type: application/json' -d '{\"text\":\"你好\",\"targetLang\":\"en\"}' - 验证翻译接口"
      ],
      "frontend_test_steps": [
        "1. 进入生成页",
        "2. 选择目标语言",
        "3. 输入中文文本",
        "4. 验证自动翻译",
        "5. 验证翻译后配音生成"
      ]
    },
    {
      "id": 40,
      "description": "高品质下载 - 会员专属标识",
      "status": "init",
      "passes": false,
      "priority": "medium",
      "phase": "2",
      "backend_test_steps": [
        "1. curl http://localhost:3000/api/audio/audio-001/download?quality=high - 验证高品质下载"
      ],
      "frontend_test_steps": [
        "1. 进入音频详情页",
        "2. 验证下载按钮显示品质选项",
        "3. 非会员点击高品质下载",
        "4. 验证提示'开通会员享受高品质'",
        "5. 会员点击高品质下载验证正常下载"
      ]
    }
  ]
}
