# 02 — 后续套餐授权的原子兼容契约

**What to build:** 后续套餐管理接口保留已交付的 `packages:[{package_id,cost_price,remove}]` 契约，以 `remove=true` 表示软删除，其他项按当前授权状态新增或改价。批量请求保持事务原子性，调价和移除遇到下级授权等前置条件时整批拒绝；成功调价记录价格历史，权限、并发和幂等行为不会泄露底层唯一约束错误。

**适用架构通道:** Application 事务脚本。完整业务边界为“系列授权下套餐授权的后续批量命令”，包括命令解析、批量加载、权限与业务校验、条件写入、价格历史及审计；不迁移现有整店/系列批量调价，不自动回收下级授权，也不修改订单、套餐使用或零售价。

**Blocked by:** None — can start immediately.

**Status:** ready-for-agent

- [ ] 后续管理请求继续接受 `packages[].remove`，套餐数量限制为 1 至 100 且 ID 唯一；不得要求必填顶层 `operation_type`，不得改变既有响应结构。
- [ ] 新增、改价和 `remove=true` 软删除均在一个 PostgreSQL 事务内完成校验与写入，正确处理权限、赠送套餐、跨系列、绝对成本价和下级依赖。
- [ ] 集成测试覆盖 `remove` 兼容、并发新增、全量回滚、价格历史、错误码和越权安全语义。
