# T526 — radar-sweep-model-repository > Status: `done` > Milestone: `M2` > Kind: `feat` > Est. change: `~140 lines` ## Goal 完成後系統應:RadarSweep 執行紀錄可寫可查,欄位足以回答「命中幾筆、判了幾筆、截斷幾筆、失敗原因、耗多少點」。 ## Depends on - T501 ## Inputs - Spec:`../spec.md` §5.4、§7(可觀測性)、§8 ## Outputs ### 程式變更(預期路徑) | 路徑 | 動作 | 說明 | |------|------|------| | `apps/backend/internal/module/radar/domain/sweep.go` | add | struct:`watch_id`、`job_id`、`path(api|crawler)`、`hit_count`、`judged_count`、`created_count`、`truncated_count`、`failed_reason?`、`credits_used`、`started_at`、`ended_at`、`judged_external_ids[]` | | `apps/backend/internal/module/radar/repository/sweep_mongo.go` | add | Create、Update(累加計數)、ListByOwner、GetByJobID | | `apps/backend/internal/module/radar/repository/sweep_memory.go` | add | 測試用 | ### 行為變更 - 計數為累加更新,Job 中途失敗時已寫入的進度保留(供 T532 續跑判斷)。 - `failed_reason` 為人可讀字串,不含 token 明文。 ## Out of scope - Job 執行流程(T527/T528) - 列表 API(T533) ## Acceptance - [x] unit test:建立→累加→查詢,`judged_external_ids` 可去重累加 - [x] 指令: ```bash cd apps/backend && go test ./internal/module/radar/... -count=1 ``` ### 實作落點 - `domain/sweep.go`:`RadarSweep`、`SweepDelta`(累加+可選 failed_reason/ended_at) - `repository/sweep_{memory,mongo}.go`:Create/Update($inc+$addToSet)/GetByJobID/ListByOwner - 測試:`repository/sweep_memory_test.go`