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

8.8 KiB
Raw Permalink Blame History

Plan: 巡樓後端Phase C · live

Status: approved
Status note: approved 2026-07-10 使用者「好先這樣拆吧」
Source: docs/product/haixun-backend/spec.mdapproved 2026-07-10 使用者「spec 通過」)
Last updated: 2026-07-10

1. 交付策略

  1. 先搬骨架再砍電商:把 stand-alone-service 遷入主線(根目錄固定 apps/backendgateway + 獨立 worker main 同包),收斂 一份 etc,建立 cmd/initcmd/seeder
  2. 先身份與權限可登:數字 uid、admin 代建、完整 Auth API含註冊三方 API、middleware前端主路徑仍 admin 代建。
  3. 再 OAuth 真連帳P0 結束時必須有 usable Threads 帳號,不是假連線。
  4. 再創作Worker 真發送PlayCompose含排程→ Outbox → worker 打 Threads驗收對齊 spec §9.12。
  5. 並行加深用量platformBYOK 分計分顯)、人設、靈感研究、海巡雙路徑、邀請。
  6. 前端 live 接線穿插在 M2 起:每完成一域就接 createRepos('live') 對應 repo禁止整包最後才接。

驗收一律對照 spec §9 的 IDA-xx、AU-xx…task 完成定義須寫明覆蓋哪些 ID。

2. 里程碑

M0 — 搬遷骨架與工程底座

  • 目標: 可編譯、可啟動的 go-zero gateway + 空 worker單 etcinitseeder 殼。
  • 完成定義:
    • stand-alone-service 已遷入主線並可 go build
    • 刪除或 build tag 排除 cartorderproduct 等電商域。
    • etc/gateway.yaml 僅一份env 可覆寫 secret。
    • cmd/initmongo index 可跑空轉或最小 pingcmd/seeder 獨立入口。
    • 成功 envelope 統一 102000(若原碼不同則改)。
  • 建議 task 區間: T100T109
  • 驗證: A-01A-03、A-06A-08 相關;go test ./... 通過或明確跳過舊電商測試。

M1 — 會員、權限、Admin、設定殼

  • 目標: 數字 uid 會員閉環admin 代建Auth API 齊(含註冊/三方介面);設定讀寫+平台 key 進 etc。
  • 完成定義:
    • Member model數字 uid、roles、status、email_verified、invite_code 欄位預留。
    • loginlogoutrefreshmeprofile驗證重設密碼。
    • register + 三方 OAuth API 可測UI 可不接)。
    • AdminlistPagecreatesuspendrolesverifyresetPassword。
    • Permission middlewaremember vs admin。
    • Settings get/save AiPlacementkey 只 configuredetc 平台 AIExa key 可注入。
    • init 建立 member 相關 indexseeder 至少一 admin 帳。
  • 建議 task 區間: T110T129
  • 驗證: §9.1 AU、§9.2 AR、§9.3 AP、§9.4 AO、§9.5 AD、§9.0 A-04/A-05、§9.8 ST-0104/1415。

M2 — Threads OAuth + Job/通知 + 前端 live 地基

  • 目標: 真 OAuth 綁帳Job 狀態機 + worker 骨架;通知;前端可 live 登入me帳號列表。
  • 完成定義:
    • oauthStartcallbacklistrefreshSessiondisconnecttoken 僅服務端。
    • Job CRUD進度guarded 更新worker 可跑 demo job。
    • Notification listread。
    • apps/web liveAuth + Accounts + Jobs + Notifications 接真。
  • 建議 task 區間: T130T149
  • 驗證: §9.6 TH-0110、§9.7 JB-0110、§9.17 X-*;前端 live 手測登入→OAuth。

M3 — 用量平台/BYOK + AI/Exa 代打

  • 目標: 外部 AI搜尋可打platform 扣點與 BYOK 次數 分計分顯
  • 完成定義:
    • 金鑰解析 platform vs byok。
    • UsageEvent + Summaryplatform.*byok.* 分欄listEvents 可篩 key_mode。
    • 產文/研究等至少一條真實外部呼叫路徑(失敗可讀)。
    • 前端 UsageSettings live 對齊分顯(若 mock 結構不同則擴充 summary 型別)。
  • 建議 task 區間: T150T164
  • 驗證: §9.8 ST-0513、§9.9 USG-0114。

