48 lines
1.3 KiB
Markdown
48 lines
1.3 KiB
Markdown
|
|
# T760 — live radar product repo mapping
|
|||
|
|
|
|||
|
|
> Status: `done`
|
|||
|
|
> Milestone: `M6` · Phase C
|
|||
|
|
> Kind: `feat` · Est. change: `~200 lines`
|
|||
|
|
|
|||
|
|
## Goal
|
|||
|
|
|
|||
|
|
前端 live RadarRepo 完整映射產品型 API,並與 T710 mock 通過同一 contract。
|
|||
|
|
|
|||
|
|
## Depends on
|
|||
|
|
|
|||
|
|
- T750–T755
|
|||
|
|
|
|||
|
|
## Inputs
|
|||
|
|
|
|||
|
|
- `apps/web/src/data/live/radarRepos.ts`
|
|||
|
|
- `apps/web/src/data/repos.ts`、T703 fixtures
|
|||
|
|
- `../spec.md` §5.2
|
|||
|
|
|
|||
|
|
## Outputs
|
|||
|
|
|
|||
|
|
| 路徑 | 動作 | 說明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| `apps/web/src/data/live/radarRepos.ts` | edit | context/matches/filters/assign/primary/counters mapping |
|
|||
|
|
| `apps/web/src/data/live/radarRepos.test.ts` | edit | request query/body、new/legacy response、errors |
|
|||
|
|
| `apps/web/src/data/radarRepo.contract.test.ts` | edit | live mapper 與 mock 共用案例 |
|
|||
|
|
|
|||
|
|
## Behavior
|
|||
|
|
|
|||
|
|
- optional legacy fields 正規化但不偽造 product。
|
|||
|
|
- query 正確使用 page/pageSize 與 product filters。
|
|||
|
|
- non-102000、not-ready、forbidden 保持 ApiError,不轉空資料。
|
|||
|
|
|
|||
|
|
## Out of scope
|
|||
|
|
|
|||
|
|
- 頁面 loading/error UX(T761)
|
|||
|
|
- backend 行為修補
|
|||
|
|
|
|||
|
|
## Acceptance
|
|||
|
|
|
|||
|
|
- [x] mock/live contract tests 全通過(23 files/139 tests)。
|
|||
|
|
- [x] `npm run build` 通過;`npm run lint` 通過(僅既有 Fast Refresh warnings)。
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd apps/web && npm run test -- radarRepos radarRepo.contract && npm run build
|
|||
|
|
```
|