# T575 — fe-contact-detail-timeline-conversion

> Status: `done`  
> Milestone: `M4`  
> Kind: `feat`  
> Est. change: `~200 lines`

## Goal

完成後系統應：`/app/crm/:contactId` 可看時間軸、推進階段、加備註、標記待追蹤、合併與回報成交。

## Depends on

- T570、T572、T574

## Inputs

- Spec：`../spec.md` §4.6、§5.3、§9.4

## Outputs

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

| 路徑 | 動作 | 說明 |
|------|------|------|
| `apps/web/src/pages/ContactDetailPage.tsx` | add | 標頭＋階段切換＋時間軸＋動作區 |
| `apps/web/src/components/radar/ConversionForm.tsx` | add | 成交回報（金額選填、備註）＋改／刪 |
| `apps/web/src/components/radar/MergeContactDialog.tsx` | add | 手動合併選擇對象 |
| `apps/web/src/App.tsx` | edit | 註冊 `/app/crm/:contactId` |
| `apps/web/src/data/live/radarRepos.ts` | edit | detail／stage／notes／follow-up／merge／conversion 實作 |
| `apps/web/src/styles/radar.css` | edit | 時間軸與表單樣式 |

### 行為變更

- 階段切換允許任意跳轉，UI 不隱藏「回退」選項；切換後時間軸即時新增一筆。
- 成交回報明示「由你確認，系統不會自動判定成交」。
- 待追蹤標記與階段**並列顯示**，不做成同一個選單。
- 合併對話框只列同 owner 候選；跨 owner 錯誤直接顯示後端 message。

## Out of scope

- 追蹤提醒收件匣（T591）
- 統計頁（T591）

## Acceptance

- [x] 跳級、回退、終態重開三種操作都可完成並在時間軸留痕
- [x] 成交回報→改→刪，成果數字與畫面一致
- [x] 指令：

```bash
cd apps/web && npm run build && npm run check:tokens && npm run test && npm run lint
```
