Files
junhong_cmp_fiber/openspec/changes/scope-expiry-reminder-to-current-asset/proposal.md
邹进 713045a657
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 12m9s
fix: 第1批 M9 H5 进入资产的临期个人通知写入即已读
H5 进入资产时已同步弹窗展示临期提醒,通知中心再记未读会重复提醒;
通知按剩余天数每天新增一条,保持未读会持续累积红点。
直发通知载荷新增可选 mark_read,仅临期个人通知设置,其他直发通知与店铺临期通知仍为未读。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:45:20 +09:00

2.5 KiB
Raw Blame History

Why

套餐临期提醒发给所有绑定过该资产的客户(reminder_publisher.go 的 loadRecipients),个人通知列表又没有资产过滤,客户在任一资产页都会看到名下全部资产的临期提醒(运营清单 26)。业务已确认改为按资产提醒:哪个资产被扫码进入就提醒哪个,同一客户、同一资产、同一天只提醒一次。依据为《第1批-8-9月迭代缺陷修复技术方案》第 4 节(M9)。

What Changes

  • H5 资产信息接口 GET /api/c/v1/asset/info 在当前资产处于临期窗口(剩余 0~15 天)且当天未提醒过时,返回临期提醒字段(剩余天数、到期时间、等级),并为“当前客户、当前资产”写一条 package.expiring 个人通知;同一客户、同一资产、同一北京时间日期只提醒一次。
  • BREAKING 每日扫描不再给个人客户写临期通知;店铺通知不变。
  • BREAKING 个人通知列表、未读数与“全部已读”中,临期提醒只处理当前资产的;其他类型通知不受影响,接口入参不变。
  • H5 进入资产时写入的个人客户临期通知写入即已读(is_read=true,read_at 为写入时间),不计入未读数:同一时刻 H5 已经弹窗展示过,不应该再在通知中心产生红点;而且通知每天按新的剩余天数生成一条,保持未读的话会不断累积。其他个人直发通知(换货发货、自动续费)和店铺临期通知仍然是未读。

Capabilities

New Capabilities

无。

Modified Capabilities

  • notification-delivery:每日临期扫描只通知店铺接收人;新增 H5 进入资产时的临期提醒;个人通知中心临期提醒按当前资产过滤。

Impact

  • 代码:internal/infrastructure/packageexpiry/reminder_publisher.go(去掉个人客户批量写入)、H5 资产信息 Handler 与服务(复用 packageexpiry 最终到期推算、写 Outbox 个人通知)、个人通知列表与未读数查询、pkg/constants/redis.go(去重键)、资产信息响应 DTO、internal/application/notification/delivery.go(直发载荷新增可选的写入即已读标记,deliverOne 按标记写入,审计 after_data 按实际已读状态记录)。
  • 接口:GET /api/c/v1/asset/info 新增字段;个人通知列表与未读数结果范围变化;重新生成接口文档。
  • 依赖:Redis(去重键);Outbox 按 event_id 冲突忽略写入(internal/infrastructure/messaging/outbox/repository.go)。
  • 无数据库迁移。