# T822 — cost preview and credit confirmation mock > Status: `done` > Milestone: `M2` > Est. change: `~170 lines` ## Goal 完成後所有可能呼叫 provider 的手動動作都會先顯示固定/範圍點數、BYOK、餘額與 ceiling 確認,預覽本身不扣點。 ## Depends on - T820、T821 ## Inputs - `apps/web/src/pages/UsagePage.tsx` - `apps/web/src/components/radar/ExplorePanel.tsx` - `apps/web/src/components/radar/WatchSuggestPanel.tsx` - Spec §5.1–§5.2、驗收 #13、#20 ## Outputs ### 程式變更(預期路徑) | 路徑 | 動作 | 說明 | |------|------|------| | `apps/web/src/components/radar/CostPreviewDialog.tsx` | add | 固定/最小/最大點數、期限與確認 | | `apps/web/src/data/mock/radarRepo.ts` | edit | preview、expiry、ceiling、platform/BYOK mock | | `apps/web/src/components/radar/ExplorePanel.tsx` | edit | 付費前確認流程 | | `apps/web/src/components/radar/WatchSuggestPanel.tsx` | edit | enrichment preview 入口 | ### 行為變更 - preview 過期、版本變動、餘額不足或 ceiling 小於固定成本時不啟動動作。 ### API / 契約(若有) - preview_id 與 credit_ceiling 由 mock 傳給後續動作。 ## Out of scope - 不接真 usage API、不改方案點數。 ## Acceptance - [x] 取得 preview 前後 credits 不變。 - [x] BYOK/平台模式顯示清楚並保留呼叫次數。 - [ ] 指令: ```bash cd apps/web && npm run test -- CostPreviewDialog ExplorePanel WatchSuggestPanel ``` ## Notes 未知候選數用範圍,不顯示假精準單一數字。