thread-master/docs/product/growth-loop/plan.md

191 lines
9.6 KiB
Markdown
Raw Permalink 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: 成長迴路(成果歸因 · 學習閉環 · 健康分 · 邀請獎勵 · Workspace
> Status: `approved`
> Status note: 使用者 2026-07-20「plan 通過」
> Source: `docs/product/growth-loop/spec.md`**approved** 2026-07-20 使用者「spec 通過」)
> Requirements: `docs/product/growth-loop/requirements.md`**approved**
> Last updated: `2026-07-20`
> 底座:`apps/backend` + `apps/web`haixun-backend M0M6 已交付)
## 1. 交付策略
1. **先 P0 價值可見**Outcome 歸因鏈+今日/用量「成本+成果」並列——沒有這塊,本 run 沒有存在理由。
2. **同波完成學習閉環最小版**WeeklyCheckup不扣點 Persona/Brand learning 欄位;重用既有同步貼文/海巡資料,**不**開 Insights 真管線。
3. **P1 護欄先於擴張**AccountHealth存亡級→ InviteReward增長→ Workspace審核PDF代操
4. **加值 hook、不重寫主流程**OutboxScout 送出成功後掛 Outcome既有 API 擴欄優於新平行宇宙。
5. **前後端同 milestone 可驗**:每 M 結束 FE live 接線+對應 spec §9 ID禁止整包最後才接前端。
6. **缺 Threads 訊號就降級**M1 先探測 scopeOC-08 手動成交+觸達必須先綠,再補自動訊號。
驗收一律對照 **spec §9**OC / CU / AL / AH / IR / WS / RGtask 完成定義須寫明覆蓋哪些 ID。
## 2. 里程碑
### M0 — 領域殼與契約地基
- **目標:** OutcomeCheckupHealthWorkspace 的 module 殼、`.api` 路由骨架、index init、空實作回**明確未就緒錯誤**(禁止空成功)。
- **完成定義:**
- go-zero `.api` 增加 outcomescheckupshealthworkspaces或等價分檔`make gen-api`
- Mongo index init 擴充新集合鍵owner_uid、source、week_key…
- 共用 envelope時間uid 契約回歸仍過。
- FE domain types 預留 OutcomeCheckupHealthWorkspace可先 mock 介面)。
- **建議 task 區間:** **T300T309**
- **驗證:** RG-0103 抽樣不破;新路由未完成能力 ≠ 102000 空 data。
### M1 — 成果歸因 P0後端FE
- **目標:** 海巡Outbox 真送或標記完成 → OutcomeEventsummarylist手動成交今日用量成果區。
- **完成定義:**
- Scout outreach published標記完成、Outbox step published → 建立 `observing` Outcome。
- `outcome_observe` Job72h 窗;對話/互動/追蹤能讀則寫,不能讀則跳過。
- APIsummary、list、get、reportupdatedeleteConversion。
- confidenceconfirmedpossible 語意正確。
- FEToday 成果卡、Usage 成本成果並列、Scout 詳情手動成交與回溯。
- Threads scope 探測結果寫進 module 註記或 TESTING 附錄。
- **建議 task 區間:** **T310T329**
- **驗證:** OC-01OC-08RG 抽樣。
### M2 — 每週健檢+資產複利 P0
- **目標:** WeeklyCheckup 自動手動產不扣點3 actionsdeeplinkPersonaBrand learning 可見。
- **完成定義:**
- Job `weekly_checkup`:會員 timezone 週一(無則 UTCfindings 強制 evidenceactions 長度=3。
- generateNow7 日滾動 ≤2 次。
- AI 呼叫**不**寫 Usage 扣點meter。
- 成功 → NotificationFE 報告頁/今日入口+行動 deep-link。
- PersonaBrand getlist 含 learning_*;空態明確。
- **建議 task 區間:** **T330T349**
- **驗證:** CU-01CU-05、AL-01AL-02用量回歸「健檢無消耗事件」。
### M3 — 帳號健康分 P1
- **目標:** 每帳號 01007040 門檻throttle 擋自動送、手動路徑放行。
- **完成定義:**
- `account_health_recompute` 日批+發送事件觸發。
- 訊號24h 發送密度、間隔違規、7 日失敗率、token 狀態;無操作不扣。
- ThreadPlay submitsendOutreach 自動送compose→Outboxwarn 帶 `health_warning`throttle **拒絕**
- 標記完成/複製路徑在 throttle 下仍可用。
- FECrew Badge、Today 警示、送出前錯誤可讀。
- **建議 task 區間:** **T350T364**
- **驗證:** AH-01AH-05OBSC 自動送回歸。
### M4 — 邀請獎勵 P1
- **目標:** 直邀首次 free→starterpro 入點;月上限 50%;邀請頁可見。
- **完成定義:**
- Plan 生效 hook → InviteReward pending→creditedcappedskipped。
- 額度 Starter +100、Pro +300僅單層、僅首次。
- 點數入邀請人平台額度;報表「贈點入帳」與消耗分開。
- getMyNetwork 擴充 rewards_summarylist。
- FE Invite 頁累計與列表。
- **建議 task 區間:** **T365T379**
- **驗證:** IR-01IR-06邀請 apply 一次綁定回歸。
### M5 — Workspace審核白牌月報 P1
- **目標:** 同租戶多 Workspace資源歸屬自審閘PDF 月報。
- **完成定義:**
- Workspace CRUDswitcharchive至少留 1預設 workspace 遷移既有 brandpersonaaccount。
- 建立資源寫 `workspace_id`;列表預設當前區。
- `review_required`:未 approved 擋自動送;同一 Member 自審即可。
- exportPdf(workspace, year_month) 可下載;含成果/發送/海巡/健康摘要結構。
- 用量/方案/邀請不隨 WS 切分。
- FE殼層切換器、審核狀態、匯出入口。
- **建議 task 區間:** **T380T399**
- **驗證:** WS-01WS-06RG 用量不變。
### M6 — 整合、回歸、文件收斂
- **目標:** P0+P1 驗收矩陣FE↔BE smoke已知缺口列表P2 不實作)。
- **完成定義:**
- Integration tests 覆蓋 OCCUALAHIRWS 主路徑(外部 ThreadsAI fake
- FE live 煙測腳本或手測清單勾選。
- README phase → `ready-to-implement` 僅在 tasks 批准後;本 M 結束 = 實作完成定義。
- 明確列出 P2 未做項與 Threads 訊號降級現況。
- **建議 task 區間:** **T400T409**
- **驗證:** spec §9 全表haixun-backend 關鍵回歸抽樣。
## 3. 依賴
```text
M0 領域殼
└─► M1 成果歸因 P0 ──┐
└─► M2 健檢+資產 P0 ──┼─► M6 整合收斂
└─► M3 健康分 P1 ──┤
└─► M4 邀請獎勵 ┤
└─► M5 Workspace ─┘
```
| 關係 | 說明 |
|------|------|
| M1 → M2 | 健檢輸入含 Outcome 摘要;可弱依賴(無 Outcome 仍可產報告)但建議 M1 先綠 |
| M1 → M5 PDF | 月報成果區讀 Outcome summary |
| M3 → M5 審核送出 | 自動送同時受 health + review 雙閘AND |
| M4 獨立於 M3 | 可與 M3 後期平行,但 task 號段仍建議 M3 後以降低衝突 |
| 硬性順序 | **不可**先做 M5 代操而跳過 M1/M2requirements §6 #7 |
## 4. 風險與緩解
| 風險 | 緩解 |
|------|------|
| Threads 歸因訊號全無 | M1 先交付 OC-08 手動觸達observe Job 訊號表可空實作跳過 |
| 健檢品質不穩/無 evidence | 入庫校驗:無 evidence 的 finding 丟棄;不夠 1 條 finding 則 failed 可重試 |
| 健檢誤扣點 | CU-03 自動化斷言meter 白名單不含 checkup |
| 健康分誤傷正常用戶 | 先 log factors 一週可調權重;門檻 40/70 不改;手動路徑永遠可用 |
| 邀請刷點 | 僅首次付費、月上限 50%、單層M4 加簡單同裝置/同支付指紋可選(非必須) |
| Workspace 遷移弄壞既有資料 | M5 預設 WS + 一次性 backfillarchive 軟刪;測試用副本 |
| 範圍膨脹塞 P2 | M6 只列 P2 缺口不實作市集UTMbenchmark 不進 task |
| 與 haixun-backend 回歸衝突 | 每 M 跑 RG + 既有 `go test`web build |
## 5. 刻意不做(本 plan 週期內)
- Insights **真管線**、Islander agent
- Playbook 市集、免費破冰工具、跨帳號 benchmark、UTM 自動歸因P2
- 多租戶帳單、白牌域名
- 多層/現金邀請回饋;邀請回饋回溯
- 新增多帳互回/養帳玩法
- Admin 覆蓋健康分、Admin 全站 Outcome 分析
- Workspace 多成員協作審核P1 僅自審)
- 真實金流改造(沿用既有 purchase 語意觸發 IR 即可)
## 6. 全域驗證指令
```bash
# 後端
cd apps/backend && go test ./... -count=1
# 前端
cd apps/web && npm run build
# 建議(若有 make 目標則用專案既有)
# make test && make web-build
```
里程碑級:
| M | 額外驗證 |
|---|----------|
| M1 | `go test` outcomesscout hook手測 TodayUsage 成果區 |
| M2 | `go test` checkup **無** usage debit手測報告 3 actions |
| M3 | throttle 帳號自動送 4xx業務錯手動標記成功 |
| M4 | 雙帳號 invite→upgrade 點數;第二次升級不發 |
| M5 | 兩 WS 資料隔離PDF 可開 |
| M6 | spec §9 矩陣勾選 |
## 7. Task 號段總表(供拆 task 用)
| 區間 | Milestone | 內容 |
|------|-----------|------|
| T300T309 | M0 | api 殼、index、FE types |
| T310T329 | M1 | Outcome 全链路 + FE |
| T330T349 | M2 | Checkup + Asset learning + FE |
| T350T364 | M3 | AccountHealth + 送出閘 + FE |
| T365T379 | M4 | InviteReward + FE |
| T380T399 | M5 | Workspace + review + PDF + FE |
| T400T409 | M6 | 整合測試、smoke、缺口文件 |
單一 task 目標 **~100200 行** 生產碼變更;超大則再拆。拆 task 時每則必須Goal、Inputs、Outputs、Out of scope、Acceptance指令、Depends on、對應 spec ID。
## 8. 批准
- [x] Plan 已批准2026-07-20使用者「plan 通過」)