# Spec: 成長迴路（成果歸因 · 學習閉環 · 健康分 · 邀請獎勵 · Workspace）

> Status: `approved`  
> Status note: 使用者 2026-07-20「spec 通過」  
> Source: `docs/product/growth-loop/requirements.md`（**approved** 2026-07-20「需求 OK」）  
> Last updated: `2026-07-20`  
> 底座：`docs/product/haixun-backend/spec.md`（已交付能力；本 run 為**加值層**）  
> 決策對齊：requirements §6 #1–#9

## 1. 摘要

本規格定義巡樓從「工具組合包」升級為「能證明 ROI、越用越準」時的**對外行為契約**。  
**P0：** 海巡成果歸因鏈、今日／用量「成本＋成果」並列、每週帳號健檢（方案內含不扣點）、人設／品牌資產複利可見。  
**P1：** 帳號健康分與強制降速、邀請首次付費點數回饋（單層）、同租戶多 Workspace＋草稿審核＋白牌月報 PDF。  
**P2（本 spec 只鎖邊界，不細寫 API）：** Playbook 市集、免費破冰工具、跨帳號 benchmark、UTM 自動歸因。  
**不做：** Insights 真管線重做、多租戶帳單、多層／現金邀請回饋、新增灰帽玩法。

## 2. 名詞與實體

| 名詞 | 定義 |
|------|------|
| **OutcomeEvent** | 一筆可歸因成果：觸發源（海巡外展／Outbox 步驟）＋訊號類型＋可選手動成交 |
| **AttributionLink** | OutcomeEvent → 來源實體（`scout_post_id` 和／或 `outbox_step_id`）＋送出帳號 id；可回溯 |
| **OutcomeSummary** | 會員在時間窗（本週／本月）的彙總：觸達、對話、追蹤、成交筆數／金額 |
| **WeeklyCheckup** | 每會員每週一份 AI 健檢報告：證據引用＋恰好 3 個下週行動（含 deep-link） |
| **AssetLearning** | 人設／品牌的「學到什麼」摘要＋版本號（可見複利） |
| **AccountHealth** | 每個 ThreadsAccount 的 0–100 分、等級、降速狀態、建議文案 |
| **InviteReward** | 直邀首次付費觸發的點數入帳紀錄（單層） |
| **Workspace** | 同租戶內工作區；擁有 brand／persona／threads_account 歸屬與審核設定 |
| **DraftReview** | 草稿審核狀態：`none`｜`pending`｜`approved`｜`rejected`（僅審核開啟的 Workspace） |
| **Manual path** | 「複製文案 → 開 Threads → 標記完成」；健康分 &lt;40 時敏感操作**只允許**此路徑 |

**沿用底座（不重定義）：** Member、ThreadsAccount、ScoutPost（`outreach_status`）、OutboxBundle/Step、Persona、Brand、Usage/Plan、Invite（`parent_uid`／`invite_code`）、Job、Notification。

## 3. 狀態機

### 3.1 OutcomeEvent（歸因）

```text
(source published | manual_mark_done)
        --> observing          : 進入觀測窗（預設送出後 72h）
observing --> confirmed        : 觀測到對話／互動訊號，或手動回報成交
observing --> possible         : 僅追蹤數變化等弱訊號（標 confidence=possible）
observing --> expired          : 窗結束且無訊號（可不展示於成果卡明細，計入觸達即可）
confirmed|possible --> amended : 會員改／刪手動成交（留 audit）
```

- **觸發源必須已「真送出或標記完成」**：`ScoutPost.outreach_status ∈ {published, …標記完成語意}` 或 Outbox step `published`。  
- **禁止**對 draft／new／skipped 建立 OutcomeEvent。  
- `confidence`：`confirmed`｜`possible`（弱歸因必須標 possible，UI 不可寫成確定成交）。

### 3.2 WeeklyCheckup

```text
(none) --> generating     : 排程到點或手動重產
generating --> ready      : AI 成功寫入報告
generating --> failed     : 可重試；仍不扣點
ready --> superseded      : 同週再次成功重產（舊份保留可查，列表預設最新）
```

- 每會員每自然週（見 §4.2）**至多 1 份「當期」**；7 日內手動重產 **≤2 次**。  
- **永不**寫入 UsageEvent 扣點／meter。

### 3.3 AccountHealth 等級

