# T753 — today all results filters ordering

> Status: `done`  
> Milestone: `M5` · Phase C  
> Kind: `feat` · Est. change: `~200 lines`

## Goal

today 與全部結果 API 支援產品 filters、eligible/stale 邊界與穩定分數排序。

## Depends on

- T733、T745、T752

## Inputs

- `apps/backend/internal/module/radar/usecase/today.go`
- Opportunity list repository／logic
- `../spec.md` §3.4、§4.4、§5.2

## Outputs

| 路徑 | 動作 | 說明 |
|------|------|------|
| `apps/backend/internal/module/radar/usecase/today.go` | edit | eligible product gate、filters、empty reason |
| opportunity repositories | edit | product／fit／match-state filters、stable ordering |
| list/today logics | edit | query validation、selected match response context |
| query tests | edit/add | today vs all、product-selected ordering、pagination |

## Behavior

- today 排除 stale／weak／excluded；all 可明確查詢。
- Product filter 依存在該 match，展示／次排序用選定 match，不改 primary。
- 預設 intent desc、fit desc、posted desc、id asc。
- 只有非 eligible 結果時回 `no_eligible_product_match`。

## Out of scope

- 前端頁（T761）
- 主推 mutation（T754）

## Acceptance

- [x] spec #8、#11 及產品篩選／eligible 邊界測試通過。

```bash
cd apps/backend && go test ./internal/module/radar/... ./internal/logic/radar/... -count=1
```

Implementation result (2026-08-10): today now accepts generated Brand/Product
and fit-band query fields, excludes weak／excluded product matches with an
explicit `no_eligible_product_match` empty state, and all-results validates
product match state／fit band／sort while supporting stale filtering and stable
intent→fit→posted→ID ordering.
