fix(web): #558 修复bind-contact接口字段名,对齐后端BindContactRequest #708
Reference in New Issue
Block a user
Delete Branch "fix/558-bind-contact-api-fields"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
问题
后端
BindContactRequest字段为email/email_code/phone/phone_code,前端之前传
target/value/code导致 400 错误("至少填写手机号或邮箱")。改动
api/auth.ts:BindContactRequest 字段对齐后端BindContactModal.tsx:提交时按 email/email_code 或 phone/phone_code 组装参数- 登录成功navigate断言增加{ replace: true } - 移除localStorage token断言(setAuth mock不真实存储) - 新增login_redirect跳转测试用例🚀 预览环境已部署
CI全绿,自动审批通过。
CI全绿,自动审批通过。
代码审查结果 - PR #708
⚠️ 问题(2个需要修改)
apps/web/src/components/auth/BindContactModal.tsx 第71-73行:未检查业务逻辑成功标志直接提示成功
BindContactResponse接口已更新为包含success: boolean字段,但代码在收到响应后直接执行message.success和onSuccess,未校验result.success。如果后端返回 HTTP 200 但业务处理失败(success: false),前端会错误地提示“绑定成功”并执行回调,误导用户。apps/web/src/components/auth/BindContactModal.tsx 第64-73行:缺少异常处理导致 Loading 状态无法复位
bindContact前设置了setLoading(true),但未使用try...catch或.finally()包裹异步请求。如果bindContact抛出异常(如网络错误、500错误),函数执行中断,setLoading(false)永远不会被执行,导致 Modal 按钮一直处于加载禁用状态。💡 建议(1个可选)
BindContactRequest接口所有字段均为可选,TypeScript 无法在编译期防止发送空对象{}或同时发送 email 和 phone 的非法请求。建议改用联合类型(如type BindContactRequest = ({ type: 'email', email: string, code: string }) | ({ type: 'phone', phone: string, code: string }))以确保数据结构的互斥性和完整性。✅ 格式检查通过 | ❌ 逻辑审查需修改 | ✅ 性能无明显问题
🤖 由 AI 代码审查机器人自动生成 | 2026-07-22 14:02:19 | 模型:
🗑️ 预览环境已清理
PR #708 已关闭或合并,对应的预览环境已被清理。