```text
score >= 70  --> normal      : 不干預
40 <= score < 70 --> warn    : 送出前提示；建議加倍間隔
score < 40   --> throttle    : 強制降速（§4.4）
```

- 每日至少重算一次；有發送／失敗事件可即時重算。  
- `throttle` 解除：分數回升 ≥40 後下一輪重算生效（無人工解鎖按鈕需求；admin 可不擋額度類覆蓋——**本 run 不做** admin 覆蓋健康分，避免繞過護欄）。

### 3.4 InviteReward

```text
(直邀 parent_uid = 邀請人) + (直邀首次 plan: free → starter|pro 且付款成功語意)
        --> pending_credit
pending_credit --> credited     : 點數入邀請人平台額度；未超月上限
pending_credit --> capped       : 超過邀請人當月上限；本筆不發、不遞延
pending_credit --> skipped      : 非首次／非直邀／延伸／已發過
```

- **僅單層**；`延伸` 永不觸發。  
- 額度：Starter **+100**；Pro **+300**（requirements §6 #4）。  
- 月上限：邀請人當月透過邀請獲得點數 ≤ 其**當月方案額度 × 50%**。

### 3.5 Workspace

```text
member 預設 1 個 default workspace
--> 可 create 更多
workspace active 可 archive（軟刪；至少保留 1 個不可 archive）
```

- 方案／用量／邀請碼仍綁 **Member**，不綁 Workspace。

### 3.6 DraftReview（Workspace 開啟審核時）

```text
draft --> pending     : 提交審核
pending --> approved  : 核准 → 才可進 Outbox／sendOutreach 自動路徑
pending --> rejected  : 退回（含理由字串）
rejected --> pending  : 修改後再提
approved --> (送出流程沿用 Outbox／Scout)
```

- Workspace `review_required=false`（預設）：行為與現況相同，無 pending 閘。  
- `review_required=true`：未 `approved` **禁止**自動送出；手動標記完成路徑是否放行 → **允許**（代操可先人工貼再標記），但 UI 需標示「未審核僅手動」。

## 4. 使用者流程（行為）

### 4.1 成果歸因（P0）

1. 島民完成海巡外展：**sendOutreach 真送** 或 **標記完成（手動路徑）**。  
2. 系統建立 OutcomeEvent（`source_type=scout_outreach`，連 `scout_post_id`、送出 `threads_account_id`），狀態 `observing`，`window_ends_at = sent_at + 72h`。  
3. Worker／排程在窗內拉取可讀訊號（§5.4）：  
   - **對話**：目標串上出現對己方回覆的再回／引用（能判則 `confirmed`）。  
   - **互動**：己方回覆或目標貼的 likes／replies 計數上升（能讀則記；弱則 `possible`）。  
   - **追蹤**：送出帳號 `followers_count` 在窗內淨增加 → 預設 `possible`（不可宣稱「此回覆帶來追蹤」為確定，除非未來有更強訊號）。  
4. 島民可在命中詳情或成果明細 **手動回報成交**（金額選填、備註選填、幣別預設 TWD）→ `confirmed` + `kind=conversion`。  
5. **今日頁**：成果摘要卡（本週：對話數、possible／confirmed 追蹤、成交筆數／金額）。  
6. **用量頁**：成本區（既有 platform／BYOK）**與**成果區並列；不可只顯示成本。  
7. 明細列表：每筆可點回 Scout 命中或 Outbox 步驟。  
8. **降級：** 任一 API 訊號不可用 → 仍提供手動成交＋「已送出／標記完成」計入觸達；**禁止**整段歸因 API 回未實作空成功。

### 4.2 每週健檢（P0）

1. **節奏：** 以會員 `timezone` 的**當地週一 00:00** 起可自動產（無 timezone → UTC）；Job `weekly_checkup`。  
2. 輸入：該會員已同步貼文成效（既有 own posts／insights 本地資料）、近 14 日海巡送出與 Outcome 摘要、active 人設摘要。  
3. 輸出（`ready`）：  
   - `summary` 短文（TC）  
   - `findings[]`：每條含 `claim` + `evidence[]`（貼文 id／permalink／指標，**至少 1 條 evidence**，無 evidence 的 finding 不得入庫）  
   - `actions[3]`：固定 3 個；每項含 `title`、`reason`、`deeplink`（枚舉：`today`｜`scout`｜`studio_compose`｜`studio_inspire`｜`crew_persona`｜`outbox`）  
