Files
junhong_cmp_fiber/openspec/specs/agent-available-packages/spec.md
huang 1da680a790
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m18s
重构: 店铺套餐分配系统从加价模式改为返佣模式
主要变更:
- 重构分配模型:从加价模式(pricing_mode/pricing_value)改为返佣模式(base_commission + tier_commission)
- 删除独立的 my_package 接口,统一到 /api/admin/packages(通过数据权限自动过滤)
- 新增批量分配和批量调价功能,支持事务和性能优化
- 新增配置版本管理,订单创建时锁定返佣配置
- 新增成本价历史记录,支持审计和纠纷处理
- 新增统计缓存系统(Redis + 异步任务),优化梯度返佣计算性能
- 删除冗余的梯度佣金独立 CRUD 接口(合并到分配配置中)
- 归档 3 个已完成的 OpenSpec changes 并同步 8 个新 capabilities 到 main specs

技术细节:
- 数据库迁移:000026_refactor_shop_package_allocation
- 新增 Store:AllocationConfigStore, PriceHistoryStore, CommissionStatsStore
- 新增 Service:BatchAllocationService, BatchPricingService, CommissionStatsService
- 新增异步任务:统计更新、定时同步、周期归档
- 测试覆盖:批量操作集成测试、梯度佣金 CRUD 清理验证

影响:
- API 变更:删除 4 个梯度 CRUD 接口(POST/GET/PUT/DELETE /:id/tiers)
- API 新增:批量分配、批量调价接口
- 数据模型:重构 shop_series_allocation 表结构
- 性能优化:批量操作使用 CreateInBatches,统计使用 Redis 缓存

相关文档:
- openspec/changes/archive/2026-01-28-refactor-shop-package-allocation/
- openspec/specs/agent-available-packages/
- openspec/specs/allocation-config-versioning/
- 等 8 个新 capability specs
2026-01-28 17:11:55 +08:00

65 lines
2.8 KiB
Markdown
Raw 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.
# Capability: 代理可售套餐查询
## Purpose
本 capability 定义代理用户如何通过统一的套餐管理接口查询可售套餐,系统如何自动过滤并返回代理专属字段(成本价、返佣信息等)。
## Requirements
### Requirement: 代理查询可售套餐列表
系统 SHALL 通过统一的套餐列表接口(`/api/admin/packages`)为代理用户自动过滤可售套餐。代理用户查询时,系统 MUST 只返回被分配的套餐,响应 MUST 包含成本价、利润空间、返佣信息等代理专属字段。
#### Scenario: 代理查询自动过滤为已分配套餐
- **WHEN** 代理用户调用 `GET /api/admin/packages`
- **THEN** 系统通过 JOIN `tb_shop_package_allocation` 自动过滤,只返回该代理被分配的套餐
#### Scenario: 平台用户查询返回所有套餐
- **WHEN** 平台用户调用 `GET /api/admin/packages`
- **THEN** 系统返回所有套餐(不应用代理权限过滤)
#### Scenario: 响应包含代理专属字段
- **WHEN** 代理用户查询套餐列表
- **THEN** 每个套餐包含cost_price成本价、profit_margin利润空间、current_commission_rate当前返佣比例
#### Scenario: 响应包含梯度返佣信息
- **WHEN** 代理用户查询套餐列表,且该系列启用了梯度返佣
- **THEN** 响应包含 tier_infoenabled、current_sales本周期销量、current_tier_id当前档位、next_threshold下一档阈值、next_rate下一档返佣比例
#### Scenario: 按系列筛选
- **WHEN** 代理指定套餐系列 ID 筛选
- **THEN** 系统只返回该系列下已分配的套餐
#### Scenario: 只返回启用且上架的套餐
- **WHEN** 代理查询可售套餐
- **THEN** 系统只返回 status=1启用且 shelf_status=1上架的套餐
---
### Requirement: 代理查询可售套餐详情
系统 SHALL 通过统一的套餐详情接口(`/api/admin/packages/:id`)为代理用户返回套餐详细信息,包含完整的价格信息。
#### Scenario: 代理查询已分配套餐详情
- **WHEN** 代理查询一个已被分配的套餐详情
- **THEN** 系统返回套餐完整信息,包含:成本价、建议售价、利润空间、价格来源(系列分配)
#### Scenario: 代理查询未分配的套餐
- **WHEN** 代理查询一个未被分配的套餐详情
- **THEN** 系统返回 404 或权限错误(数据权限过滤生效)
---
### Requirement: 删除独立的 my-packages 接口
系统 SHALL 删除以下独立接口及相关代码:
- `GET /api/admin/my-packages`
- `GET /api/admin/my-packages/:id`
- `GET /api/admin/my-series-allocations`
功能 MUST 通过统一的 `/api/admin/packages` 接口实现,依赖数据权限自动过滤机制。
#### Scenario: 调用已删除的接口返回404
- **WHEN** 代理调用 `GET /api/admin/my-packages`
- **THEN** 系统返回 404 Not Found