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

18 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 01 — 创建套餐分配时固化生效条件选择
**What to build:** 运营人员通过系列授权、后续追加授权或批量套餐分配创建代理套餐分配时,可以显式选择跟随套餐默认、购买即生效或实名即生效。系统为本次创建的每条分配保存相同选择,并在列表、详情和操作结果中返回套餐默认值、分配覆盖值及最终有效值的中文名称。任一记录校验或写入失败时,整次操作不留下部分分配。
**Blocked by:** None — can start immediately
**Status:** ready-for-agent
- [ ] 架构主通道为简单写,读取投影使用 Query 或现有只读门面;完整收口创建分配时解析和保存覆盖值的业务边界,不迁移套餐管理 CRUD、价格、佣金或历史购买记录。
- [ ] 数据库迁移为套餐分配增加可空的生效条件覆盖字段,`NULL` 明确表示跟随套餐当前默认值,并包含中文字段注释及可逆的向下迁移。
- [ ] 系列首次授权、系列后续追加套餐和批量套餐分配均要求显式提交同一个覆盖选择,并写入本次创建的每条分配;跟随默认必须提交 JSON `null`,不能依靠省略字段表达。
- [ ] 仅接受 `null``from_purchase``from_activation`非法值或字段缺失统一返回参数错误DTO 枚举说明与套餐常量原文一致。
- [ ] 分配列表、详情及创建结果返回默认值、覆盖值、最终有效值及其中文名称;最终有效值由后端计算,前端不得自行合并。
- [ ] 任一套餐不存在、跨系列、越权、不可授权或写入失败时整批回滚,不产生部分系列授权、套餐分配或成功副作用。
- [ ] 后台分配表单提供“跟随套餐默认、购买即生效、实名即生效”三个选项,并正确发送显式 `null`
- [ ] HTTP 集成测试覆盖全部创建入口、三个选择、整批一致性、字段缺失、非法枚举、越权及事务回滚;前端验收列表和详情的默认值、覆盖值、最终值显示一致。