Files
luo c31183205d
All checks were successful
构建并部署前端到测试环境 / deploy (push) Successful in 56s
fix: some
2026-10-13 17:21:46 +08:00

3.6 KiB
Raw Blame History

ADDED Requirements

Requirement: 换货新资产手机号绑定冲突提示

后台创建换货和确认完成 SHALL 在错误码 1202 时读取错误业务响应的 data.phone,用一次文本弹窗提示解除关联的后台入口;处理 MUST 覆盖正常 HTTP 承载的业务失败和 HTTP 错误响应,不自动解绑、预查扫码记录或扩大权限。

Scenario: 1202 返回手机号

  • WHEN POST /api/admin/exchanges 或 POST /api/admin/exchanges/{id}/complete 返回 code=1202 且含 data.phone
  • THEN 页面 MUST 提示「新资产已绑定手机号 {phone},请先到『手机号资产关联』解除后再提交」
  • AND 默认错误提示与该弹窗 MUST NOT 重复展示
  • AND 手机号 MUST 只作为文本渲染,不写日志或持久化
  • AND 前端 MUST NOT 自动调用单条、批量或 CSV 解绑接口

Scenario: 号码缺失或无管理权限

  • WHEN 1202 响应不含有效号码,或用户没有关联管理入口权限
  • THEN 页面 MUST 显示不含 undefined 的解除指引,无号码时不自行猜测
  • AND 无管理权限时 MUST 提示联系有权限人员,不暴露越权操作按钮

Requirement: 换货冲突后保持数据并允许手动重试

1202 失败后后台 SHALL 保留当前创建表单或后端原完成状态,解除关联后允许用户手动再次提交。非 1202 错误 MUST 保留原统一反馈及业务判断。

Scenario: 创建失败保留表单

  • WHEN 创建换货因 1202 被拒绝
  • THEN 当前新旧资产、原因、换货类型和其他表单值 MUST 保留
  • AND loading MUST 结束,取消提示 MUST NOT 被当作成功
  • AND 用户解除关联后 MUST 可手动再次提交原接口

Scenario: 确认完成被拒绝

  • WHEN 确认完成接口因 1202 被拒绝
  • THEN 页面 MUST 刷新原换货单,并保持后端「已发货待确认」状态
  • AND MUST NOT 乐观标记换货完成或清空当前单据
  • AND 用户解除关联后 MUST 可手动重新确认

Scenario: 其他错误及原流程不变

  • WHEN 换货接口返回非 1202 错误,包括退款拦截、权限失败、迁移失败或网络错误
  • THEN 页面 MUST 继续按原业务文案及统一错误分类反馈,不重复弹错
  • AND MUST NOT 新增依据扫码历史或退款状态的前置拒绝逻辑
  • AND 当前换货迁移字段、角色限制和接口成功行为 MUST 保持不变

Requirement: 换货冲突跳转携带新资产与手机号

收到 1202 后,用户点击「前往手机号资产关联」时,后台 SHALL 通过 asset_identifier 和 phone 路由查询参数传递本次提交的新资产标识及关联手机号。创建换货 MUST 使用提交时选中的新卡 ICCID 或设备虚拟号;确认完成 MUST 使用换货单的新资产标识,不得带入旧资产。手机号 MUST 优先使用错误响应 data.phone,缺失时可取新资产 associated_phones 的首个有效值。

Scenario: 创建换货选择新资产后被拒

  • WHEN 创建请求因新资产已有手机号关联返回 1202,用户选择跳转
  • THEN 路由 MUST 携带选中新资产的 asset_identifier 与对应 phone
  • AND 新旧资产同时存在手机号关联时 MUST NOT 使用旧资产标识或旧手机号
  • AND 长 ICCID MUST 保持字符串,不转为数值

Scenario: 确认完成失败后跳转

  • WHEN 确认完成返回 1202,用户选择跳转
  • THEN 路由 MUST 携带该换货单的 new_asset_identifier 和错误响应手机号
  • AND 参数不完整时 MUST 不猜测缺失值或自动执行解绑