Files
one-pipe-system/openspec/changes/add-asset-wallet-auto-renewal-config/proposal.md
luo 68d8f769d1
Some checks failed
构建并部署前端到测试环境 / build-and-deploy (push) Has been cancelled
fix: some
2026-09-17 18:37:20 +08:00

3.3 KiB
Raw Blame History

Change: 新增资产钱包自动续费配置(后台查询/保存 + 自动续费失败通知适配)

Why

根据 docs/产品迭代8月份/资产钱包.md。后端测试环境(https://cmp-api.boss160.cnAuthorization: Bearer <token>)已提供资产钱包自动续费全局配置能力,仅有 2 个后台接口H5 侧零新增:

  • 查询资产钱包自动续费配置:GET /api/admin/asset-auto-renewal-config
  • 保存资产钱包自动续费配置:PUT /api/admin/asset-auto-renewal-config

后台需要提供配置页面承载总开关、适用范围、指定主套餐、到期前天数等配置;同时新增通知类型 asset.auto_renewal.failed 会复用既有通知接口产生新数据,需要适配展示与跳转。

What Changes

  • 新增能力 asset-wallet-auto-renewal
    • 配置读取:GET /api/admin/asset-auto-renewal-config,返回唯一一份全局配置的 enabled+enabled_namescope+scope_namepackage_idsdays_before_expiryconfig_versionupdaterupdated_at
    • 配置保存:PUT /api/admin/asset-auto-renewal-config
      • 请求体 { enabled(0/1必填), scope(all|specified必填), package_ids(uint[],仅 specified 时非空且只能选当前可售主套餐), days_before_expiry(190必填) }
      • 语义:单行配置、无新增/删除;保存即递增 config_version,记录操作者与前后值快照;配置变更只影响后续扫描,历史记录不重算。
    • 权限:仅超级管理员与平台账号可访问;其他身份(代理/企业/个人客户)403,提示「无权限操作该资源或资源不存在」,无权限与不存在不区分。
  • 通知适配(复用既有接口,不算新接口):
    • 后台站内通知:新增通知类型 asset.auto_renewal.failed(类别 expiry、级别 warning),接收人是业务员/店铺账号。走既有 GET /api/admin/notifications + GET /api/admin/notifications/{id}/target;确认 target_typeiot_card / device 在导航白名单;available=false 时只显示正文不跳转;计入未读数。
    • H5 个人客户通知:同一类型已由后端加入客户可见白名单,出现在既有 GET /api/c/v1/notificationsunread-count,客户侧只有文案(资产标识、套餐、原因、到期日),无跳转接口、无需新页面,本仓库无需改动。该类型属 expiry 类别,展示期以业务到期时间为准,套餐到期后从列表消失(既有类别行为)。
  • 明确不做(避免前端空等):无自动续费记录页/异常记录页接口、无尝试记录查询接口、无「有余额就不停机」开关、无 H5 客户侧新接口。

Impact

  • Affected specs:
    • asset-wallet-auto-renewal — 新增能力
  • Affected code:
    • src/types/api/assetWallet.ts(新增)
    • src/types/api/index.ts
    • src/api/modules/assetWallet.ts(新增)
    • src/api/modules/index.ts
    • src/views/settings/asset-wallet-auto-renewal/index.vue(新增)
    • src/router/routesAlias.ts
    • src/router/routes/asyncRoutes.ts
    • src/utils/business/notificationNavigation.ts(确认/补充 iot_carddevice 白名单)
    • src/components/core/layouts/art-notification/index.vue(确认 expiry 分类覆盖新类型)
    • src/locales/langs/zh.jsonsrc/locales/langs/en.json