2026-03-13 10:03:12 +08:00

145 lines
5.6 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"state": "COMPLETE",
"requirement": "重做后台管理系统和用户端个人中心,核心改动如下:\n\n1. 计量单位变更将所有「调用次数」改为「生成秒数」。用户每次生成视频消耗的是秒数不是次数。后端数据模型、API、前端展示都需要对应调整。\n\n2. 后台管理系统重做(必须按模块拆分路由,使用左侧 Sidebar 导航):\n - 仪表盘页面(/admin/dashboard核心指标卡片总用户、今日新增、今日消费秒数、本月消费秒数+ 消费趋势折线图近30天使用 ECharts+ 用户消费排行柱状图\n - 用户管理页面(/admin/users用户列表分页、搜索、筛选状态+ 每个用户可编辑配额(日限额秒数、月限额秒数)+ 启用/禁用用户 + 查看用户详情和消费记录\n - 消费记录页面(/admin/records所有用户的消费明细列表时间、用户名、消费秒数、生成内容、状态+ 时间范围筛选 + 导出功能\n - 系统设置页面(/admin/settings全局默认配额设置、系统公告管理\n\n3. 用户端个人中心(/profile\n - 消费概览:已用秒数/总额度(环形进度条)+ 今日已用/日限额 + 本月已用/月限额\n - 消费记录列表:每条记录显示时间、消费秒数、生成的视频描述、状态\n - 消费趋势迷你图近7天/30天 Sparkline\n\n4. 设计要求:\n - 管理后台使用深色主题(参考 Linear/Vercel Dashboard 风格)\n - 必须使用 ECharts 或 Recharts 图表库,图表要有真实 Mock 数据\n - 页面切换有过渡动画\n - 数据加载使用骨架屏\n - 如果项目用了 Arco Design优先使用 Arco 组件\n\n5. 后端 API 需要新增/修改:\n - GET /api/v1/admin/stats — 返回仪表盘统计数据(含趋势数据)\n - GET /api/v1/admin/users — 用户列表(分页、搜索、排序)\n - GET /api/v1/admin/users/:id — 用户详情+消费记录\n - PUT /api/v1/admin/users/:id/quota — 修改用户配额(改为秒数)\n - PATCH /api/v1/admin/users/:id/status — 启用/禁用用户\n - GET /api/v1/admin/records — 消费记录列表(分页、筛选)\n - GET /api/v1/profile/overview — 用户个人消费概览\n - GET /api/v1/profile/records — 用户个人消费记录\n\n数据库连接信息保持不变DB_NAME=video_auto, DB_USER=ai_video, DB_PASSWORD=JogNQdtrd3WY8CBCAiYfYEGx, DB_HOST=rm-7xv1uaw910558p1788o.mysql.rds.aliyuncs.com, DB_PORT=3306",
"designReviewRounds": 1,
"bugFixRounds": 1,
"designBugRounds": 0,
"requirementBugRounds": 0,
"startedAt": 1773297329874,
"lastTransitionAt": 1773308839611,
"history": [
{
"from": "INIT",
"to": "PLANNING",
"trigger": "user_requirement",
"timestamp": 1773297329875
},
{
"from": "PLANNING",
"to": "DESIGNING",
"trigger": "prd_ready",
"timestamp": 1773297604388
},
{
"from": "DESIGNING",
"to": "DESIGN_REVIEW",
"trigger": "prototype_ready",
"timestamp": 1773297640509
},
{
"from": "DESIGN_REVIEW",
"to": "DESIGNING",
"trigger": "revision_needed",
"timestamp": 1773297978455
},
{
"from": "DESIGNING",
"to": "DESIGN_REVIEW",
"trigger": "prototype_ready",
"timestamp": 1773298005748
},
{
"from": "DESIGN_REVIEW",
"to": "DESIGNING",
"trigger": "revision_needed",
"timestamp": 1773298184164
},
{
"from": "DESIGNING",
"to": "DESIGN_REVIEW",
"trigger": "prototype_ready",
"timestamp": 1773298217956
},
{
"from": "DESIGN_REVIEW",
"to": "DEVELOPING",
"trigger": "design_approved",
"timestamp": 1773298545453
},
{
"from": "DEVELOPING",
"to": "TESTING",
"trigger": "code_ready",
"timestamp": 1773299937481
},
{
"from": "TESTING",
"to": "BUG_FIXING",
"trigger": "code_bugs_found",
"timestamp": 1773301071320
},
{
"from": "BUG_FIXING",
"to": "TESTING",
"trigger": "bugfix_done",
"timestamp": 1773301133293
},
{
"from": "TESTING",
"to": "COMPLETE",
"trigger": "all_done",
"timestamp": 1773301590105
},
{
"from": "COMPLETE",
"to": "PLANNING",
"trigger": "new_requirement_after_complete",
"timestamp": 1773303420196
},
{
"from": "PLANNING",
"to": "DESIGNING",
"trigger": "prd_ready",
"timestamp": 1773304593012
},
{
"from": "DESIGNING",
"to": "DESIGN_REVIEW",
"trigger": "prototype_ready",
"timestamp": 1773304619775
},
{
"from": "DESIGN_REVIEW",
"to": "DESIGNING",
"trigger": "revision_needed",
"timestamp": 1773304947125
},
{
"from": "DESIGNING",
"to": "DESIGN_REVIEW",
"trigger": "prototype_ready",
"timestamp": 1773304977065
},
{
"from": "PLANNING",
"to": "DESIGNING",
"trigger": "prd_ready",
"timestamp": 1773305280422
},
{
"from": "DESIGNING",
"to": "DESIGN_REVIEW",
"trigger": "prototype_ready",
"timestamp": 1773305969599
},
{
"from": "DESIGN_REVIEW",
"to": "DEVELOPING",
"trigger": "design_approved",
"timestamp": 1773306393389
},
{
"from": "DEVELOPING",
"to": "TESTING",
"trigger": "code_ready",
"timestamp": 1773307571362
},
{
"from": "TESTING",
"to": "COMPLETE",
"trigger": "all_done",
"timestamp": 1773308839611
}
],
"totalCostUsd": 0
}