4.0 KiB
4.0 KiB
ADDED Requirements
Requirement: 换货新资产手机号绑定冲突提示
后台创建换货和确认完成 SHALL 在错误码 1202 时用一次文本弹窗原样展示后端 msg。1202 同时用于已换货等业务拒绝,只有错误响应带有效字符串 data.phone 且用户有原查看权限时 MUST 提供解除关联跳转;处理 MUST 覆盖业务失败与 HTTP 错误,不自动解绑或扩大权限。
Scenario: 1202 返回手机号
- WHEN
POST /api/admin/exchanges或POST /api/admin/exchanges/{id}/complete返回code=1202且含data.phone - THEN 页面 MUST 原样展示后端
msg,不得拼接手机号或替换为固定文案 - AND 有原查看权限且已知新资产时 MUST 提供「前往手机号资产关联」按钮并带参跳转
- AND 默认错误提示与该弹窗 MUST NOT 重复展示
- AND 手机号 MUST 只用于用户主动发起的路由参数,不额外写日志或本地存储
- AND 前端 MUST NOT 自动调用单条、批量或 CSV 解绑接口
Scenario: 号码缺失或无管理权限
- WHEN 1202 响应不含有效号码,或用户没有关联管理入口权限
- THEN 页面 MUST 使用仅有「知道了」的提示弹窗原样展示
msg,不展示跳转/解绑按钮 - AND MUST 不根据选中资产
associated_phones推断该错误为手机号绑定冲突
Scenario: 已完成过换货的 1202
- WHEN 接口返回
code=1202,data=null,msg=该资产已完成过换货,如需再次换货请使用换货后的新资产 - THEN 页面 MUST 显示该原始
msg和「知道了」,不显示「前往手机号资产关联」
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: 换货冲突跳转携带新资产与手机号
收到带有效 data.phone 的 1202 后,用户点击「前往手机号资产关联」时,后台 SHALL 通过 asset_identifier 和 phone 路由参数传递本次提交的新资产标识与错误响应手机号。创建换货 MUST 使用提交时选中的新卡 ICCID 或设备虚拟号;确认完成 MUST 使用换货单的新资产标识,不得带入旧资产。手机号缺失时 MUST 不从 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 不猜测缺失值或自动执行解绑