Commit Graph

544 Commits

Author SHA1 Message Date
fd763298c7 docs(status-code): 重构设计 - google.rpc.Code 标准化 + 双协议期迁移
核心:
- proto: BaseResponse.code 改用 google.rpc.Code 数字 (0/3/5/7/8/13/16)
- proto: 新增 legacy_code 字段保留旧 HTTP 镜像码(过渡期用)
- errors.go: 重写 ToStatusCode -> ToGRPCCode + ToLegacyCode,全面用 errors.Is
- service: 所有硬编码 StatusCode_STATUS_X 改为 status.Error(codes.X, msg)
- gateway: 新增拦截器强制 HTTP 200,剥除 Dubbo 自动 gRPC->HTTP 转换
- 前端: api.js 拦截器重写,优先读 code 兼容 legacy_code

迁移: 双协议期 4 阶段(准备/双协议/前端升级/清理),约 4 sprint
执行顺序: 先实现 change-password spec,再启动本重构

与 change-password spec 协同:
- §4.5 错误码映射自动升级为 gRPC code
- §5.1 拦截器修复方案被本设计自然吸收
- §12 Login BUG 修复(ToGRPCCode 用 errors.Is)作为前置依赖
2026-06-12 13:20:29 +08:00
8c90de5b08 docs(change-password): 追加 §12 顺带修复 Login 账号状态码 BUG
问题: auth_service.go Login 流程被冻结/封禁时用 fmt.Errorf/errors.New
返回 generic error,落到 ToStatusCode default 分支 -> 500 而非 403

修复:
- errors.go: 新增 NewAccountBannedError / NewAccountFrozenError 2 helper,
  保留 typed error 身份但允许附加 reason / frozenUntil 信息
- errors.go: ToStatusCode 改用 errors.Is 全面识别 wrapped error
  (一处 switch 大改造,使其他 service 中已有的 fmt.Errorf("%w") 自动受益)
- auth_service.go: Login 流程 2 处 return 改用 helper
- auth_service_login_test.go (新建或追加): 2 个新单测验证 403 行为
2026-06-12 13:04:11 +08:00
e5d5808a84 docs(change-password): 架构级修正 - 状态码语义替代白名单方案
按用户反馈,BUG #1 修复应从状态码语义入手,而非前端 URL 白名单:

后端修订 (§4.5):
- ErrInvalidVerifyToken: 401 -> 400 (业务校验,非鉴权)
- 新增 ErrInvalidOldPassword: 400 (改密场景下旧密码错)
- 保留 ErrInvalidPassword (Login 用) = 401 不变
- 关键原则:已登录态下的业务校验都走 400

前端简化 (§5.1):
- 拦截器去掉 NO_AUTO_LOGOUT_PATHS 白名单
- 只对 401 (token 失效) / 403 (账号被封) 自动登出
- 400 类业务错误统一 toast,让用户重试

