Files
junhong_cmp_fiber/openspec/changes/scope-expiry-reminder-to-current-asset/tasks.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

28 lines
2.7 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.
## 1. 停用个人客户预发布
- [x] 1.1 `internal/infrastructure/packageexpiry/reminder_publisher.go` 的 `Publish` 去掉给绑定客户批量写个人通知的循环,保留 `appendShopNotification`。
## 2. 进入资产时提醒
- [x] 2.1 `pkg/constants/redis.go` 新增去重键(客户 ID + 资产标识 + 上海日期)及 TTL 计算(当天结束加缓冲)。
- [x] 2.2 资产信息服务按当前资产复用 `packageexpiry` 最终到期推算;命中窗口时依次:检查键 → 经 Outbox 写 `package.expiring` 个人通知(事件号 `pex:资产:到期日:剩余天数:客户`)→ `SET NX` → 抢到才返回字段;写通知失败不占键不返回;Redis 不可用按未提醒处理。
- [x] 2.3 资产信息响应 DTO 新增临期提醒字段(剩余天数、到期时间、等级),更新接口说明。
## 3. 通知中心过滤
- [x] 3.1 个人通知列表、未读数与“全部已读”对 `type = package.expiring AND ref_type = asset` 只保留 `ref_key` 等于当前资产标识(卡 ICCID;设备虚拟号,空则 IMEI)的记录,其他类型不变,入参不变。
## 4. 文档与测试环境验证
- [x] 4.1 `gofmt`、`go build ./cmd/api ./cmd/worker`、`go run cmd/gendocs/main.go`。
- [x] 4.2 按 ENG-TEST-001(测试库 `junhong_cmp_test`、Redis DB 6)构造同一客户绑定两个临期资产:进入 A 只返回 A 的字段并新增 A 的通知,通知中心与未读数只含 A;在 A 中“全部已读”后 B 的临期通知仍未读;同一天再次进入 A 不返回字段、不新增通知;清理键模拟第二天后再次提醒;客户 B 进入 A 独立提醒一次;非临期通知不受过滤。
- [x] 4.3 手动触发每日扫描:不再给个人客户写临期通知,店铺通知照常。
- [ ] 4.4 运行 `openspec validate --all` 与 `./scripts/context-health.sh`。
## 5. 临期个人通知写入即已读
- [x] 5.1 `internal/application/notification/delivery.go`:直发载荷新增可选 `mark_read`(默认 false);`deliverOne` 标记为 true 时写 `is_read=true`、`read_at=now`;审计 `after_data` 按实际已读状态记录。
- [x] 5.2 `internal/infrastructure/packageexpiry/reminder_publisher.go` 的 `appendNotification` 设置 `mark_read=true`;`appendShopNotification` 不变。
- [ ] 5.3 测试环境验证(AGENTS.md 规定自动化测试 N/A,不写单元测试):临期个人通知以已读创建;换货发货、自动续费等直发通知仍为未读;店铺临期通知仍为未读。
- [ ] 5.4 `gofmt`、`go build ./cmd/api ./cmd/worker`、`go run cmd/gendocs/main.go`(已通过,接口文档无变化);部署后测试环境验证:进入卡 89860624590014594318(已造好临期数据,10-20 到期)后,新通知 `is_read=true`,个人未读数不变。