{"allowContribute":false,"item":{"content":"\u003e 回報日期：2026-07-23\n\u003e 影響範圍：AI 員工排程系統、預算管控系統\n\u003e 嚴重程度：🔴 高（造成預算超支 -176%、員工重複執行 10+ 次）\n\n---\n\n## Bug 1：ONCE 排程重複觸發\n\n### 現象\n\n為「技術分析組長」設定了一條 ONCE 排程（`runAt: 2026-07-22T21:00:00+08:00`），結果系統在 21:07~21:19 之間**連續建立了 7+ 個 TODO**，每個 TODO 都觸發組長獨立執行一次。\n\n### 證據\n\n收件匣中出現 7 筆內容完全相同的「技術分析組長任務」TODO，全部來自同一條 ONCE 排程（schedule id: `bfb9b4474685`），各自的 sessionID 不同：\n\n| # | TODO ID | Session ID |\n|---|---------|-----------|\n| 1 | 6a60c159 | 3a1eefe4 |\n| 2 | 6a60c0f7 | b1a3dc8a |\n| 3 | 6a60c1b4 | 2acec233 |\n| 4 | 6a60c212 | f20072c7 |\n| 5 | 6a60c2af | bb2cfb37 |\n| 6 | 6a60c2fc | d9e9b24a |\n| 7 | 6a5d1b31 | dfc1ba4d |\n\n### 期望行為\n\nONCE 排程應保證**只觸發一次**（idempotent），同一 schedule id 不該重複建立 TODO。\n\n---\n\n## Bug 2：月預算上限未強制攔截\n\n### 現象\n\n技術分析組長月預算設定為 **70 credits**，在排程重複觸發後，系統顯示已消耗 **246 credits**（超出 -176 credits，即 -251%），但過程中**沒有任何一次執行被預算檢查攔截**。\n\n### 證據\n\n- 月預算設定：70 credits\n- 實際消耗：246 credits\n- 超出：-176 credits\n- 近 7 天日均：29.4 credits/天\n\n### 期望行為\n\n每次 agent 執行前應檢查 `budgetMonthly - budgetSpent`，若剩餘不足應拒絕執行並回傳 `budget_exceeded` 錯誤，而非放行導致持續超支。\n\n---\n\n## 骨牌效應\n\n兩個 bug 疊加造成的連鎖傷害：\n\n```\nONCE 排程連發 7 槍\n  → 組長跑了 10+ 次（每次 ~25-30 credits）\n    → 圖表讀取師被重複指派多次\n      → 產出 8 個重複的「圖表數據 - TXF1!」NOTE\n      → 多方分析師被重複觸發多次\n      → 空方分析師被重複觸發多次\n  → 總計燒掉 246 credits（預算 70）\n```\n\n## 建議修復方向\n\n1. **ONCE 排程冪等性**：同一 schedule id 已觸發過且 TODO 仍存在/執行中時，不重複建立\n2. **預算強制攔截**：agent 執行前檢查 `budgetSpent \u003e= budgetMonthly` → 直接拒絕，不回退到排程重試\n3. **兩者都做**：即使排程誤觸發，預算也能作為最後防線擋下","createdAt":1784763250530,"deletedAt":null,"id":"a98abad428a49fb8a19f68fa","isNew":false,"isPublic":true,"itemType":"NOTE","name":"CubeLV 平台 Bug 回報：排程重複觸發 + 預算上限未攔截","parents":{"4465d0a863da5d1b345d888c":1784763250530},"preParentID":null,"updatedAt":1788024619378,"updatedBy":{"userId":"6a3dcfc700e9b9fd06d5ef","userName":"蔡其樺"},"version":9},"ownerName":"蔡其樺","subtree":[{"content":"\u003e 回報日期：2026-07-23\n\u003e 影響範圍：AI 員工排程系統、預算管控系統\n\u003e 嚴重程度：🔴 高（造成預算超支 -176%、員工重複執行 10+ 次）\n\n---\n\n## Bug 1：ONCE 排程重複觸發\n\n### 現象\n\n為「技術分析組長」設定了一條 ONCE 排程（`runAt: 2026-07-22T21:00:00+08:00`），結果系統在 21:07~21:19 之間**連續建立了 7+ 個 TODO**，每個 TODO 都觸發組長獨立執行一次。\n\n### 證據\n\n收件匣中出現 7 筆內容完全相同的「技術分析組長任務」TODO，全部來自同一條 ONCE 排程（schedule id: `bfb9b4474685`），各自的 sessionID 不同：\n\n| # | TODO ID | Session ID |\n|---|---------|-----------|\n| 1 | 6a60c159 | 3a1eefe4 |\n| 2 | 6a60c0f7 | b1a3dc8a |\n| 3 | 6a60c1b4 | 2acec233 |\n| 4 | 6a60c212 | f20072c7 |\n| 5 | 6a60c2af | bb2cfb37 |\n| 6 | 6a60c2fc | d9e9b24a |\n| 7 | 6a5d1b31 | dfc1ba4d |\n\n### 期望行為\n\nONCE 排程應保證**只觸發一次**（idempotent），同一 schedule id 不該重複建立 TODO。\n\n---\n\n## Bug 2：月預算上限未強制攔截\n\n### 現象\n\n技術分析組長月預算設定為 **70 credits**，在排程重複觸發後，系統顯示已消耗 **246 credits**（超出 -176 credits，即 -251%），但過程中**沒有任何一次執行被預算檢查攔截**。\n\n### 證據\n\n- 月預算設定：70 credits\n- 實際消耗：246 credits\n- 超出：-176 credits\n- 近 7 天日均：29.4 credits/天\n\n### 期望行為\n\n每次 agent 執行前應檢查 `budgetMonthly - budgetSpent`，若剩餘不足應拒絕執行並回傳 `budget_exceeded` 錯誤，而非放行導致持續超支。\n\n---\n\n## 骨牌效應\n\n兩個 bug 疊加造成的連鎖傷害：\n\n```\nONCE 排程連發 7 槍\n  → 組長跑了 10+ 次（每次 ~25-30 credits）\n    → 圖表讀取師被重複指派多次\n      → 產出 8 個重複的「圖表數據 - TXF1!」NOTE\n      → 多方分析師被重複觸發多次\n      → 空方分析師被重複觸發多次\n  → 總計燒掉 246 credits（預算 70）\n```\n\n## 建議修復方向\n\n1. **ONCE 排程冪等性**：同一 schedule id 已觸發過且 TODO 仍存在/執行中時，不重複建立\n2. **預算強制攔截**：agent 執行前檢查 `budgetSpent \u003e= budgetMonthly` → 直接拒絕，不回退到排程重試\n3. **兩者都做**：即使排程誤觸發，預算也能作為最後防線擋下","createdAt":1784763250530,"deletedAt":null,"id":"a98abad428a49fb8a19f68fa","isNew":false,"isPublic":true,"itemType":"NOTE","name":"CubeLV 平台 Bug 回報：排程重複觸發 + 預算上限未攔截","parents":{"4465d0a863da5d1b345d888c":1784763250530},"preParentID":null,"updatedAt":1788024619378,"updatedBy":{"userId":"6a3dcfc700e9b9fd06d5ef","userName":"蔡其樺"},"version":9}]}