# T821 — query plan preview mock > Status: `done` > Milestone: `M2` > Est. change: `~150 lines` ## Goal 完成後使用者可在探索前看到由 DemandMap 產生的 1–6 組使用者語言查詢與排除訊號,且純產品名不會單獨成組。 ## Depends on - T820 ## Inputs - `apps/web/src/components/radar/WatchSuggestPanel.tsx` - `apps/web/src/data/mock/radarRepo.ts` - Spec §4.2、驗收 #7 ## Outputs ### 程式變更(預期路徑) | 路徑 | 動作 | 說明 | |------|------|------| | `apps/web/src/components/radar/QueryPlanPreview.tsx` | add | 查詢組、來源 basis、排除訊號預覽 | | `apps/web/src/data/mock/radarRepo.ts` | edit | deterministic query plan | | `apps/web/src/components/radar/WatchSuggestPanel.tsx` | edit | 接 DemandMap 與 query plan | ### 行為變更 - 同義痛點分散查詢組;產品/品牌名稱只作輔助召回。 ### API / 契約(若有) - QueryPlan 保存 DemandInputVersion、DemandMapVersion 摘要。 ## Out of scope - 不改 Threads provider、不實作 live search。 ## Acceptance - [x] 任何查詢組至少含困擾、情境或期望結果之一。 - [x] 查詢組數遵守 1–6 與短詞規則。 - [ ] 指令: ```bash cd apps/web && npm run test -- QueryPlanPreview WatchSuggestPanel ``` ## Notes 預覽要能回答「系統會用什麼人話找人」,不是只列模型術語。