2.4 KiB
2.4 KiB
修复起卦积分硬编码与硬币动画
Goal
- 修复手动起卦和自动起卦页面的积分硬编码问题,使用后端返回的
runCost和实际积分余额 - 添加硬币翻转动画效果
- 优化硬币选中状态的视觉效果
What I already know
硬编码位置:
-
ManualDivinationPage.tsx第 77、103、129 行:'可用 120 积分 · 本次 20 积分''Available 120 credits · This reading 20 credits'
-
AutoDivinationPage.tsx第 40 行:'可用 120 积分 · 本次 20 积分'
-
StorePage.tsx第 91 行:- fallback
runCost: 20
- fallback
API 已有字段:
PointsBalance接口(lib/api.ts第 120-126 行):balance: 总积分availableBalance: 可用积分runCost: 单次解卦消耗canRun: 是否可运行
Flutter 参考实现:
apps/lib/features/divination/presentation/screens/manual_divination_screen.dart第 358、374 行- 使用
points.runCost和points.availableBalance
硬币当前样式:
ManualDivinationPage.tsx第 44 行:ring-2 ring-violet-600 ring-offset-2 ring-offset-slate-50- 选中有边框和背景
Requirements
R1: 积分显示使用后端数据
- 手动起卦和自动起卦页面需要调用
getPointsBalance()获取实际积分 - 显示格式:
可用 {availableBalance} 积分 · 本次 {runCost} 积分 - 英文:
Available {availableBalance} credits · This time {runCost} credits
R2: 硬币翻转动画
- 点击硬币时有翻转动画效果
- 使用 CSS transform: rotateY(180deg) 实现 3D 翻转
R3: 优化硬币选中视觉效果
- 移除选中硬币的边框(ring)和背景偏移
- 只显示硬币图片本身
- 可以保留轻微阴影以区分层次
Acceptance Criteria
- 手动起卦页面显示实际可用积分和解卦消耗
- 自动起卦页面显示实际可用积分和解卦消耗
- 点击硬币有翻转动画
- 选中的硬币无边框,只显示硬币图片
Definition of Done
- 功能测试通过
- 与 Flutter 实现一致
Technical Notes
涉及文件:
web/src/components/ManualDivinationPage.tsxweb/src/components/AutoDivinationPage.tsxweb/src/components/StorePage.tsx(可选,fallback 值保留)
修改方案:
- 在组件中添加
useEffect调用getPointsBalance() - 将硬编码文本替换为动态值
- 添加 CSS 翻转动画类
- 移除
ring-2 ring-violet-600 ring-offset-2样式