CLAUDE.md
7.6 KB
-
fix(*): 修正 mini 登录接口名并统一 SDK 错误提取 · b98979af
mini 的验证码登录与密码登录均无法登录:接口名写错,后端返回 HTTP 200 + rescode 9999 + "No signature of method"(不是 404), 在 Network 面板里看起来是成功的,极易误判。 问题来源:从 uniapp-mp-template 移植时带进来一份手写的 packages/mini/src/api/auth.ts,接口名为 snake_case,后端没有这些方法。 而 @common/sdk 里的 createLoginService/createVerifyService 才是正确实现 (admin/web 一直在用)。login.vue 恰好横跨两者——图形验证码与发短信走 SDK(正常),登录走手写实现(失败)。 已用测试后端逐个验证: - loginWithPassword
✅ 返回"用户名或密码错误"(login_with_password❌ 方法不存在) - loginWithVerifyCode✅ 返回"验证码不正确"(login_with_mobile❌ 方法不存在) - sendVerifyCode✅ 返回"请输入正确的计算结果"(send_verifycode❌ 方法不存在) - bind_phone✅ 在 anonymous/system.wechat 下 - 图形验证码不是接口,是同步拼 URL(get_image_code❌ 方法不存在) 改动: - mini 的 api/auth.ts 改为纯委托 @common/sdk 服务,删除手写实现; 微信登录接 WechatLoginService,utils/sdk.ts 补 getWechatLoginService() - 新增 @common/sdk 的 resolveSdkError():SDK 业务错误 reject 的是纯字符串 (拦截器 Promise.reject(errorMsg)),网络错误才是对象,原先各包写的 err?.message || "失败" 会把后端真实原因吞成兜底文案。admin/web/mini 三个包的 auth-service 全部换上 - login.vue 不再直连 SDK:发短信走 services、验证码走 api,符合分层约定; 图形验证码校验失败时自动换一张 - CLAUDE.md 加两条硬规则,ARCHITECTURE.md 补「登录/验证码接口一律走 SDK 服务」对照表与「SDK 错误 reject 是字符串」说明 校验:pnpm lint 全绿,4 包 type-check 与 build:test 通过, mini 产物中确认为 camelCase 接口名 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>chunhong.mu committed