同步:
- §4.3 service 代码:用 ErrInvalidOldPassword 替代 ErrInvalidPassword
- §4.6 测试用例 #5:用 ErrInvalidOldPassword
- §6.2 手动测试 #2:旧密码错返回 400
- §7 错误码表:增加是否触发自动登出列,统一规则
- §10 文件列表:errors.go 新增 3 错误码,api.js 改为非白名单改造
- §1.1 BUG #1 描述同步更新
2026-06-12 12:51:47 +08:00
0a3d8e0afc docs(change-password): 合并 7 个 second-pass issues
- 3.1 序列图:补 GetByID 调用,与 §4.3 一致
- 4.2: 加 call-site 审计 grep 命令 + 已确认 9 文件列表
- 4.6: 补 mocking 模式代码示例 + Test #9 错误类型规约
- 5.3.3: 解释手动 removeStorageSync 的原因(store 不清 temp_register_*)
- 5.3.4: 补 updatePasswordApi 调用点审计(2 文件已确认)
- 9: 补 AuthMiddleware 已挂载,前端凭 token 即可访问
2026-06-12 12:41:56 +08:00
c875151daa docs(change-password): 修复合并 5 个 spec review issues
- 4.2: 明确 VerifyToken 函数改造为 (ctx, scene, mobile, token)
- 4.3: 补 scene="password" 传入,加 scene 一致性注释
- 5.3.4: 确认 sendCodeApi/verifyCodeApi 已支持 scene,updatePasswordApi 需扩展为 3 参数
- 7: 增加 401 业务码多义性说明,提示 res.message 必须稳定
- 10: auth_service.go 改动明确为 Register 中 VerifyToken 调用加 scene 参数
2026-06-12 12:36:29 +08:00
e8061c7d05 docs(change-password): 设计文档 - 旧密码+短信双保险+修复3 BUG
- 后端:proto 加 verify_token,SMS Redis key 场景化,Service 加 verify_token 校验+新旧密码一致性
- 前端:BUG#1 拦截器白名单修复、BUG#2 补 APP介绍 handler、BUG#3 加前端校验
- 新增 2 个错误码:ErrInvalidVerifyToken、ErrSameAsOldPassword
- 后端单测覆盖矩阵 10 条
- 前端手动验证 checklist 10 条
2026-06-12 11:51:09 +08:00
claude
a595440915 docs(moderation): 自审修复 - target_type 命名/跨schema/Lua lock/补流程 2026-06-11 21:50:58 +08:00
claude
16e8eb55dd docs(moderation): 完善设计 - 序列起始值/状态机迁移/限流/孤儿清理 2026-06-11 21:50:58 +08:00
claude
5320eceb32 docs(moderation): 举报与反馈系统设计 2026-06-11 21:50:58 +08:00
zerosaturation
a1bb302be8 feat:修改已知bug 2026-06-11 21:07:00 +08:00
zerosaturation
542b1bd4f0 feat:修改docker脚本配置 2026-06-11 18:17:33 +08:00
e5061e9449 docs:分析功能设计文档 2026-06-11 17:52:40 +08:00
zerosaturation
52a88162f4 feat:合并问题解决 2026-06-11 16:37:07 +08:00
zerosaturation
280b4bbee0 feat:docker新增统计的微服务 2026-06-11 16:35:56 +08:00
zerosaturation
3ec096ecd9 feat:修改星榜卡顿问题 2026-06-11 13:56:34 +08:00
2c8ce4d586 image:修改图片尺寸 2026-06-11 13:52:47 +08:00
c441388fd0 feat:修改星榜的样式 2026-06-11 13:31:53 +08:00
zerosaturation
37fbcb42c6 feat:星榜新增翻页功能 2026-06-11 13:14:38 +08:00
c90dcf3d36 feat:去掉无用的图片 2026-06-11 12:53:44 +08:00
b0290456bb fix(square): use ref-binding for scrollTop reset; add bottom safety margin 2026-06-11 12:53:44 +08:00
751bd68bf1 feat(square): differentiate scroll behavior for xinghe/xingbang/guangchang tabs 2026-06-11 12:53:43 +08:00
zerosaturation
71ee3795b9 feat: 修改星河下面9个小图的位置 2026-06-11 12:29:17 +08:00
4263d2f779 feat: 修改星河底座的间距 2026-06-11 00:54:52 +08:00
d6c4514329 feat:修改星榜 2026-06-11 00:52:27 +08:00
zerosaturation
3d6a4c5dbd feat: 榜单样式调整 2026-06-11 00:51:26 +08:00
cca325b295 feat: 修改square星河组件的样式修改和bug 2026-06-11 00:15:16 +08:00
23862e36ae feat:增加top3的动画 2026-06-10 22:53:07 +08:00
d4e26337de feat: 修改星河top 2026-06-10 19:33:17 +08:00
61d39e2c1e feat: 新增星河的 2026-06-10 19:25:15 +08:00
90803234ba style(stargalaxy): remove shared podium size — each .podium-N controls its own width/height 2026-06-10 19:16:03 +08:00
021782d42f style(stargalaxy): add topbj3.png background-image to .podium-card (shared, not rank-specific) 2026-06-10 18:01:39 +08:00
b130a51474 refactor(stargalaxy): simplify rank — PodiumCard uses 1/2/3 directly (no +4 offset) 2026-06-10 17:28:31 +08:00
563969c4e0 perf(stargalaxy): replace label JS constants with pure CSS classes (.podium-N .top-label) 2026-06-10 17:26:26 +08:00
7b7902bba6 perf(stargalaxy): inline displayRank/frameSrc into template, drop computed 2026-06-10 17:24:08 +08:00
617bb201dc perf(stargalaxy): replace JS computed sizing with pure CSS classes (.podium-4/5/6) 2026-06-10 17:22:13 +08:00
7f831c4fbe refactor(stargalaxy): move PODIUM_SIZES/POSITIONS into PodiumCard for self-contained layout 2026-06-10 17:18:35 +08:00
6231295e36 refactor(stargalaxy): remove unused frameGradients/frameStyle from PodiumCard (user to redesign) 2026-06-10 17:15:37 +08:00
32bc65aa1b refactor(stargalaxy): remove unused diamond-frame/cover-highlight/diamond-border/crown from PodiumCard 2026-06-10 17:09:50 +08:00
308cf33a14 style(stargalaxy): center ScatteredRanks vertically in parent container 2026-06-10 17:01:46 +08:00
ca87faf98d fix(stargalaxy): reverse top/bottom mask to fade header at top instead of bottom 2026-06-10 16:55:28 +08:00
1542147291 fix(stargalaxy): correct LV frame mapping in ScatteredRanks (rank 4→LV4, not LV1) 2026-06-10 16:51:01 +08:00
f66be49384 feat(stargalaxy): add LV1-12 frame images to podium and scattered items 2026-06-10 16:48:34 +08:00
dd5f95d734 fix(stargalaxy): set slot-specific static transform to prevent 9-item overlap fallback 2026-06-10 16:01:29 +08:00
f7b76e3813 docs(stargalaxy): add component README with cross-platform compatibility notes 2026-06-10 15:44:15 +08:00
ef82d7a57d feat(square): wire StarGalaxy component into 星河 tab 2026-06-10 15:38:16 +08:00
4ad16dd91f feat(stargalaxy): add container with data loading, decoration, podium + scattered orchestration 2026-06-10 15:33:56 +08:00
bfb15c57e5 refactor(stargalaxy): remove dead ORBIT_KEYFRAMES import with explanatory comment 2026-06-10 15:31:24 +08:00
04609adb5e feat(stargalaxy): add ScatteredRanks with 9 ring items + 36s orbit animation 2026-06-10 15:26:12 +08:00
2bd5733ca0 feat(stargalaxy): add PodiumCard for TOP 1-3 with gold/silver/bronze labels 2026-06-10 15:20:18 +08:00
a870943dc1 feat(stargalaxy): add ring position config and orbit keyframes 2026-06-10 15:14:23 +08:00