M4 — 創作、Outbox、Worker 真發送

  • 目標: PlayComposeschedule_start_at)→ Outbox → Threads 真發
  • 完成定義:
    • Personas CRUD + 分析(可 Job
    • Plays save/submitCompose publishSingle + 排程。
    • Outbox list/get/retry/removeworker 到點發送root fail 規則。
    • OwnPosts syncsendReply、Mentions 基本狀態(真送)。
    • 前端 StudioOutbox live。
  • 建議 task 區間: T165T189
  • 驗證: §9.10 PE、§9.11 PL、§9.12 OB、§9.13 OP。

M5 — 靈感/研究/媒體 + 海巡雙路徑

  • 目標: 靈感 session、Exa 研究、媒體;海巡 API爬蟲。
  • 完成定義:
    • InspirationResearchMedia API。
    • Scout brands/products/brief/scan/posts/outreach/homework。
    • dev_mode=false → API 掃描;true → 爬蟲(擴充 session
    • 前端 ScoutInspire live。
  • 建議 task 區間: T190T214
  • 驗證: §9.14 IN、§9.15 SC。

M6 — 邀請關係 + 收斂

  • 目標: 邀請碼、補填、admin 調歸屬;全站 live 煙測;文件與 seeder 補齊。
  • 完成定義:
    • Invite getMyNetworkapplyadmin tree/move。
    • 前端 Invite liveuid 數字顯示。
    • P0+P1 驗收表勾選;已知缺口列表。
  • 建議 task 區間: T215T229
  • 驗證: §9.16 IV回歸 AU/TH/OB/SC 抽樣。

3. 依賴

M0 骨架
 └─► M1 會員Admin設定殼
      └─► M2 OAuth + Job/通知 + FE live 地基
           ├─► M3 用量 + AI/Exa 代打BYOK 分計)
           │    ├─► M4 創作 + 真發送
           │    │    └─► M5 靈感 + 海巡
           │    └─► M5可與 M4 末重疊:海巡依賴帳號+設定+用量)
           └─► M6 邀請 + 收斂(依賴 M1 會員;可與 M5 平行後合併)
  • 硬依賴: M4 發送需要 M2 OAuthM5 爬蟲需要 M1 dev_mode + 擴充 session 機制M3 宜在大量 AI 呼叫前完成。
  • 可重疊: M6 邀請可與 M5 後期平行(不同 module

4. 風險與緩解

風險 緩解
搬 stand-alone 電商殘留拖慢 M0 明確刪域清單CI 不編譯舊 module
Threads OAuth發文審核與限流 M2/M4 用沙箱 AppOB 失敗可觀測;不擋其他 module 開發
BYOK平台計費混用 M3 先定 summary schema 與 USG 測試;前端分顯
爬蟲 session 安全 僅 dev_modespec 開放題在 M5 定協議
範圍過大 嚴格 milestone 閘M0M2 未過不開 M4 真發送
前端 mock uid 字串 live 層轉換或改前端型別T 在 M2

5. 刻意不做(本 plan 週期內)

  • 真實金流發票P2
  • Insights 真管線、Islander agent
  • 前端公開註冊/三方 頁面API 要做)
  • 多份 etc 環境檔
  • 字串 uid 主鍵
  • 以 simulate 當 live 發送完成

6. 測試與驗收策略v2 · 必做)

對齊 spec §9184 IDs§9.18。詳見 docs/product/haixun-backend/TESTING.md

  1. 功能 task:同 PR 至少最小 unithandler case名稱含 ID
  2. 里程碑 integration taskfake 外部):
    • M0T107 testkit、T108 CI
    • M1T119AU/AR/AP/AO/AD
    • M2T136TH/JB
    • M3T156ST/USG
    • M4T172PE/PL/OB/OP含 worker + fake Threads
    • M5T196IN/SC 雙路徑)
    • M6T219IV、T221X、T220FE↔BE live、T222184 矩陣閘、T218smoke 補充)
  3. 禁止:手測/只改 DB 冒充 TH-02OB-02mock 前端測不算 live。
  4. M 完成定義 = 功能 task done 該 M 的 test task 綠。

7. 全域驗證指令

# 後端根目錄apps/backend
cd apps/backend
make test
make build
go run ./cmd/init -f etc/gateway.yaml
go run ./cmd/seeder -f etc/gateway.yaml

# 前端 build + FE↔BE 整合T220
cd apps/web && npm run build
LIVE_API_BASE=http://127.0.0.1:8888 npm run test:integration

# 煙測補充T218
bash scripts/smoke-p0.sh
bash scripts/smoke-p1.sh

8. Task 編號

區間 里程碑
T100T109 M0 骨架 + testkit/CI
T110T129 M1 會員Admin設定 + T119 整合測

| T150T164 | M3 用量BYOKAI·Exa + T156 + ST-16 | | T165T189 | M4 創作Outbox + T172 | | T190T214 | M5 靈感/海巡 + T196 | | T215T229 | M6 邀請 + FE-BE矩陣煙測 |

正式清單:tasks/INDEX.mdv3 · 59 tasksfeat + testUI MUST + 真上傳 + Remove + apps/backend)。

9. 批准

  • Plan 已批准2026-07-10 / 使用者「好先這樣拆吧」)
  • Tasks v3 approved2026-07-10 使用者「ok同意」