Files
junhong_cmp_fiber/.scratch/ur43-series-package-bulk-authorization/issues/02-atomic-package-commands.md
break 5c4d17e9fc
Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
收口七月卡状态回调与系列授权兼容契约
完成运营商实名回调、业务事件观测序列与受控配置装配,同时恢复 UR43 已交付的 packages[].remove 字段及旧响应兼容,统一更新 OpenSpec、OpenAPI 和交付文档。

Constraint: 七月测试环境里程碑不新增或运行自动化测试

Rejected: 以必填 operation_type 替换 packages[].remove | 会破坏已交付前端契约

Confidence: high

Scope-risk: broad

Directive: 后续修改系列套餐管理接口必须保持 packages[].remove 和 ShopSeriesGrantResponse 兼容

Tested: go run ./cmd/gendocs;go build -buildvcs=false ./...;openspec validate complete-july-iteration-test-release --strict;git diff --check

Not-tested: 按本 Change 约定未运行 go test,真实运营商与 Gateway 联调延期
2026-07-24 19:59:24 +08:00

1.3 KiB

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 兼容、并发新增、全量回滚、价格历史、错误码和越权安全语义。