thread-master/docs/product/demand-radar/tasks/T526-radar-sweep-model-repo...

54 lines
1.7 KiB
Markdown
Raw Normal View History

2026-08-03 05:52:02 +00:00
# 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 執行流程T527T528
- 列表 APIT533
## 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_reasonended_at
- `repository/sweep_{memory,mongo}.go`CreateUpdate$inc$addToSetGetByJobIDListByOwner
- 測試:`repository/sweep_memory_test.go`