139 lines
4.2 KiB
Markdown
139 lines
4.2 KiB
Markdown
|
|
# 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 的 **可立即開工區間是 M0–M2(tasks T001–T022)**,對應 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:** T002–T005
|
|||
|
|
- **驗證:** 手動點 5 入口;build 通過
|
|||
|
|
|
|||
|
|
### M2 — Auth mock + 路由守衛
|
|||
|
|
|
|||
|
|
- **目標:** 未登入進不了 `/app/**`
|
|||
|
|
- **完成定義:** mock 登入/登出/重整保 session
|
|||
|
|
- **Tasks:** T006
|
|||
|
|
- **驗證:** 登入後進 Today;logout 回 login
|
|||
|
|
|
|||
|
|
### M3 — 資料層 mock
|
|||
|
|
|
|||
|
|
- **目標:** repository 介面 + localStorage + seed
|
|||
|
|
- **完成定義:** accounts/plays/outbox/jobs/notifications 可讀寫;`mock|live` 切換點存在(live 可 stub 丟錯)
|
|||
|
|
- **Tasks:** T007–T008
|
|||
|
|
- **驗證:** 重整後 seed/草稿仍在
|
|||
|
|
|
|||
|
|
### M4 — Crew(帳號)
|
|||
|
|
|
|||
|
|
- **目標:** 看帳號列表、mock 新增、不可用狀態
|
|||
|
|
- **Tasks:** T009
|
|||
|
|
- **驗證:** 列表 ≥2 假帳;連線 error 不可當 lead/cast
|
|||
|
|
|
|||
|
|
### M5 — Studio 列表 + Wizard 船隊/劇本
|
|||
|
|
|
|||
|
|
- **目標:** 建立串場;lead+cast;步驟含 lead 發言
|
|||
|
|
- **Tasks:** T010–T013
|
|||
|
|
- **驗證:** root(A)→reply(B)→reply(A) 可編輯保存
|
|||
|
|
|
|||
|
|
### M6 — 預覽 / 船期 / 提交
|
|||
|
|
|
|||
|
|
- **目標:** 預覽泡泡、排程、進 Outbox
|
|||
|
|
- **Tasks:** T014
|
|||
|
|
- **驗證:** submit 後 Outbox 有對應 bundle
|
|||
|
|
|
|||
|
|
### M7 — Outbox 發送模擬
|
|||
|
|
|
|||
|
|
- **目標:** 逐步狀態、主失敗不發後續、重試
|
|||
|
|
- **Tasks:** T015–T016
|
|||
|
|
- **驗證:** 模擬成功全 published;root fail 時 reply 不 published
|
|||
|
|
|
|||
|
|
### M8 — Job + 通知 + Today
|
|||
|
|
|
|||
|
|
- **目標:** 任務進度、鈴鐺、今日總覽
|
|||
|
|
- **Tasks:** T017–T019
|
|||
|
|
- **驗證:** 模擬 job 完成出通知;Today 有捷徑
|
|||
|
|
|
|||
|
|
### M9 — Scout / Settings / 收尾
|
|||
|
|
|
|||
|
|
- **目標:** 占位頁、datasource 切換、RWD 基線、範例劇本
|
|||
|
|
- **Tasks:** T020–T022
|
|||
|
|
- **驗證:** Scout 無假成功;手機底欄可用;build 通過
|
|||
|
|
|
|||
|
|
### M10 — Phase B 過關(人審)
|
|||
|
|
|
|||
|
|
- **目標:** 你主觀認可流程與風格
|
|||
|
|
- **Tasks:** 無新碼;走查 checklist(requirements 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 再下一題
|