# 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 ```