4. **計費：** 不扣 credits、不寫 platform meter、不寫 byok 次數。AI 呼叫可用平台 key；失敗可重試。  
5. 手動「提前重產」：7 日滾動窗內 ≤2 次；超過回明確錯誤。  
6. 完成 → 站內通知；今日頁可進最新報告。

### 4.3 資產複利可見（P0）

1. 人設詳情／列表：顯示 `learning_summary`（短）、`learning_version`（遞增整數）、`learned_from_posts_count`、`last_learned_at`。  
2. 品牌詳情：同上語意（來源可為海巡 homework／brief 累積）。  
3. 更新時機（最小）：人設分析 Job 成功、健檢 `ready` 時可附帶刷新 summary（不強制每次分析都變 version；有實質變更才 +1）。  
4. 空狀態：尚未學習時明確文案，禁止假數據。

### 4.4 帳號健康分（P1）

1. 每個 `ThreadsAccount` 計算 `score`、`level`（normal｜warn｜throttle）、`factors[]`（可解釋扣分項）、`advice`。  
2. **訊號方向（權重數值 plan／實作可調，行為門檻鎖定）：**  
   - 24h 發送次數過高 → 扣  
   - 最小間隔違規（連續 steps 間隔過短）→ 扣  
   - 近 7 日 Outbox 失敗率高 → 扣  
   - token 過期／error／不可用 → 重扣  
   - 多日無操作 → **不扣**  
3. **送出前檢查（自動路徑）：** ThreadPlay submit、sendOutreach 自動送、compose 進 Outbox。  
   - `warn`：API 仍允許，但 response 帶 `health_warning`；前端必顯示。  
   - `throttle`：**拒絕**自動送出（明確錯誤碼）；僅允許手動路徑（複製＋標記完成）。  
4. 今日頁：顯示分數最低的帳號警示（若有 warn／throttle）。  
5. Crew 帳號列：分數 Badge（與既有 token 健康文案並存，不取代 token 狀態）。

### 4.5 邀請獎勵（P1）

1. 沿用既有邀請綁定（`parent_uid` 一次）。  
2. 當直邀會員**首次**完成 free→starter 或 free→pro 的方案生效（對齊既有 purchase／plan 成功語意）：  
   - 解析邀請人 = `parent_uid`  
   - 計算應發點數與月上限 → `credited` 或 `capped`／`skipped`  
3. 點數進入邀請人**平台方案額度池**（與 BYOK 無關）；寫 `InviteReward` 紀錄 + 可選 Usage 類「贈點」事件（`key_mode` 不適用；`meter=invite_bonus` 或等價，**不計入**付費消耗進度的「已用」誤解——報表分開「贈點入帳」）。  
4. 邀請頁：累計已獲點數、本月已獲／上限、最近回饋列表。  
5. Admin **不**手改回饋紀錄（防爭議）；糾錯走既有調 `parent_uid`（調後**不回溯**已發點數）。

### 4.6 Workspace 與審核（P1）

1. 會員可 list／create／rename／switch／archive Workspace（至少留 1 個）。  
2. Brand、Persona、ThreadsAccount **歸屬** `workspace_id`；建立時寫入當前 Workspace。  
3. 切換 Workspace 後，列表 API 預設只回該區資源；「全部」視圖可選（若做，須明確 query）。  
4. Workspace 設定 `review_required`：開啟後，該區 plays／compose／outreach 進自動發送前須 `approved`。  
5. 審核操作：提交者 pending；審核者（同會員多席或同 Workspace 成員——**P1 最小：同一 Member 自審即可**；多成員協作 P2）approved／rejected。  
6. **白牌月報 PDF：** 選 Workspace＋月份 → 匯出含成果摘要、發送數、海巡完成數、健康分概況；無巡樓品牌強制露出（可選 footer「Powered by…」開關預設關）。  
7. 用量／方案／邀請：**不**隨 Workspace 切分。

### 4.7 P2 邊界（只鎖不做細節）

| 能力 | 行為邊界 |
|------|----------|
| Playbook 市集 | 可分享 brief／人設風格／劇本模板；可匿名；引用後進自己 Workspace |
| 免費破冰 | 免登入工具；結果導註冊；不做付費牆內容 |
| Benchmark | 匿名聚合；樣本不足不顯示 |
| UTM 歸因 | 點擊進 OutcomeEvent；與手動成交並存 |

## 5. 介面契約

### 5.1 共通

