thread-master/docs/product/demand-radar/tasks/T533-sweeps-list-and-manual...

50 lines
1.5 KiB
Markdown
Raw Normal View History

2026-08-03 05:52:02 +00:00
# T533 — sweeps-list-and-manual-trigger-api
> Status: `done`
> Milestone: `M2`
> Kind: `feat`
> Est. change: `~150 lines`
## Goal
完成後系統應:`GET /api/v1/radar/sweeps` 可查巡的執行紀錄,`POST /api/v1/radar/watches/:id/sweep` 可手動觸發並回 Job。
## Depends on
- T526、T527
## Inputs
- Spec`../spec.md` §4.2.7、§5.2、§7可觀測性
## Outputs
### 程式變更(預期路徑)
| 路徑 | 動作 | 說明 |
|------|------|------|
| `apps/backend/generate/api/radar.api` | edit | sweeps 列表與手動觸發 type 定稿 |
| `apps/backend/internal/logic/radar/listSweepsLogic.go` | edit | 分頁列表,可依 `watch_id`/日期 filter |
| `apps/backend/internal/logic/radar/triggerWatchSweepLogic.go` | edit | 建 `radar_sweep` Job同一執行路徑並回 `job_id` |
### 行為變更
- 手動觸發受**同一個每日商機額度池**約束(不另給額度)。
- watch 為 `paused``archived` 時手動觸發回明確錯誤。
- 列表回 `pagination` + `list`,欄位含 `path`、各計數、`failed_reason`、`credits_used`。
## Out of scope
- 前端觀測畫面(本輪不做獨立頁,資訊併入雷達頁提示)
- 排程本身T527
## Acceptance
- [x] 手動觸發回 `job_id`,執行後 Sweep 可在列表查到
- [x] paused watch 手動觸發被拒且訊息明確
- [x] 指令:
```bash
cd apps/backend && make gen-api && go test ./internal/logic/radar/... -count=1 && make build
```