1.7 KiB
1.7 KiB
T532 — sweep-failure-notify-and-resume
Status:
done
Milestone:M2
Kind:feat
Est. change:~160 lines
Goal
完成後系統應:sweep 失敗時 Sweep 記 failed+可讀原因並發站內通知;重跑不重判已完成的貼文。
Depends on
- T527、T530
Inputs
- Spec:
../spec.md§4.2.8、§5.4、§5.6、§7、§9.2(SW-04) - 既有通知:
apps/backend/internal/module/notification/**、appnotif
Outputs
程式變更(預期路徑)
| 路徑 | 動作 | 說明 |
|---|---|---|
apps/backend/internal/module/radar/usecase/sweep_run.go |
edit | 錯誤收斂:抓取失敗/判定全數失敗 → Sweep failed_reason+Job fail |
apps/backend/internal/module/radar/usecase/sweep_notify.go |
add | 失敗通知(ref_type=sweep 或既有雷達通知型別),落地雷達頁 |
apps/backend/internal/module/radar/usecase/judge_persist.go |
edit | 續跑:跳過 judged_external_ids 已含者 |
行為變更
- 抓取路徑不可用:不回成功空資料,Sweep
failed並通知使用者「今天沒巡到,原因為 X」。 - 部分筆失敗:Sweep 仍為成功但記錄失敗筆數與原因摘要。
- Job 中途失敗後重跑:已判定者不再扣點重判(避免重複計費)。
- 日誌不含 token 明文。
Out of scope
- 前端空狀態文案(T551)
- 觀測列表 API(T533)
Acceptance
- SW-04:抓取不可用 → Sweep
failed+原因+通知;API 不回空成功 - 中斷後重跑:
judged_count不重複累加、點數不重複扣 - 指令:
cd apps/backend && go test ./internal/module/radar/... ./internal/module/notification/... -count=1