- 沿用 `haixun-backend`：成功 `code=102000`；`page`/`pageSize` → `pagination`+`list`；時間 **unix ns UTC**；`uid` 數字。  
- Auth：Bearer；資源擁有者 = 登入 uid；Admin 另註。  
- **禁止**未實作回成功空資料。

### 5.2 API 能力分組（路徑前綴建議 `/api/v1`；精確 path 由 `.api` 定）

| 域 | 主要行為 | 波次 | 權限 |
|----|----------|------|------|
| **Outcomes** | `summary(from,to\|week\|month)`；`list`（filter kind/confidence/source）；`get`；`reportConversion`；`updateConversion`；`deleteConversion` | P0 | member |
| **Checkups** | `latest`；`list`；`get`；`generateNow`（受 7 日 2 次限） | P0 | member |
| **Asset learning** | 併入既有 Persona／Brand `get`／`list` 回應欄位（§4.3）；可選 `refreshLearning` | P0 | member |
| **Account health** | `listByAccounts`；`get(accountId)`；送出類 API 附加 `health_warning` 或 throttle 錯誤 | P1 | member |
| **Invite rewards** | 併入 `getMyNetwork` 擴充：`rewards_summary`、`rewards_list`；入帳由 plan 生效內部觸發 | P1 | member |
| **Workspaces** | CRUD／switch／archive；`setReviewRequired`；資源 create 帶 `workspace_id` | P1 | member |
| **Draft review** | `submit`／`approve`／`reject`／`listPending` | P1 | member |
| **Monthly report** | `exportPdf(workspace_id, year_month)` → 檔案 URL 或 stream | P1 | member |

### 5.3 前端頁面

| 路由 | 變更 |
|------|------|
| `/app/today` | ＋成果摘要卡；＋最新健檢入口；＋健康分警示（P1） |
| `/app/usage` | 成本｜成果雙欄（或上下並列） |
| `/app/scout` 命中詳情 | ＋歸因狀態；＋手動回報成交 |
| `/app/crew` 帳號 | ＋健康分 Badge（P1）；token 狀態保留 |
| `/app/crew` 人設 | ＋learning 摘要／版本 |
| `/app/brands` | ＋learning 摘要／版本 |
| 新或內嵌 `/app/checkup` | 健檢報告全文＋3 行動 deep-link |
| `/app/invite` | ＋回饋累計與列表（P1） |
| Workspace 切換器（殼層） | P1；預設 Workspace 名稱可編 |
| 月報匯出入口 | P1 在 Workspace 設定或用量／成果區 |

### 5.4 Job / Worker

| Template | 觸發 | 成功 |
|----------|------|------|
| `outcome_observe` | 定時／送出後入隊 | 更新 OutcomeEvent 訊號與 confidence |
| `weekly_checkup` | 週排程／手動 generateNow | Checkup `ready`＋通知；**無 Usage 扣點** |
| `account_health_recompute` | 日排程／發送事件 | 更新 AccountHealth |
| （既有）`outbox_publish_step` / `scout_scan` 等 | 不變 | 送出成功後**必須** hook 建立 observing Outcome（scout／outbox 源） |

### 5.5 歸因訊號與 Threads API（驗證表）

| 訊號 | 理想來源 | 不可用時 |
|------|----------|----------|
| 對話（再回／引用） | 回覆 conversation／replies API | 僅保留手動標記「有對話」可選（P0 可不做此手動，至少保留成交手動） |
| 互動計數 | media insights / reply fields | 跳過該訊號 |
| 追蹤淨增 | 使用者檔案 `followers_count` 快照 diff | 跳過 |
| 成交 | **僅手動**（P0） | — |
| UTM 點擊 | P2 | — |

Spec 實作前：**用現有 OAuth scope 跑一次探測**；把「可用／不可用」寫進實作註記，但**不得**阻塞手動成交＋觸達計數的交付。

### 5.6 錯誤語意（新增 scope 建議）

| 情境 | 行為 |
|------|------|
| 健檢重產超過 7 日 2 次 | 明確錯誤，非 102000 |
| 健康分 throttle 擋自動送 | 明確錯誤；message 含分數與「請用手動路徑」 |
| 審核未准就自動送 | 明確錯誤 |
| 邀請回饋 capped | 邀請人側可查 `capped` 紀錄；被邀請人方案仍成功 |
| PDF 匯出無資料月 | 仍可出「空月」報表或明確錯誤（二選一，實作固定一種） |

