# T810 — single opportunity inbox shell > Status: `done` > Milestone: `M1` > Est. change: `~180 lines` ## Goal 完成後使用者以 `/app/radar/opportunities` 作唯一商機入口,預設看到 pending+today+recommended,舊 today URL 會導向同一清單。 ## Depends on - T801、T802 ## Inputs - `apps/web/src/pages/RadarOpportunitiesPage.tsx` - `apps/web/src/pages/RadarTodayPage.tsx` - `apps/web/src/App.tsx` - Plan M1、Spec §6.1、§7.4 ## Outputs ### 程式變更(預期路徑) | 路徑 | 動作 | 說明 | |------|------|------| | `apps/web/src/pages/RadarOpportunitiesPage.tsx` | edit | 單一入口 shell、tabs、時間與排序控制 | | `apps/web/src/pages/RadarTodayPage.tsx` | edit | 舊路徑 redirect/相容 query | | `apps/web/src/App.tsx` | edit | 導覽只保留商機入口 | | `apps/web/src/styles/radar.css` | edit | 收件匣 layout 與 responsive 基礎 | ### 行為變更 - today/7d/all 是同頁 scope;不再維護兩份工作清單狀態。 ### API / 契約(若有) - 只呼叫 RadarRepo,不在頁面自行排序或猜空結果原因。 ## Out of scope - 不接 review state live endpoint、不改後端。 ## Acceptance - [ ] 舊 `/app/radar/today` 進入後保留 today+pending 意圖。 - [ ] 導覽沒有第二個商機工作入口。 - [ ] 指令: ```bash cd apps/web && npm run test -- RadarTodayPage RadarOpportunitiesPage && npm run build ``` ## Notes 首屏只保留待處理數、時間、排序、篩選與清楚下一步。