thread-master/docs/product/haixun-console/plan.md

139 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Plan: 巡樓 Console 從零重寫
> Status: **`approved`**(與 task 拆分一併啟動)
> Source: `docs/product/haixun-console/spec.md`
> Last updated: `2026-07-09`
## 1. 交付策略
舊碼已在 `old/` 封存。主線 **greenfield**
1. **先 B前端 mock** 讓 Harbor Desk 流程(含 lead 可回覆)你摸到滿意。
2. **A 的 live 地基**不阻塞 B可在 B 過關後或平行用 `services/api` 補。
3. **C** 同一 UI 接真;**D** 海巡等。
本 plan 的 **可立即開工區間是 M0M2tasks T001T022**,對應 Phase B 完整 mock。
Phase C/D 只定里程碑與 task 編號預留,細 task 待 B 過關再拆。
## 2. 里程碑
### M0 — 倉庫骨架
- **目標:** 可 `npm run dev` 的空應用
- **完成定義:** `apps/web` Vite+React+TS 起來;根 README 有啟動指令
- **Tasks** T001
- **驗證:** `cd apps/web && npm install && npm run build`
### M1 — 設計系統 + App Shell
- **目標:** Harbor Desk 外殼可導覽
- **完成定義:** token、基礎元件、桌面側欄+手機底欄、5 入口路由占位
- **Tasks** T002T005
- **驗證:** 手動點 5 入口build 通過
### M2 — Auth mock + 路由守衛
- **目標:** 未登入進不了 `/app/**`
- **完成定義:** mock 登入/登出/重整保 session
- **Tasks** T006
- **驗證:** 登入後進 Todaylogout 回 login
### M3 — 資料層 mock
- **目標:** repository 介面 + localStorage + seed
- **完成定義:** accounts/plays/outbox/jobs/notifications 可讀寫;`mock|live` 切換點存在live 可 stub 丟錯)
- **Tasks** T007T008
- **驗證:** 重整後 seed/草稿仍在
### M4 — Crew帳號
- **目標:** 看帳號列表、mock 新增、不可用狀態
- **Tasks** T009
- **驗證:** 列表 ≥2 假帳;連線 error 不可當 lead/cast
### M5 — Studio 列表 + Wizard 船隊/劇本
- **目標:** 建立串場lead+cast步驟含 lead 發言
- **Tasks** T010T013
- **驗證:** root(A)→reply(B)→reply(A) 可編輯保存
### M6 — 預覽 / 船期 / 提交
- **目標:** 預覽泡泡、排程、進 Outbox
- **Tasks** T014
- **驗證:** submit 後 Outbox 有對應 bundle
### M7 — Outbox 發送模擬
- **目標:** 逐步狀態、主失敗不發後續、重試
- **Tasks** T015T016
- **驗證:** 模擬成功全 publishedroot fail 時 reply 不 published
### M8 — Job + 通知 + Today
- **目標:** 任務進度、鈴鐺、今日總覽
- **Tasks** T017T019
- **驗證:** 模擬 job 完成出通知Today 有捷徑
### M9 — Scout / Settings / 收尾
- **目標:** 占位頁、datasource 切換、RWD 基線、範例劇本
- **Tasks** T020T022
- **驗證:** Scout 無假成功手機底欄可用build 通過
### M10 — Phase B 過關(人審)
- **目標:** 你主觀認可流程與風格
- **Tasks** 無新碼;走查 checklistrequirements Phase B
- **驗證:** 文件勾選 + 你回「B OK」
### M20 — Phase C 接真預留B 後再拆細 task
- `services/api` 最小 auth/me/permissions
- Threads OAuth + accounts
- Jobs + notifications live
- ThreadPlay/Outbox live 垂直切片
預留 task 號:**T100+**(本輪不寫檔)
### M30 — Phase D預留
- Scout 海巡滿血等 → **T200+**
## 3. 依賴
```text
M0 → M1 → M2 → M3 → M4
↘ M5 → M6 → M7
↘ M8
↘ M9 → M10 (人審)
↘ M20 → M30
```
## 4. 風險與緩解
| 風險 | 緩解 |
|------|------|
| Task 膨脹超 200 行 | 實作時再拆子 task更新 INDEX |
| Mock 契約與 C 不一致 | T007 介面以 spec §5 為準C 只換 adapter |
| 過早寫 Go | M10 前禁止大範圍 `services/api` 業務 |
## 5. 刻意不做(本 plan 週期內 = 到 M10
- 海巡真功能、舊碼搬回、重型 UI 庫
- live Threads 發文(屬 M20
- email 驗證閘
## 6. 全域驗證指令
```bash
cd apps/web && npm install && npm run build
# 之後若有測試:
# npm test
```
## 7. 批准
- [x] Plan 已批准2026-07-09使用者好請幫我開始拆
- 實作順序:從 **T001** 起,完成一題勾 INDEX 再下一題