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

19 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.
# 02 — 编辑已有分配的生效条件覆盖
**What to build:** 运营人员可以修改已有套餐分配的生效条件覆盖,或通过显式 JSON `null` 恢复跟随套餐默认。重复设置相同值按幂等成功处理;修改完成后重新读取并展示后端计算的有效值,同时明确告知该操作只影响后续购买,不改变任何已购买套餐。
**Blocked by:** `.scratch/ur55-package-expiry-base/issues/01-create-allocation-expiry-base-override.md` — 01 — 创建套餐分配时固化生效条件选择
**Status:** ready-for-agent
- [ ] 架构主通道为简单写,读取投影使用 Query 或现有只读门面;完整收口单条分配覆盖值修改,不扩展为批量修改或迁移套餐默认配置接口。
- [ ] 提供修改单条套餐分配生效条件覆盖的后台 PATCH 接口,请求必须包含覆盖字段,并能区分字段缺失与显式 JSON `null`
- [ ] 接口仅接受 `null``from_purchase``from_activation``null` 恢复跟随默认,非法值和字段缺失统一返回参数错误。
- [ ] 分配不存在、已软删除或越权时遵守统一防越权错误语义,不向调用方区分无权限与资源不存在。
- [ ] 重复提交当前值按幂等成功处理,不修改已有套餐使用记录,也不产生与实际变更不符的业务副作用。
- [ ] 修改成功后响应或重新查询结果包含默认值、覆盖值、最终有效值及其中文名称,最终值始终由后端计算。
- [ ] 敏感配置变更写入统一审计,记录操作人、变更前后覆盖值及分配标识,但不把底层错误或无权资源信息暴露给客户端。
- [ ] 前端编辑区域显示“仅影响后续新订单,不影响已购买套餐”,成功后重新拉取分配详情,不在本地推导最终有效值。
- [ ] HTTP 集成测试覆盖两个覆盖值、显式恢复默认、字段缺失、非法值、不存在、软删除、越权、重复 PATCH 幂等及已购买记录不变。