fix: polish storefront account and membership state

This commit is contained in:
Jesse_Chen
2026-08-11 11:59:03 +08:00
parent 8eed0603f9
commit ce46aae5c8
8 changed files with 122 additions and 37 deletions
+16
View File
@@ -2712,3 +2712,19 @@
- 相关记录:ERR-020、ERR-021、ERR-022、ERR-024、ERR-025、ERR-026、ERR-104
- 复发自:无
- 修复版本:待提交
## BUG-160 | 管理端商品权益枚举未本地化且登录、套餐与充值返回状态出现前端闪烁或陈旧状态
- 状态:resolvedlocal candidate,待真实登录态浏览器验收)
- 首次发现:2026-08-11
- 最近更新:2026-08-11
- 影响面:管理端商品与权益列表/编辑表单、主站登录跳转、首页 composer、套餐页兑换码弹窗、支付后首页点数余额
- 用户现象:商品类型、计费周期、权益类型和重置周期直接显示英文枚举;未登录进入 `jyotisha.chat` 时登录页接管前短暂出现“暂时无法进入 Jyotisha”;首页 composer 展示过多状态提示;套餐页默认打开兑换码弹窗;充值成功返回首页后仍显示旧点数。
- 触发条件:管理端读取数据库枚举;首页并行账户/会话请求返回 401;composer 业务流程写入 notice;账户菜单携带 `redeem=1` 进入套餐页;支付页返回已存在的首页历史记录且该记录未按普通 `pageshow` 刷新账户。
- 根因:商品与权益 UI 直接渲染数据库英文值;401 跳转后继续抛出普通错误并被首页 bootstrap 写入 `accountError`composer footer 集中渲染所有 notice;套餐页用 URL 参数初始化 `redeemOpen`,首页账户菜单默认写入该参数;余额同步事件只在套餐页当前窗口发出,而首页已卸载,首页又只在 BFCache `pageshow.persisted` 时刷新。
- 修复:在管理端为商品类型、计费周期、权益类型和重置周期增加中文显示映射,API 原始值保持不变;401 使用 `location.replace` 和专用跳转错误,bootstrap/账户刷新忽略该跳转并保持 loading;删除 composer notice 可见渲染;移除 `membershipHref` 的 redeem 参数和套餐页 URL 自动开窗逻辑,保留用户手动兑换按钮;首页每次 `pageshow` 都重新读取账户与点数。
- 验证:商品/会员/首页入口 66 条聚焦测试全部通过;本次 7 个目标文件 ESLint 通过;`git diff --check` 通过。完整 `tsc --noEmit` 仍被本任务外既有问题阻塞,包括缺少本地 `boring-avatars` 安装及既有报告、生产迁移和 staging workflow 测试类型错误,未把这些错误计入本修复通过条件。
- 防复发:数据库枚举必须在管理 UI 显示边界映射,不得修改 API 真值;认证跳转不得进入普通错误页状态;对离开页面期间可能变化的账户余额,页面恢复必须主动重新读取服务端;兑换弹窗只能由明确用户操作开启。
- 相关记录:BUG-010、BUG-090、BUG-123
- 复发自:无
- 修复版本:本地 staging 候选(未 push / deploy