2.7 KiB
2.7 KiB
05 — C 端创建订单按写时事实完成下架续费
What to build: 当前个人客户可以继续使用现有创建订单接口,为自己当前持有资产购买正常在售套餐,或续费同资产、当前世代、同套餐的历史下架套餐。下单始终按最新归属、渠道、历史和价格重新判定,展示后的任何事实变化都会安全拒绝过期资格。
Blocked by: 01 — 建立统一套餐可售决策与真实历史资格
Status: ready-for-agent
架构通道: 主通道为复杂写,现有订单 Application/Service 调用 Domain Policy;旧 Service 仅作为当前完整用例的迁移门面。
完整业务边界: 本票收口 POST /api/c/v1/orders/create 的个人客户套餐购买写用例,将下架续费纳入现有订单、支付、实名、幂等和套餐组合流程。明确不新增续费 API、续费订单类型、资格字段、资格缓存或第二套幂等机制,不迁移未触碰的后台订单、自动购包、支付回调、退款和佣金流程。
- 请求继续只接受资产标识、套餐 ID 列表及现有支付相关字段,不新增或信任
renewal、客户 ID、资产类型、店铺、世代、上下架状态或价格字段。 - 写入前重新解析当前登录客户、资产当前有效绑定、资产类型与 ID、当前 generation、当前销售渠道、套餐、渠道分配、真实历史资格和当前价格,不信任查询接口缓存结果。
- 每一个请求套餐都调用统一策略;正常在售套餐按
normal继续购买,下架套餐只有个人客户本人在对应资产上得到renew_only时通过。 - 下架续费仍完整执行系列、赠送套餐、主套餐/加油包组合、实名顺序、强充、支付、订单状态和现有创建防重规则,不因历史资格绕过任何既有不变量。
- 平台自营按当前套餐有效零售价创建价格快照;代理渠道按当前有效分配零售价创建快照并校验不低于授权成本,不读取历史使用记录或历史订单价格。
- 套餐展示后被禁用或下架、代理分配被禁用/删除、资产解绑或转手、generation 变化、历史退款/失效及价格变为非法时,创建订单按最新事实拒绝并返回统一中文业务错误。
- 可售结果向后续订单编排保留
purchase_mode、资产世代、套餐、销售渠道和命中历史资格的安全摘要,供成功审计接缝消费,但不向请求方暴露敏感历史明细。 - 单元及 HTTP/PostgreSQL 集成测试覆盖正常新购、平台与代理下架续费、伪造续费字段、展示后事实变化、当前价格、组合规则、实名、并发重复提交和事务失败不留部分订单。