68 lines
4.0 KiB
Markdown
68 lines
4.0 KiB
Markdown
## 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 不猜测缺失值或自动执行解绑
|