# T823 — sweep funnel mock and ux gate tests > Status: `done` > Milestone: `M2` > Est. change: `~180 lines` ## Goal 完成後 mock 巡邏結果能說清楚每階段數量、點數與 partial/blocked/failed,並完成 Phase B UX gate 的自動驗收基礎。 ## Depends on - T821、T822、T813 ## Inputs - `apps/web/src/pages/RadarWatchesPage.tsx` - `apps/web/src/pages/RadarOpportunitiesPage.tsx` - `apps/web/src/data/fixtures/radarInbox.ts` - Spec §5.3–§5.4、§6.3–§6.4、驗收 #14–#15、#19 ## Outputs ### 程式變更(預期路徑) | 路徑 | 動作 | 說明 | |------|------|------| | `apps/web/src/components/radar/SweepFunnelSummary.tsx` | add | hit/dedupe/prefilter/cache/judge/created/deferred/credits | | `apps/web/src/data/mock/radarRepo.ts` | edit | 完整 sweep result mock | | `apps/web/src/pages/ProductRadarLiveFlow.test.tsx` | edit | inbox+map+preview+sweep flow | | `apps/web/src/pages/RadarOpportunitiesPage.test.tsx` | edit | UX gate scenarios | ### 行為變更 - 0 hit、全排除、partial_budget、blocked_budget、failed 都有原因與下一步。 ### API / 契約(若有) - funnel 欄位與 T800/T801 一致;不把 merged 當 created。 ## Out of scope - 不寫 Phase C worker 或真 AI。 ## Acceptance - [x] mock flow 可在三分鐘內完成查看、處理、預覽、巡邏結果對帳。 - [x] M1+M2 測試綠;使用者已明確要求「全部執行」,視為 UX gate 批准後繼續。 - [ ] 指令: ```bash cd apps/web && npm run test -- ProductRadarLiveFlow RadarOpportunitiesPage && npm run build ``` ## Notes 這是 Phase B 最後一題;完成後停在使用者 UX 批准,不直接進後端。