# T841 — baseline version and query planner

> Status: `done`（2026-08-11）
> Milestone: `M4`
> Est. change: `~180 lines`

## Goal

完成後系統可從最新 Brand／Product 建立免費 baseline，正確區分實質 input version，並產生 1–6 組合法使用者語言 QueryPlan。

## Depends on

- T840

## Inputs

- `apps/backend/internal/module/radar/usecase/product_context.go`
- `apps/backend/internal/module/radar/usecase/suggest.go`
- Spec §4.1–§4.2、驗收 #6、#7、#21、#22

## Outputs

### 程式變更（預期路徑）

| 路徑 | 動作 | 說明 |
|------|------|------|
| `apps/backend/internal/module/radar/usecase/demand_map_baseline.go` | add | Product truth→baseline、完整度與 fingerprint |
| `apps/backend/internal/module/radar/usecase/query_plan.go` | add | 多組短詞與 exclude 產生 |
| `apps/backend/internal/module/radar/usecase/query_plan_test.go` | add | 口語、純名稱、版本 table tests |

### 行為變更

- 產品名稱／圖片修改不改 input version；痛點、情境、能力、排除修改會改版。
- incomplete 產品阻擋新巡邏，不回成功空 Sweep。

### API / 契約（若有）

- QueryPlan 保存 input/map version 摘要，遵守 1–6 組短詞規則。

## Out of scope

- 不呼叫 provider、不做 AI enrichment。

## Acceptance

- [x] baseline 五類映射可回指產品 basis。
- [x] 純品牌／產品名不能獨立成 query。
- [ ] 指令：

```bash
cd apps/backend && go test ./internal/module/radar/usecase -run 'DemandMap|QueryPlan|Baseline' -count=1
```

## Notes

自訂 phrase 保留但在實質產品改版後標記待確認。
