1.5 KiB
1.5 KiB
T586 — job-radar-followup-scan-and-notify
Status:
done
Milestone:M5
Kind:feat
Est. change:~180 lines
Goal
完成後系統應:radar_followup_scan 日排程掃到期 FollowUp → 轉 notified +發站內通知,落地 Contact 詳情。
Depends on
- T585
Inputs
- Spec:
../spec.md§4.7.2、§4.7.3、§5.4、§9.4(FU-01) - 既有:
cmd/worker/main.gomaintenance tick+redislock、internal/module/notification/**
Outputs
程式變更(預期路徑)
| 路徑 | 動作 | 說明 |
|---|---|---|
apps/backend/internal/module/job/domain/job.go |
edit | 新增 TemplateRadarFollowupScan = "radar_followup_scan" |
apps/backend/internal/module/crm/usecase/followup_scan.go |
add | 掃 ListDue → 轉 notified+notified_count++ → 發通知 |
apps/backend/cmd/worker/main.go |
edit | maintenance 內日排程呼叫(Redis lock 保護)+ template 分派 |
行為變更
- 通知沿用既有
notifications,ref_type=contact,點擊落地/app/crm/:contactId。 - 同一 FollowUp 同一天不重複通知。
- 多實例只有一台執行;掃描寫日誌(處理筆數、通知筆數)。
Out of scope
- escalate 規則(T587)
- AI 追蹤訊息(T588)
Acceptance
- FU-01:3 天無動作 →
notified+通知存在且落地正確 - 兩實例同時跑不重複通知
- 指令:
cd apps/backend && go test ./internal/module/crm/... ./internal/module/notification/... -count=1 && make build