Files
junhong_cmp_fiber/openspec/changes/add-direct-exchange-flow/specs/personal-customer/spec.md
Break 27fba9160c
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 56s
提案
2026-06-04 09:39:20 +08:00

2.5 KiB

MODIFIED Requirements

Requirement: 换货迁移时更新个人客户资产绑定

系统 SHALL 在换货完成成功后,更新 PersonalCustomerDevice 的资产标识绑定关系:

  • 若旧资产存在客户绑定,绑定中的 virtual_no MUST 更新为新资产资产绑定键
  • 更新后客户对资产访问连续,不需重新登录即可看到新资产

该规则 MUST 同时适用于:

  • shipping 流程完成换货
  • direct 流程创建即完成

该规则 MUST NOT 仅依赖 migrate_data=true 才执行。

Scenario: 不迁移也要切换客户绑定

  • WHEN 旧资产存在个人客户绑定且执行了 migrate_data=false 的换货完成
  • THEN 系统 MUST 仍然将绑定记录的资产标识字段更新为新资产资产绑定键

Scenario: 迁移后客户绑定跟随新资产

  • WHEN 旧资产存在个人客户绑定且执行了 migrate_data=true
  • THEN 系统 MUST 将绑定记录的资产标识字段更新为新资产资产绑定键

Requirement: 换货完成前的绑定承接校验

系统 SHALL 在换货完成前校验新资产是否可以承接现有个人客户绑定。

若旧资产存在 PersonalCustomerDevice 绑定,则系统 MUST 满足:

  • 新资产存在可写入绑定的资产绑定键
  • IoT 卡资产绑定键 MUST 使用新卡 virtual_no
  • 设备资产绑定键 MUST 优先使用新设备 virtual_no,为空时 MAY 使用新设备 imei,与现有登录绑定规则保持一致
  • 新资产绑定键当前不得存在 status=1PersonalCustomerDevice 绑定记录
  • 已禁用或软删除绑定记录不视为当前绑定冲突

若任一条件不满足,系统 MUST 拒绝完成换货并回滚整个事务。

Scenario: 新资产无法承接绑定时回滚

  • WHEN 旧资产存在客户绑定,但新资产缺少可承接的资产绑定键
  • THEN 系统 MUST 拒绝完成换货
  • AND MUST 保持换货单未完成

Scenario: 新资产已有有效客户绑定时回滚

  • WHEN 旧资产存在客户绑定,但新资产绑定键已经存在 status=1 的客户绑定记录
  • THEN 系统 MUST 拒绝完成换货
  • AND MUST 回滚整个完成事务

Requirement: 转新时清除个人客户绑定

系统 SHALL 在 H7 转新时清除该资产在 PersonalCustomerDevice 中的绑定关系,避免旧客户继续访问新代际资产。

Scenario: 转新后旧客户需重新绑定

  • WHEN 资产转新完成
  • THEN 系统 MUST 删除或失效对应客户绑定,使旧客户再次访问时触发重新绑定流程