Files
junhong_cmp_fiber/openspec/changes/archive/2026-09-17-add-asset-wallet-auto-renewal/proposal.md
break d52be16802
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 10m15s
feat(资产钱包自动续费): 新增全局配置、每日扫描续购与可靠复机
- 新增单行配置表 tb_asset_auto_renewal_config 与尝试记录表 tb_asset_auto_renewal_attempt(迁移 000229/000230)
- 每日按上海自然日扫描,窗口内以同一资产钱包可用余额续购当前主套餐,资金/订单/套餐/审计同一事务闭合
- 唯一键保证每资产每日至多一次尝试,占位中断由后续扫描收敛,当日不重试
- 四类失败原因向客户与店铺各投递每日至多一条站内通知,并注册通知类型与个人客户白名单
- 续费成功后按条件经 Outbox 可靠投递复机,新增恢复扫描只查询回填,不使用即发即弃调用
- 配置读写仅超级管理员与平台账号,保存记录操作者、前后值快照并登记统一审计
- tasks 7.1–7.15 全部验证通过(本机隔离 PostgreSQL/Redis,零外部渠道调用)
2026-09-17 16:39:26 +08:00

2.8 KiB
Raw Blame History

Scope

  • 迭代编号:AUG26-010
  • 权威口径:docs/product/2026-08-迭代-PRD-讨论稿.md §2.11111.md §16PRD-08-012仅用于追溯未被 §2.11 确认的「不停机」、补偿/退款与异常记录页不实施。

Why

客户容易遗漏套餐续费,套餐到期会中断服务;资产钱包余额充足时应在最终到期前自动续购当前有效主套餐,且不得与手动续购、钱包资金事实或运营商停复机混为同一个动作。

What Changes

  • 新增全局单例自动续费配置:总开关、适用全部或指定主套餐、到期前统一天数;仅超级管理员与平台账号可维护,保存记录操作者与前后值快照。
  • 每日按上海自然日扫描独立卡与设备,对存在当前有效主套餐、最终到期进入窗口、不存在待生效主套餐且不存在在途人工订单的资产,以执行时当前渠道可售续费价从同一资产钱包可用余额续购一个周期的同一套餐商品。
  • 每项资产每天至多一次尝试(含失败与跳过),由尝试记录唯一键保证;尝试记录保留资金、订单、复机与配置快照字段,并收敛中断留下的非终态记录。
  • 失败按四类原因(余额不足、不可续费、订单失败、复机失败)向当前个人客户与资产所属店铺当时有效业务员各投递每日至多一条站内通知;业务员不存在不阻断续费与尝试记录。
  • 续费成功后仅在资产处于可恢复停机且运营商状态不是风险停机或已销户时投递可靠复机任务;复机失败或未知保存结果并走既有恢复,不回滚续费事实。
  • 手动续购优先:执行前重新读取资格事实,人工已完成续购或存在在途人工订单时跳过。

非目标

  • 不实现「有余额就不停机」的特殊逻辑与任何运行时开关,不改变既有停机、复机判据。
  • 不建补偿或退款路径;不做自动续费记录页与异常记录页。
  • 不叠加多个续购周期(一个尝试只产生一个周期)。
  • 不做当日重试(当天失败次日再评估),不按流量阈值或流量即将耗尽触发。
  • 配置不按店铺、企业或个人客户分范围。
  • 不改动人工路径的 Redis 锁命名空间,不接线未使用的资产钱包锁,不重构既有充值后自动购包实现与人工锁路径。

Capabilities

New Capabilities

  • asset-auto-renewal: 资产钱包自动续费。

Modified Capabilities

  • 无。

Impact

影响套餐购买校验与价格策略、套餐最终到期推算、资产钱包与钱包流水、订单与支付、异步任务与调度、Outbox、站内通知类型注册与个人客户可见性、统一审计注册、运营商复机、路由与 OpenAPI 文档,以及新增两处 Schema单行配置表与尝试记录表