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