Files
huang 61155952a7
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 6m56s
feat: 新增代理分配套餐上架状态(shelf_status)功能
- 新增数据库迁移:为 shop_package_allocation 表添加 shelf_status 字段
- 更新模型/DTO:ShopPackageAllocation 增加 ShelfStatus 字段及相关枚举
- 更新套餐分配 Service:支持上架/下架状态管理逻辑
- 更新套餐 Store/Service:根据 shelf_status 过滤可售套餐
- 更新购买验证 Service:引入上架状态校验逻辑
- 归档 OpenSpec 变更:2026-03-02-agent-allocation-shelf-status
- 同步更新主规范文档:allocation-shelf-status、package-management、purchase-validation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-02 15:38:54 +08:00

32 lines
2.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## Why
套餐分配给代理后,代理无法独立控制自己的客户侧上下架状态:代理调用上下架接口会直接修改平台级字段 `tb_package.shelf_status`,导致整个平台的该套餐都被下架。需要在分配记录层引入独立的上下架字段,并确立角色上下文决定操作目标的设计原则,为未来 SaaS 化奠定基础。
## What Changes
- **新增** `tb_shop_package_allocation.shelf_status` 字段1-上架, 2-下架),分配时默认上架
- **修改** `PATCH /api/admin/packages/:id/shelf` 接口行为:平台/超管修改 `tb_package.shelf_status`,代理修改自己的 `tb_shop_package_allocation.shelf_status`
- **修改** 代理查询套餐列表/详情时,`shelf_status` 字段返回各自分配记录的值(而非平台级值)
- **修改** 购买校验逻辑:代理场景下检查卖家代理的 `allocation.shelf_status`,不再检查 `package.shelf_status`
- **修复** `PUT /api/admin/shop-package-allocations/:id/status` 接口:加入所有者校验(只有分配者才能修改该条记录的 status
## Capabilities
### New Capabilities
- `allocation-shelf-status`代理分配记录的独立上下架能力包括字段定义、API 行为分流(按角色路由到不同数据层)、读取时的展示逻辑
### Modified Capabilities
- `package-management``shelf_status` 上下架操作的角色分流行为变更(平台→改套餐本身,代理→改分配记录)
- `agent-available-packages`:代理查询套餐时 `shelf_status` 字段语义变更(返回各自分配记录的值)
- `package-purchase-validation`:购买校验逻辑变更(代理场景改为检查 `allocation.shelf_status`,平台场景保持检查 `package.shelf_status`
## Impact
- **数据库迁移**`tb_shop_package_allocation` 新增 `shelf_status` 字段
- **API 行为变更**`PATCH /packages/:id/shelf` 同一接口因角色不同操作不同数据层
- **购买链路**`purchase_validation` 服务逻辑调整,需结合购买场景判断检查哪一层的 shelf_status
- **列表查询**`PackageStore.List()` 和响应构建逻辑需感知代理角色并返回正确的 shelf_status
- **权限修复**`ShopPackageAllocationService.UpdateStatus()` 需加 allocator 归属校验