feat: add portal account records

This commit is contained in:
QiuSW
2026-07-03 14:00:00 +08:00
parent 35f4c9c494
commit 4a10c2bb92
18 changed files with 653 additions and 27 deletions
+26
View File
@@ -775,3 +775,29 @@
- 阻塞:无。测试阶段仍有 allauth `account.EmailAddress` 条件唯一约束在 MySQL 上不可创建的 `models.W036` 警告;本项目账本邮箱唯一性由 `user.email` 唯一约束承担。
- 决策:T-502 原任务写“删除后该 Key 调用 401”,但项目架构和 T-301 已明确 `revoked` Key 返回 403、缺失/无效/不存在 Key 才返回 401;本轮将用户端“删除”定义为吊销 `revoked`,保留审计与调用记录关联,并同步修正文档口径。
- 下一步:领取 T-503 个人中心 / 记录页。
## 2026-07-03 T-503 个人中心 / 记录页
- 状态:DONE
- 变更:
- `apps/portal/views.py`:新增只读账号汇总 helper、充值订单查询和消费流水查询;`/dashboard` 汇总剩余点数、充值总额、入账点数、累计扣点、退款和净消耗,并展示最近充值 / 消费记录。
- `apps/portal/urls.py`:新增 `/records/recharge` 与 `/records/usage`。
- `apps/portal/templates/portal/dashboard.html`:扩展个人中心汇总与最近记录。
- `apps/portal/templates/portal/recharge_records.html`:新增充值记录页,按当前用户查询订单,汇总已支付订单金额与入账点数。
- `apps/portal/templates/portal/usage_records.html`:新增消费记录页,按当前用户查询 `consume` / `refund` 点数流水并关联调用信息。
- `apps/portal/templates/portal/base.html`:增加充值记录 / 消费记录导航入口。
- `apps/portal/tests.py`:新增 dashboard 汇总、充值记录、消费记录三类测试,覆盖数据与流水一致、记录仅见本人、未登录跳转。
- 同步更新 `README.md`、`docs/00-ai-start-here.md`、`docs/03-tech-stack.md`、`docs/04-architecture.md`、`docs/api.md`、`docs/routes.md`、`docs/06-tasks.md`、`docs/current-state.md`、`docs/project-brief.md`、`docs/project-onepager.md`。
- 验证:
- `./init.ps1`:开工前通过,Python 3.12.3、依赖已满足、`manage.py check` 0 issues。
- `py -3.12 -m py_compile apps\portal\views.py apps\portal\urls.py apps\portal\tests.py`:通过。
- `py -3.12 manage.py check`:通过,0 issues。
- `py -3.12 manage.py test apps.portal --noinput --keepdb --verbosity 2`:通过,14 tests OK。
- `py -3.12 manage.py makemigrations --check --dry-run`:通过,No changes detected。
- `py -3.12 -m compileall apps config`:通过。
- `py -3.12 manage.py test apps.users apps.portal apps.api --noinput --keepdb --verbosity 2`:通过,55 tests OK。
- `./init.ps1`:收尾通过,依赖已满足、`manage.py check` 0 issues。
- `git diff --check`:通过,仅 Windows CRLF 提示。
- 阻塞:无。测试阶段仍有 allauth `account.EmailAddress` 条件唯一约束在 MySQL 上不可创建的 `models.W036` 警告;本项目账本邮箱唯一性由 `user.email` 唯一约束承担。
- 决策:T-503 页面只读,不写 `UserWallet.points_balance`;余额用 `get_balance_snapshot()`,充值总额按 paid `RechargeOrder.amount_money` 汇总,入账点数按 `PointsLedger(recharge)` 汇总,消费记录直接展示 `PointsLedger(consume/refund)` 并关联 `CallRecord`,保证记录与流水同源。
- 下一步:领取 T-504 充值页(扫码 + 轮询到账)。