# 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 集成测试覆盖正常新购、平台与代理下架续费、伪造续费字段、展示后事实变化、当前价格、组合规则、实名、并发重复提交和事务失败不留部分订单。
