2.7 KiB
2.7 KiB
MODIFIED Requirements
Requirement: 资产表新增代际字段
系统 MUST 在资产主表新增 generation int NOT NULL DEFAULT 1 字段,覆盖 IotCard 与 Device。
Scenario: 新资产默认代际为 1
- WHEN 创建新的 IoT 卡或设备
- THEN 系统 MUST 将
generation初始化为1
Requirement: 关联业务表新增代际字段
系统 MUST 在以下关联业务表新增 generation int NOT NULL DEFAULT 1 字段:Order、PackageUsage、AssetRechargeRecord。
Scenario: 新关联记录默认代际为 1
- WHEN 创建订单、套餐使用记录或资产充值记录
- THEN 系统 MUST 将记录的
generation默认为1
Requirement: 写时快照代际规则
系统 MUST 在创建关联记录时执行代际写时快照:从当前资产(IoT 卡/设备)的 generation 复制到新建的 Order、PackageUsage、AssetRechargeRecord 记录。
Scenario: 创建订单时复制资产代际
- WHEN 某资产当前
generation=3,并基于该资产创建订单 - THEN 该订单记录的
generationMUST 写入为3
Requirement: 查询过滤规则
系统 MUST 支持客户端按 generation 过滤历史数据;后台管理侧 MUST 不默认按 generation 过滤。
Scenario: 客户端按代际查看历史
- WHEN 客户端请求携带指定
generation - THEN 系统 MUST 仅返回该代际的数据(在后续提案中实现)
Scenario: 后台查询不按代际裁剪
- WHEN 管理端查询订单或充值记录且未显式指定
generation - THEN 系统 MUST 返回全部代际数据
Requirement: 钱包流水不引入代际字段
系统 MUST NOT 在钱包流水相关表新增 generation 字段,因为钱包流水已通过 wallet_id 天然隔离。
Scenario: 钱包流水按钱包隔离
- WHEN 查询某资产钱包流水
- THEN 系统 MUST 仅依赖
wallet_id完成数据隔离,不新增generation参与过滤
Requirement: 换货与转新的代际边界
系统 SHALL 将换货链与代际链视为两条不同的业务语义链。
系统 MUST 满足:
- 换货完成时,旧资产
generationMUST NOT 变化 - 换货完成时,新资产
generationMUST NOT 变化 - 仅在
renew时,旧资产generation才允许递增 - 新资产来源追溯 MUST 通过
ExchangeOrder.old_* / new_*表达,而不是通过generation推导
Scenario: 换货完成不改变旧资产世代
- WHEN 后台完成一次换货
- THEN 旧资产
generationMUST 保持原值不变
Scenario: 转新时世代递增
- WHEN 后台执行
renew - THEN 系统 MUST 将旧资产
generation + 1