# T712 — product readiness suggestions generic assign

> Status: `done`  
> Milestone: `M1` · Phase B  
> Kind: `feat` · Est. change: `~180 lines`

## Goal

在 watch 設定中顯示產品資料完整度、建議詞依據，並提供舊 generic watch 一次性補綁。

## Depends on

- T710、T711

## Inputs

- `../spec.md` §4.1、§4.6
- Product 的 context／pain points／tags／capability／exclude fields

## Outputs

| 路徑 | 動作 | 說明 |
|------|------|------|
| `apps/web/src/components/radar/ProductContextReadiness.tsx` | add | 資料完整度與缺口提示 |
| `apps/web/src/components/radar/WatchTermSuggestions.tsx` | edit/add | basis kind/text、include/exclude 採用 |
| `apps/web/src/pages/RadarWatchesPage.tsx` | edit | generic 補綁與不可換綁狀態 |
| `apps/web/src/pages/RadarWatchesPage.test.tsx` | edit | readiness／assign cases |

## Behavior

- 建議詞顯示來源，不以產品名稱充當需求證據。
- 資料不足提示但不阻擋 product watch；Brand/Product 本體缺失才阻擋。
- 補綁成功後 selector 只讀；更換產品提示建立新 watch。

## Out of scope

- 後端建議演算法（T741）
- Product 編輯器重做

## Acceptance

- [x] generic 可補綁一次，第二次 mock 回 conflict 且 UI 保留原值。

```bash
cd apps/web && npm run test -- RadarWatchesPage && npm run check:tokens
```

Implementation result (2026-08-10): added readiness checks, suggestion basis
display, product-context suggestion requests, and a one-time generic watch
assignment flow with unavailable resume protection.