## 6. 與現況對照（Retain / Replace / Remove）

| 能力 | Retain | Replace | Remove | 備註 |
|------|--------|---------|--------|------|
| 海巡 outreach 狀態機／真送 | ✅ | 送出後 **＋** Outcome observing | — | 加值 hook |
| 今日頁待回／目標 | ✅ | **＋**成果卡、健檢入口、健康警示 | — | |
| 用量頁 platform／BYOK 分欄 | ✅ | **＋**成果區並列 | 純成本唯一視角 | |
| Insights **真管線** | — | — | **仍不做**（haixun-backend P2） | 健檢只用既有同步資料 |
| Insights 頁 local／既有同步 | ✅ 可當健檢輸入 | — | 不冒充本 run 完成 Insights | |
| 人設 8D／分析 Job | ✅ | 回應 **＋** learning 欄位 | — | |
| 邀請關係樹／apply | ✅ | **＋**首次付費回饋 | 多層／現金 | |
| Crew token 健康文案 | ✅ | **＋**操作健康分（不同維度） | 混成一個「健康」 | 兩者並陳 |
| 單租戶 Member 模型 | ✅ | **＋**同租戶 Workspace | 多租戶帳單 | |
| ThreadPlay／養帳玩法 | ✅ 既有 | 僅 **throttle 護欄** | 新增更激進玩法 | |
| 手動「標記完成」路徑 | ✅ | throttle 時升為主路徑 | 刪除人工路徑 | |
| 模擬／空成功 API | — | — | **禁止** | AGENTS.md |

## 7. 非功能

- **安全／權限：** Outcome／Checkup／Workspace 皆 owner_uid 隔離；PDF 僅己方 Workspace；Admin 不預設讀全站 Outcome（若做 admin 分析 → 另開需求）。  
- **隱私：** 健檢 evidence 不跨會員；benchmark（P2）僅匿名聚合。  
- **計費：** 健檢 AI **不扣點**；邀請贈點不計入「已消耗」誤導；BYOK 規則不變。  
- **可觀測：** Outcome observe Job 進度／錯誤；健檢 failed 原因；健康分重算日誌無 token 明文。  
- **效能：** Outcome 列表 pageSize≤50；observe 窗 72h；健康分重算 O(帳號數) 可接受日批。  
- **語系：** 健檢與成果文案預設繁中台灣語感。  
- **契約：** go-zero `.api` → generate；業務在 logic／module。

## 8. 資料保存（邏輯層）

| 實體 | 關鍵欄位 | 生命週期 |
|------|----------|----------|
| OutcomeEvent | id, owner_uid, source_type, source_id, threads_account_id, kind, confidence, metrics, conversion?, window_*, created_at | 送出後建→觀測→終態；成交可 amend |
| OutcomeSnapshot（可選） | account_id, followers_count, taken_at | 觀測用快照 |
| WeeklyCheckup | id, owner_uid, week_key, status, summary, findings[], actions[3], created_at | 週產；舊份可查 |
| AssetLearning 欄位 | 掛 Persona／Brand：summary, version, from_count, last_learned_at | 隨分析／健檢更新 |
| AccountHealth | threads_account_id, owner_uid, score, level, factors[], advice, computed_at | 日更／事件更 |
| InviteReward | id, inviter_uid, invitee_uid, plan_id, points, status, created_at | 首次付費一次 |
| Workspace | id, owner_uid, name, review_required, archived, is_default | CRUD |
| 資源歸屬 | Brand/Persona/ThreadsAccount.workspace_id | 建立時寫入 |
| DraftReview | ref_type, ref_id, workspace_id, status, reason?, actor_uid | 審核流 |
| Report export | 暫存 URL 或短 TTL 物件 | 匯出後可過期 |

## 9. 驗收場景（Given / When / Then）

**共通：** 成功 envelope `102000`；時間 ns UTC；未實作≠空成功。

### 9.1 P0 歸因

