# Threads 自動營運補功能計畫 ## 目前狀態 P1/P2 已落地到後端 API、worker 與正式前端: - 自動補庫存:`publish_inventory_policies` + `refill-publish-inventory` job template/worker。 - 智慧時段:`GET /publish-slot-insights` 從 publish health / checkpoints 聚合推薦時段。 - 草稿批量排程:Persona 與 Copy Mission 草稿可批量排到 `publish_queue`,草稿回寫 `scheduled + publish_queue_id`。 - Retry / 告警 / 漏發:`publish_queue_events` 記錄狀態轉移;sweeper 會標記 missed;failed/cancelled/missed 可 retry。 - 頻率護欄:`publish_guard_policies` 支援每日上限、最小間隔、連續失敗 pause / resume。 - P2:內容日曆 date range query、多帳號 dashboard summary、style preset 語調庫、OAuth/API diagnostics。 ## 目標 把現有「海巡找題、AI 文案、手動排程、成效追蹤」串成自動營運閉環,讓巡樓 Console 不只是一個排程工具,而是可持續補庫存、控制風險、追蹤成效的 Threads 工作台。 ## P1:自動補庫存 ### 功能 - 每個 Threads account 可設定每日/每週目標篇數。 - 可設定 weekday/time slots 與 timezone;timezone 僅用於 cron/排程解讀,儲存仍用 unix nanoseconds UTC。 - 指定內容來源:persona、copy mission、brand scan posts、manual seed。 - 當 `publish_queue` 未來 N 天庫存低於門檻時,自動建立 copy generation job,完成後排入 queue。 ### 後端草案 - 新增 model:`internal/model/publish_inventory/`。 - 新增設定 entity: - `account_id` - `target_daily_count` - `low_stock_threshold` - `lookahead_days` - `timezone` - `slots` - `source_refs` - `enabled` - 新增 job step:`refill_publish_inventory`。 - 補 API: - `GET /api/v1/threads-accounts/:accountId/publish-inventory-policy` - `PUT /api/v1/threads-accounts/:accountId/publish-inventory-policy` - `POST /api/v1/threads-accounts/:accountId/publish-inventory/refill-jobs` ## P1:智慧時段 ### 功能 - 第一版以規則為主:帳號的 weekday/time slots + 最小間隔。 - 用 publish health 的 1h/24h/7d checkpoints 回填每個 slot 的平均互動。 - 前端顯示「推薦時段」與「低成效時段」。 ### 後端草案 - 新增 summary usecase,從 `publish_analytics` 聚合 account slot performance。 - 補 API: - `GET /api/v1/threads-accounts/:accountId/publish-slot-insights` - 回傳: - `slots[]` - `avg_likes_1h/24h/7d` - `avg_replies_1h/24h/7d` - `sample_size` - `recommendation` ## P1:草稿批量排程 ### 功能 - 使用者在 copy drafts 中選多篇,一次排到未來 slots。 - 支援根據智慧時段自動分配 `scheduled_at`。 - draft 排入 queue 後狀態改為 `scheduled`,保留 queue item id。 ### 後端草案 - 補 API: - `POST /api/v1/personas/:personaId/copy-drafts/schedule` - `POST /api/v1/personas/:personaId/copy-missions/:missionId/copy-drafts/schedule` - request: - `account_id` - `draft_ids` - `start_at` - `timezone` - `slots` - `mode`: `manual` / `recommended` ## P1:發文 retry / 告警 / 漏發偵測 ### 功能 - failed queue item 可重試,保留失敗歷史。 - sweeper 偵測到超過 grace period 的 scheduled item 未處理,標記為 missed 或重新 enqueue。 - 連續失敗超過門檻時 pause account publish,避免 token 或 rate limit 問題擴大。 ### 後端草案 - `publish_queue_events` 記錄 queue 狀態轉移與錯誤分類。 - `retry` 使用 guarded update,只允許 `failed/cancelled` 回到 `scheduled`。 - 補 API: - `POST /api/v1/threads-accounts/:accountId/publish-queue/:queueId/retry` - `GET /api/v1/threads-accounts/:accountId/publish-queue/:queueId/events` - `GET /api/v1/threads-accounts/:accountId/publish-alerts` ## P1:頻率護欄 ### 功能 - 每帳號每日上限。 - 最小發文間隔。 - 連續失敗自動 pause。 - 手動解除 pause。 ### 後端草案 - 擴充 Threads account connection prefs 或新增 `publish_guard_policy`。 - sweeper dispatch 前檢查 policy;違反則延後排程,不直接發文。 - 補 API: - `GET /api/v1/threads-accounts/:accountId/publish-guard-policy` - `PUT /api/v1/threads-accounts/:accountId/publish-guard-policy` - `POST /api/v1/threads-accounts/:accountId/publish-guard/resume` ## P2 - 內容日曆:補 queue date range query,前端做週/月視圖。 - 多帳號 dashboard:補跨帳號 summary endpoint,避免前端 N+1 requests。 - 語調庫:把 `style_profile`、CTA、禁用詞、品牌口吻抽成 reusable preset。 - OAuth/API 診斷:把 smoke test、token expiry、permission scope 做成標準診斷報告。 ## 驗證策略 - 所有列表維持 `page/pageSize` 與 `pagination/list`。 - 所有時間欄位寫入 unix nanoseconds。 - queue/job 狀態轉移都使用 guarded update。 - 長任務必須 heartbeat,取消走既有 cooperative cancel 語意。