# T862 — sweep funnel counters and api

> Status: `done`（2026-08-11）
> Milestone: `M6`
> Est. change: `~180 lines`

## Goal

完成後 Sweep／Explore API 與列表可回傳完整 funnel、credit breakdown、failure／deferred reason，且數量語意可對帳。

## Depends on

- T860、T861、T800

## Inputs

- `apps/backend/internal/module/radar/domain/sweep.go`
- `apps/backend/internal/logic/radar/list_sweeps_logic.go`
- `apps/backend/internal/logic/radar/explore_opportunities_logic.go`
- Spec §7.2、§7.6、驗收 #14、#15、#19

## Outputs

### 程式變更（預期路徑）

| 路徑 | 動作 | 說明 |
|------|------|------|
| `apps/backend/internal/module/radar/domain/sweep.go` | edit | counters／breakdown serialization |
| `apps/backend/internal/logic/radar/list_sweeps_logic.go` | edit | owner list mapping |
| `apps/backend/internal/logic/radar/explore_opportunities_logic.go` | edit | preview、ceiling、result stats |
| `apps/web/src/data/live/radarRepos.ts` | edit | Sweep／Explore mapper |

### 行為變更

- `created` 不含 `merged`；`prefilter_rejected` 不含 AI judge；credits 分 search／demand_map／judge／reply。

### API / 契約（若有）

- list 維持 pagination/list、UTC ns、102000 success envelope。

## Out of scope

- 不做新前端 funnel 視覺（T823 已完成 mock）。

## Acceptance

- [x] API counters 與 repository domain 同數值。
- [x] 失敗／partial 不回成功空 Sweep。
- [ ] 指令：

```bash
cd apps/backend && go test ./internal/logic/radar ./internal/module/radar -run 'Sweep|Explore' -count=1
```

## Notes

所有 credits_used 必須能回指既有 usage event source。