| ID | Given | When | Then |
|----|-------|------|------|
| OC-01 | 海巡命中已 published 或標記完成 | 系統處理 | 存在 OutcomeEvent observing／終態；可 list 回溯 source |
| OC-02 | observing 窗內出現可讀對話訊號 | observe Job | confidence=confirmed 或等價 kind=reply；summary 對話數＋1 |
| OC-03 | 僅 followers 淨增 | observe Job | confidence=possible；UI 不顯示為確定成交 |
| OC-04 | 會員手動回報成交金額 1000 | reportConversion | kind=conversion confirmed；成果卡成交可見 |
| OC-05 | 改／刪成交 | update／delete | 明細與 summary 一致；非 102000 空操作 |
| OC-06 | 今日頁 | 開啟 | 可見本週成果摘要（可為 0，但區塊存在） |
| OC-07 | 用量頁 | 開啟 | 成本區與成果區**同時**存在 |
| OC-08 | API 全無社群訊號 | 僅手動成交＋觸達 | 歸因域仍可用；不得整域 501 空成功 |

### 9.2 P0 健檢與資產

| ID | Given | When | Then |
|----|-------|------|------|
| CU-01 | 會員有 timezone=Asia/Taipei | 當地週一後排程 | weekly_checkup Job 產出 ready |
| CU-02 | ready 報告 | get | findings 每條含 evidence；actions 長度=3 且 deeplink 合法 |
| CU-03 | 產生健檢 | 查 UsageEvent | **無**因健檢產生的扣點／meter 消耗 |
| CU-04 | 7 日內已手動重產 2 次 | generateNow 第 3 次 | 明確錯誤 |
| CU-05 | Job 成功 | 通知 | 站內通知可點進報告 |
| AL-01 | 人設分析或健檢刷新 learning | get persona | learning_summary 或明確空態；有變更則 version≥1 |
| AL-02 | 新品牌無學習 | get brand | 空態文案，非假數字 |

### 9.3 P1 健康分

| ID | Given | When | Then |
|----|-------|------|------|
| AH-01 | 帳號 connected | get health | 0–100 + level |
| AH-02 | score 40–69 | 自動送出 | 成功或進行中，但帶 health_warning |
| AH-03 | score &lt;40 | ThreadPlay submit 或 sendOutreach 自動送 | **拒絕**；message 指手動路徑 |
| AH-04 | score &lt;40 | 複製＋標記完成 | **允許** |
| AH-05 | 今日頁有 throttle 帳號 | 開啟 | 可見警示 |

### 9.4 P1 邀請獎勵

| ID | Given | When | Then |
|----|-------|------|------|
| IR-01 | A 邀請 B；B 首次 free→starter 成功 | 系統 | A 得 +100；InviteReward credited |
| IR-02 | B 首次 free→pro | 系統 | A +300 |
| IR-03 | B 再續訂／再升級 | 系統 | **不再**發點 |
| IR-04 | A 本月邀請點已達方案額度 50% | 再觸發 | capped；B 方案仍成功 |
| IR-05 | 僅延伸關係非直邀 | 付費 | skipped |
| IR-06 | 邀請頁 | 開啟 | 可見累計與列表 |

### 9.5 P1 Workspace／審核／PDF

| ID | Given | When | Then |
|----|-------|------|------|
| WS-01 | 新會員 | me／list workspaces | ≥1 default |
| WS-02 | 建 WS-B 並切換 | 建 brand | brand.workspace_id=WS-B；WS-A 列表不可見 |
| WS-03 | review_required=true | 未審核自動送 | 拒絕 |
| WS-04 | pending → approved | 再自動送 | 允許（仍受健康分約束） |
| WS-05 | exportPdf | 請求 | 得 PDF（或 URL）；含成果／發送摘要結構 |
| WS-06 | 用量／方案 | 切 WS | **不變**（仍綁會員） |

### 9.6 回歸（底座不可破壞）

| ID | Given | When | Then |
|----|-------|------|------|
| RG-01 | 既有 Outbox 真發送 | 送出 | 仍 published 僅在平台成功後 |
| RG-02 | BYOK 用量 | 呼叫 | 仍分欄、健檢不混入消耗 |
| RG-03 | 邀請 apply 一次綁定 | 再 apply | 仍拒絕 |

## 10. 開放規格問題

1. ~~週一起點時區~~ → **已定：會員 timezone，無則 UTC**（§4.2）。  
2. Threads 各訊號實際 scope 探測結果 → **實作前填表**，不阻 P0 手動＋觸達。  
3. Draft review P1 是否僅「同一 Member 自審」→ **已定是**；多成員協作 P2。  
4. 健康分權重精確數字 → plan／實作可調；**門檻帶 70／40 鎖定**。  
5. PDF 引擎選型 → plan 定（行為：可下載白牌月報）。

## 11. 批准

- [x] Spec 已批准（2026-07-20／使用者「spec 通過」）
