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

139 lines
4.2 KiB
Markdown
Raw Normal View History

2026-07-09 03:45:28 +00:00
# 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 再下一題