50 lines
1.5 KiB
Markdown
50 lines
1.5 KiB
Markdown
|
|
# 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
|
|||
|
|
```
|