Files
one-pipe-system/openspec/changes/update-package-allocation-expiry-base-override/proposal.md
luo 68aa03b538
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 9m23s
feat: 套餐分配生效条件选择
2026-07-22 14:21:15 +08:00

1.9 KiB

Change: 支持套餐分配生效条件覆盖

Why

代理套餐分配目前只能使用套餐本身的默认生效条件,运营无法针对某个店铺套餐授权选择购买即生效或实名即生效。分配页也无法区分套餐默认值、分配覆盖值和最终实际生效值,容易误解后续订单的生效规则。

What Changes

  • 在套餐授权/分配和已分配套餐编辑入口增加“生效条件”单选:跟随套餐默认、购买即生效、实名即生效。
  • 新建分配时调用 POST /api/admin/shop-package-allocations,明确传递 expiry_base_override;选择“跟随套餐默认”时 MUST 显式传递 null,不得省略字段。
  • 已分配套餐修改生效条件时调用 PATCH /api/admin/shop-package-allocations/{id}/expiry-base,请求体为 expiry_base_override:null|from_purchase|from_realname
  • 在分配详情、编辑弹框和代理系列授权套餐列表展示后端返回的默认生效条件、覆盖生效条件和最终生效条件的中文名称。
  • 修改弹框提示“仅影响后续新订单,不影响已购买套餐”。
  • 前端不根据默认值和覆盖值自行计算最终生效条件,直接使用后端返回的 effective_expiry_base 及其名称字段。

Impact

  • Affected specs:
    • shop-package-allocation
    • shop-series-grant-packages
  • Affected code:
    • src/types/api/packageManagement.ts
    • 新增或扩展 src/api/modules 中的店铺套餐分配服务
    • src/views/package-management/series-grants/index.vue
    • src/views/package-management/series-grants/packages.vue
    • src/views/package-management/series-grants/detail.vue
  • API contracts:
    • POST /api/admin/shop-package-allocations
    • PATCH /api/admin/shop-package-allocations/{id}/expiry-base
  • Out of scope:
    • 已购买套餐或历史订单的生效条件迁移
    • 前端根据分配字段推导或覆盖实际生效条件