# T812 — inbox card detail and actions > Status: `done` > Milestone: `M1` > Est. change: `~190 lines` ## Goal 完成後卡片首層只呈現問題、主推產品、主要證據、分數/時間與完成/移除;完整理由、回覆、CRM 位於詳情層。 ## Depends on - T810、T811 ## Inputs - `apps/web/src/pages/RadarOpportunitiesPage.tsx` - `apps/web/src/components/radar/**` - Spec §6.1–§6.2、驗收 #2–#5 ## Outputs ### 程式變更(預期路徑) | 路徑 | 動作 | 說明 | |------|------|------| | `apps/web/src/components/radar/OpportunityInboxCard.tsx` | add | 首層卡片與 actions | | `apps/web/src/components/radar/OpportunityDetailDrawer.tsx` | add | 證據、風險、產品匹配與既有操作 | | `apps/web/src/pages/RadarOpportunitiesPage.tsx` | edit | 接 card、drawer、狀態更新 | | `apps/web/src/styles/radar.css` | edit | 卡片層級與 mobile 操作區 | ### 行為變更 - 完成不建立 Contact;accept 成功才走既有 CRM binding 並同步完成。 - 移除需要原因,成功後提供復原。 ### API / 契約(若有) - 所有 action 透過 RadarRepo;錯誤時保留原卡片狀態。 ## Out of scope - 不改 CRM backend、不新增 reply meter。 ## Acceptance - [x] 首層無需展開即可完成或移除。 - [x] 詳情可看到原文、產品依據、風險與原始連結。 - [ ] 指令: ```bash cd apps/web && npm run test -- RadarOpportunitiesPage ``` ## Notes - 2026-08-12 首次使用回饋修訂:卡片主動作改成「加入名單並追蹤」,另保留「只標示已處理」與「不適合」;完整判定抽屜同步提供正向處理動作。 - 加入名單成功必須同時把 ReviewState 設為 `completed`,並顯示前往 Contact 的下一步;不能只顯示含糊的「完成」。 - 首層只呈現一個推薦分數、產品與最強證據;英文 priority enum 不直接暴露給使用者。 不要把所有 ProductMatch 四維理由直接塞進首層卡片。