Files
junhong_cmp_fiber/.scratch/ur55-package-expiry-base/issues/01-create-allocation-expiry-base-override.md
2026-07-23 12:52:00 +09:00

2.0 KiB
Raw Blame History

01 — 创建套餐分配时固化生效条件选择

What to build: 运营人员通过系列授权、后续追加授权或批量套餐分配创建代理套餐分配时,可以显式选择跟随套餐默认、购买即生效或实名即生效。系统为本次创建的每条分配保存相同选择,并在列表、详情和操作结果中返回套餐默认值、分配覆盖值及最终有效值的中文名称。任一记录校验或写入失败时,整次操作不留下部分分配。

Blocked by: None — can start immediately

Status: completed

  • 架构主通道为简单写,读取投影使用 Query 或现有只读门面;完整收口创建分配时解析和保存覆盖值的业务边界,不迁移套餐管理 CRUD、价格、佣金或历史购买记录。
  • 数据库迁移为套餐分配增加可空的生效条件覆盖字段,NULL 明确表示跟随套餐当前默认值,并包含中文字段注释及可逆的向下迁移。
  • 系列首次授权、系列后续追加套餐和批量套餐分配均要求显式提交同一个覆盖选择,并写入本次创建的每条分配;跟随默认必须提交 JSON null,不能依靠省略字段表达。
  • 仅接受 nullfrom_purchasefrom_activation非法值或字段缺失统一返回参数错误DTO 枚举说明与套餐常量原文一致。
  • 分配列表、详情及创建结果返回默认值、覆盖值、最终有效值及其中文名称;最终有效值由后端计算,前端不得自行合并。
  • 任一套餐不存在、跨系列、越权、不可授权或写入失败时整批回滚,不产生部分系列授权、套餐分配或成功副作用。
  • 后台分配表单提供“跟随套餐默认、购买即生效、实名即生效”三个选项,并正确发送显式 null
  • HTTP 集成测试覆盖全部创建入口、三个选择、整批一致性、字段缺失、非法枚举、越权及事务回滚;前端验收列表和详情的默认值、覆盖值、最终值显示一致。