{"allowContribute":false,"item":{"artifactHtml":"\u003cstyle\u003e\n  :root { --paper:#F7F8F7; --ink:#14191A; --ink2:#4E5658; --accent:#0D5A63; --soft:#DFEEF0; --hair:#D8DEDC; --ok:#ecfdf5; --okBd:#10b981; --warn:#fef3c7; --warnBd:#f59e0b; }\n  :root[data-theme=\"dark\"] { --paper:#121616; --ink:#E9EDEC; --ink2:#AEB6B7; --accent:#6FC5D2; --soft:#12333A; --hair:#2B3233; }\n  .doc { background:var(--paper); color:var(--ink); padding:28px 30px; font:15px/1.72 -apple-system,\"PingFang TC\",sans-serif; }\n  .eyebrow { font:600 11px ui-monospace; letter-spacing:.16em; color:var(--accent); }\n  h1 { font-size:25px; line-height:1.25; letter-spacing:-.015em; margin:10px 0 6px; }\n  .lede { color:var(--ink2); margin:0 0 10px; font-size:13px; }\n  .meta { font-size:11px; color:#888; margin:0 0 12px; }\n  h2 { font-size:17px; margin:28px 0 8px; padding-bottom:6px; border-bottom:2px solid var(--soft); }\n  h3 { font-size:14px; margin:18px 0 6px; color:var(--accent); }\n  p, li { color:var(--ink2); }\n  .callout { display:flex; gap:12px; padding:13px 14px; background:var(--soft); border-radius:8px; margin:14px 0; font-size:13px; }\n  .ok { background:var(--ok); border:1px solid var(--okBd); border-radius:8px; padding:12px; margin:12px 0; font-size:13px; }\n  .warn { background:var(--warn); border:1px solid var(--warnBd); border-radius:8px; padding:12px; margin:12px 0; font-size:13px; }\n  table { border-collapse:collapse; width:100%; font-size:13px; margin:10px 0; }\n  th,td { text-align:left; padding:8px 10px; border-bottom:1px solid var(--hair); vertical-align:top; }\n  th { font:600 11px ui-monospace; color:var(--ink2); background:var(--soft); }\n  code { font:12px ui-monospace; background:var(--soft); padding:1px 5px; border-radius:4px; }\n  pre { background:#0f172a; color:#e2e8f0; padding:14px 16px; border-radius:8px; overflow:auto; font:12px/1.6 ui-monospace; white-space:pre-wrap; word-break:break-all; }\n  ul,ol { padding-left:22px; } li{margin:4px 0}\n  @media(max-width:640px){.doc{padding:20px 18px}h1{font-size:21px}}\n\u003c/style\u003e\n\u003cdiv class=\"doc\"\u003e\n\u003cheader\u003e\n\u003cdiv class=\"eyebrow\"\u003en8n 交付規格 · 方案 A 定版 · 2026-08-19\u003c/div\u003e\n\u003ch1\u003en8n 巡檢規格 — 自動維運員 v4.0 配套（2026-08-19）方案A\u003c/h1\u003e\n\u003cp class=\"lede\"\u003e機器做巡檢，AI 做判斷。方案 A：重複掛單僅偵測標記（PENDING_AI），不自動 cancel。\u003c/p\u003e\n\u003c/header\u003e\n\u003cp class=\"meta\"\u003eID: 7391612712d2a2512e8d64d6 ｜ 狀態：方案A已裁定（原 08-19 版已作廢，以此版為準）｜ 關聯：自動維運員 v4.0 79a7e177 ＋ WORK ORDER ec1749f0 方案A ＋ 回覆 4e0e16c9 ｜ Vault 路徑（Claude Code 直讀，不用 cubelv://）：\u003ccode\u003e/vault/筆記/NOTE_FOLDER__🏛️ CEO 指揮中心_3d52618d766d6984560f58c8/NOTE__n8n 巡檢規格*\u003c/code\u003e\u003c/p\u003e\n\u003cdiv class=\"callout\"\u003e\u003cb\u003e分工（不變）：\u003c/b\u003e n8n = 全部 Step-by-step 操作鏈（GET/POST、重試、Verify、差集比對、組 JSON）；AI（自動維運員 08:45）= 讀 JSON 判 PASS/WARN/FAIL、建 CEO_BUG、執行交易操作（cancel 僅 AI 經判斷後執行）、寫維運報告。AI 不重跑巡檢。\u003c/div\u003e\n\u003cdiv class=\"ok\"\u003e\u003cb\u003e方案 A 變更（本次唯一改動）：\u003c/b\u003e 原 Full/Fast Scan 節 4a「重複掛單→直接 cancel」改為「僅偵測標記 PENDING_AI，不呼叫 POST /api/cancel-order」。n8n 此階段不碰真實掛單；cancel 由 AI 08:45 依判級表執行。詳見 §2.4a 與 §4 JSON 契約。\u003c/div\u003e\n\u003ch2\u003e1. Workflow 清單\u003c/h2\u003e\n\u003ctable\u003e\n\u003ctr\u003e\u003cth\u003eWorkflow\u003c/th\u003e\u003cth\u003e觸發\u003c/th\u003e\u003cth\u003e輸出\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cstrong\u003eFull Scan\u003c/strong\u003e\u003c/td\u003e\u003ctd\u003eCron 每日 08:42 Asia/Taipei\u003c/td\u003e\u003ctd\u003eNOTE 巡檢JSON-YYYY-MM-DD-0842（JSON）到 CEO 指揮中心 3d52618d...\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cstrong\u003eFast Scan\u003c/strong\u003e\u003c/td\u003e\u003ctd\u003eCron 每小時 :00\u003c/td\u003e\u003ctd\u003e異常才寫 NOTE 快篩告警-YYYY-MM-DD-HHmm + sendPush，不自動 cancel\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003ch2\u003e2. Full Scan 節點鏈（08:42）— 9 節點，方案A版\u003c/h2\u003e\n\u003cpre\u003e0. 讀營運長 Brief：find 名稱=CEO 每日摘要-YYYY-MM-DD → 取摘要區塊供 AI 引用\n1. Google Sheets 健康: GET /api/ping → 5xx 重試 60s×1（失敗標 UNKNOWN，不阻斷）\n2. BingX 健康: GET /api/open-orders（探活，401/5xx 標 UNKNOWN，不阻斷）\n3. 取 BingX 實際狀態: GET /api/open-orders + GET /api/positions + GET /api/balance + POST /api/read(主交易) + POST /api/read(跟單)（任一 5xx→UNKNOWN）\n4. 自動修復/標記 8 項（方案A）:\n   a. 【重複掛單｜方案A：僅標記】同 symbol+同 positionSide 分組≥2 → 產 candidates=[{orderId,symbol,positionSide,price,qty,age}]，寫 autoFix[{id:4,found:1,action:\"PENDING_AI\",candidates}]，不呼叫 POST /api/cancel-order，不做 Verify。AI 08:45 再判斷是否 cancel。\n   b. STOP遺失: 有倉無對應止損 → 標記 found，action PENDING_AI，交 AI 通知持倉管理師補掛\n   c. NOTE錯夾/未歸檔: vault_query parents 比對（跳過 DL-）→ 記錄待搬清單 candidates，action PENDING_AI（AI 執行 vault_update_items）\n   d. 其他 5 項: 記錄狀態供 AI 判級（不含交易寫操作）\n5. 三邊對帳差集: 交易計畫NOTE ↔ 主交易記錄Sheets ↔ BingX ↔ Dashboard（DL已廢 2026-08-23 B1，不再對帳 DL ↔ Sheets）\n6. Version Check: GET /api/version ×3 (BingX/CEO Office/Sheets) + web_fetch Apps Script + Data Dictionary NOTE（4aaedc3b）\n7. 引用有效性: 取 3 Agent（策略長/營運長/盈虧分析師）content+memory → 正則 cubelv://note/… → 逐一 vault_query 驗證\n8. 效能+交易計畫筆數: invoke agent_usage(漏斗分析員, 7天) + find NOTE__交易計畫-* | wc -l（DL筆數已廢）\n9. 組 JSON → 建 NOTE 巡檢JSON-YYYY-MM-DD-0842 到 CEO 指揮中心(3d52618d...)\u003c/pre\u003e\n\u003ch3\u003e與原版差異對照\u003c/h3\u003e\n\u003ctable\u003e\n\u003ctr\u003e\u003cth\u003e節\u003c/th\u003e\u003cth\u003e原版（已作廢）\u003c/th\u003e\u003cth\u003e方案A（本版）\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e4a 重複掛單\u003c/td\u003e\u003ctd\u003e分組≥2 → 留最新 → 直接 POST cancel 舊 → Verify\u003c/td\u003e\u003ctd\u003e分組≥2 → 寫 candidates + PENDING_AI，不 cancel，不 Verify\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eFast Scan 重複掛單\u003c/td\u003e\u003ctd\u003e同上，直接 cancel\u003c/td\u003e\u003ctd\u003e同上，僅標記 + sendPush 告警，不 cancel\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eJSON autoFix[4]\u003c/td\u003e\u003ctd\u003e{found, fixed}\u003c/td\u003e\u003ctd\u003e{found, action:\"PENDING_AI\", candidates:[...]}\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003ch2\u003e3. Fast Scan 節點鏈（每小時 :00）— 方案A版\u003c/h2\u003e\n\u003cpre\u003e僅 3 項（輕量），皆為「標記不執行\":\n- 重複掛單(同 §2.4a 方案A：僅標記 PENDING_AI)\n- STOP遺失(標記)\n- 保證金率 = Σmargin / equity → \u0026gt;30% 告警、\u0026gt;50% 立即建 P0 Bug（讀 balance/positions 失敗則標 UNKNOWN）\n\n任一異常（found\u0026gt;0 或 margin\u0026gt;30%）→ sendPush + NOTE 快篩告警-HHmm（含 candidates 明細）；無異常不寫 NOTE。Fast Scan 全程不呼叫 cancel-order。\u003c/pre\u003e\n\u003ch2\u003e4. JSON 契約（Full Scan 輸出）— 方案A版\u003c/h2\u003e\n\u003cpre\u003e{\n  \"at\": \"2026-08-19T08:42:00+08:00\",\n  \"schema\": \"2.3\",\n  \"sheetsPing\": {\"status\": 200, \"retry\": 0},\n  \"bingxHealth\": {\"openOrders\": 200, \"positions\": 3},\n  \"autoFix\": [\n    {\"id\":4, \"name\":\"重複掛單\", \"found\":1, \"action\":\"PENDING_AI\", \"candidates\":[{\"orderId\":\"1829...\",\"symbol\":\"BTC-USDT\",\"positionSide\":\"LONG\",\"price\":64189,\"qty\":0.002,\"ageMin\":47},{\"orderId\":\"1828...\",\"symbol\":\"BTC-USDT\",\"positionSide\":\"LONG\",\"price\":64150,\"qty\":0.002,\"ageMin\":312}]},\n    {\"id\":5, \"name\":\"STOP遺失\", \"found\":0, \"action\":\"NONE\"}\n  ],\n  \"integrity\": {\n    \"planSheets\": {\"status\":\"PASS\", \"orphan\":0, \"ghost\":0},\n    \"sheetsBingx\": {\"status\":\"PASS\", \"zombie\":0, \"unrecorded\":0},\n    \"pnlBingx\": {\"status\":\"PASS\", \"mismatch\":0},\n    \"dashboardBingx\": {\"status\":\"PASS\"}\n  },\n  \"versions\": {\n    \"bingx\": {\"version\":\"v6.2\",\"schema\":\"2.3\"},\n    \"ceoOffice\": {\"version\":\"v1.1\",\"schema\":\"2.3\"},\n    \"sheets\": {\"version\":\"v3.0\",\"schema\":\"2.3\"},\n    \"appsScript\": {\"version\":\"v4.7\",\"schema\":\"2.3\"},\n    \"dataDict\": {\"version\":\"v2.3\",\"schema\":\"2.3\"},\n    \"allMatch\": true\n  },\n  \"refIntegrity\": {\"checked\":6, \"pass\":6, \"warn\":0, \"fail\":0},\n  \"agentPerf\": {\"tokens\":[900000,1200000], \"credits\":[12,18], \"durationSec\":[120,180], \"level\":\"PASS\"},\n  \"planCount\": {\"n\": 20, \"level\":\"PASS\"},\n  \"positions\": 3, \"openOrders\": 3, \"equity\": 149.13, \"marginRate\": 0.128\n}\u003c/pre\u003e\n\u003cp\u003e欄位規則：\u003ccode\u003eautoFix[].action\u003c/code\u003e 僅允許 \u003ccode\u003ePENDING_AI\u003c/code\u003e / \u003ccode\u003eNONE\u003c/code\u003e（方案A不允許 \u003ccode\u003eAUTO_FIXED\u003c/code\u003e / \u003ccode\u003efixed\u003c/code\u003e）。\u003ccode\u003ecandidates\u003c/code\u003e 為空陣列或明細，明細至少含 \u003ccode\u003eorderId + symbol\u003c/code\u003e。\u003c/p\u003e\n\u003ch2\u003e5. AI 端讀取方式（08:45）— 方案A\u003c/h2\u003e\n\u003cp\u003e自動維運員 08:45：\u003ccode\u003efind NOTE 巡檢JSON-當日-0842 → Read JSON → autoFix[4] 若 PENDING_AI 且 candidates≥2 → 按判級表決定是否 POST /api/cancel-order?orderId=\u0026amp;symbol=SYMBOL-USDT（需 query string，Hedge 禁 reduceOnly）→ Verify 不在清單 → 寫維運報告「已處理/已轉人工」\u003c/code\u003e。Fast Scan 的每小時 PENDING_AI 僅推播，統一批次由 08:45 處理（緊急保證金 \u0026gt;50% 除外，AI 即時處理）。若 JSON 缺失 → 最小自檢 + Low Bug。\u003c/p\u003e\n\u003ch2\u003e6. 禁令與細節（沿用）\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ecancel-all\u003c/code\u003e 禁用；\u003ccode\u003ecancel-order\u003c/code\u003e 必須 \u003ccode\u003e?orderId=\u0026amp;symbol=\u003c/code\u003e query string（方案A僅 AI 側可呼叫，n8n 不呼叫）\u003c/li\u003e\n\u003cli\u003e無 \u003ccode\u003emodify\u003c/code\u003e API，改單 = cancel→place；Hedge 禁 \u003ccode\u003ereduceOnly\u003c/code\u003e，平倉 side↔positionSide 相反\u003c/li\u003e\n\u003cli\u003eDL- NOTE 一律不碰；SSOT 寫後必 Read Verify（n8n 實作「寫→回讀→比對」）\u003c/li\u003e\n\u003cli\u003eDL 746 已建 d4809680，同窗口不重複；效能紅燈同窗口不重複\u003c/li\u003e\n\u003cli\u003e任一 GET 5xx/401 重試一次仍失敗 → 該欄標 \u003ccode\u003eUNKNOWN\u003c/code\u003e + 註 error，不阻斷其餘檢查；appsScript 404 → WARN\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e7. 驗收（方案A）\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003en8n 08:42 產 JSON（含 PENDING_AI candidates）、08:45 AI 讀後可追溯處理；Fast Scan 每小時僅告警不自動撤單\u003c/li\u003e\n\u003cli\u003e重複掛單：同 symbol+同 side ≥2 筆 → 寫 candidates + PENDING_AI（不再自動 cancel）\u003c/li\u003e\n\u003cli\u003e快篩 1 小時內告警可達（重複單/STOP/保證金），\u0026gt;50% 建 P0 Bug\u003c/li\u003e\n\u003cli\u003eprompt 25,038 → ~4,567 字（-82%），credits 預估 30→18/次（-40%）\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp style=\"font-size:11px;color:#888\"\u003e更新時間：2026-08-19 方案A定版｜ 本版覆蓋原 08-19 版，原版 4a 自動撤單邏輯作廢｜ 下一步：Claude Code 依此版建 2 workflow（見 WORK ORDER ec1749f0 方案A）\u003c/p\u003e\n\u003ch2\u003e9. 2026-08-23 B1 DL全廢 — 巡檢 DL 退休\u003c/h2\u003e\n\u003cdiv class=\"warn\"\u003e\u003cb\u003eDL 已全廢（B1 真·全廢，CEO 拍板 2026-08-23）：\u003c/b\u003en8n 不再巡檢 DL。原 Step5 四邊對帳 DL↔Sheets 與 Step8 DL筆數已退休，改為三邊對帳（交易計畫↔主交易記錄↔BingX↔Dashboard）與交易計畫筆數；JSON 欄位 dlSheets/dlCount 作廢改 planSheets/planCount。\u003c/div\u003e\n\u003ch2\u003e8. 連動 6 補檢（2026-08-21 成交量門檻 + 交易計畫冪等）\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cb\u003en8n Fast Scan 每小時 :00 補 2 檢（共 5 檢）：\u003c/b\u003e ④ 重複交易計畫（同日同班標題 \u0026gt;=2 → PENDING_AI candidates noteId/title/updatedAt，不自刪）⑤ VOLUME_LEAK（DL 已掛單/觀察但 24h成交額 \u0026lt;5M 未標 VOLUME_LOW → PENDING_AI）\u003c/li\u003e\n\u003cli\u003e\u003cb\u003eFull Scan 08:42 同步：\u003c/b\u003e 兩檢納入 autoFix陣列，action 僅 PENDING_AI/NONE。\u003c/li\u003e\n\u003cli\u003e\u003cb\u003eAI 08:45 判級：\u003c/b\u003e ④→留最新1筆其餘軟刪除；⑤→僅報告標記，不撤單。\u003c/li\u003e\n\u003cli\u003e\u003cb\u003e掛單策略師 v6.7 前置：\u003c/b\u003e 第一關前批量 GET /api/ticker 12幣 quoteVolume，\u0026lt;5M 轉觀察 VOLUME_LOW，5-10M 降倉50%，503/UNKNOWN 放行。\u003c/li\u003e\n\u003cli\u003e\u003cb\u003e交易計畫冪等：\u003c/b\u003e 掛單策略師每班 find 當日同名 NOTE→有則 update，無才 create；重試走同分支。\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e","artifactSourceHash":"1jz2yrco6ohpj","content":"\u003cdiv class=\"doc\"\u003e\n\n\u003cp class=\"meta\"\u003eID: 7391612712d2a2512e8d64d6 ｜ 狀態：方案A已裁定（原 08-19 版已作廢，以此版為準）｜ 關聯：自動維運員 v4.0 79a7e177 ＋ WORK ORDER ec1749f0 方案A ＋ 回覆 4e0e16c9 ｜ Vault 路徑（Claude Code 直讀，不用 cubelv://）：\u003ccode\u003e/vault/筆記/NOTE_FOLDER__🏛️ CEO 指揮中心_3d52618d766d6984560f58c8/NOTE__n8n 巡檢規格*\u003c/code\u003e\u003c/p\u003e\n\u003cdiv class=\"callout\"\u003e\u003cb\u003e分工（不變）：\u003c/b\u003e n8n = 全部 Step-by-step 操作鏈（GET/POST、重試、Verify、差集比對、組 JSON）；AI（自動維運員 08:45）= 讀 JSON 判 PASS/WARN/FAIL、建 CEO_BUG、執行交易操作（cancel 僅 AI 經判斷後執行）、寫維運報告。AI 不重跑巡檢。\u003c/div\u003e\n\u003cdiv class=\"ok\"\u003e\u003cb\u003e方案 A 變更（本次唯一改動）：\u003c/b\u003e 原 Full/Fast Scan 節 4a「重複掛單→直接 cancel」改為「僅偵測標記 PENDING_AI，不呼叫 POST /api/cancel-order」。n8n 此階段不碰真實掛單；cancel 由 AI 08:45 依判級表執行。詳見 §2.4a 與 §4 JSON 契約。\u003c/div\u003e\n\u003ch2\u003e1. Workflow 清單\u003c/h2\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003cth\u003eWorkflow\u003c/th\u003e\u003cth\u003e觸發\u003c/th\u003e\u003cth\u003e輸出\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cstrong\u003eFull Scan\u003c/strong\u003e\u003c/td\u003e\u003ctd\u003eCron 每日 08:42 Asia/Taipei\u003c/td\u003e\u003ctd\u003eNOTE 巡檢JSON-YYYY-MM-DD-0842（JSON）到 CEO 指揮中心 3d52618d...\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cstrong\u003eFast Scan\u003c/strong\u003e\u003c/td\u003e\u003ctd\u003eCron 每小時 :00\u003c/td\u003e\u003ctd\u003e異常才寫 NOTE 快篩告警-YYYY-MM-DD-HHmm + sendPush，不自動 cancel\u003c/td\u003e\u003c/tr\u003e\n\u003c/tbody\u003e\u003c/table\u003e\n\u003ch2\u003e2. Full Scan 節點鏈（08:42）— 9 節點，方案A版\u003c/h2\u003e\n\u003cpre\u003e0. 讀營運長 Brief：find 名稱=CEO 每日摘要-YYYY-MM-DD → 取摘要區塊供 AI 引用\n1. Google Sheets 健康: GET /api/ping → 5xx 重試 60s×1（失敗標 UNKNOWN，不阻斷）\n2. BingX 健康: GET /api/open-orders（探活，401/5xx 標 UNKNOWN，不阻斷）\n3. 取 BingX 實際狀態: GET /api/open-orders + GET /api/positions + GET /api/balance + POST /api/read(主交易) + POST /api/read(跟單)（任一 5xx→UNKNOWN）\n4. 自動修復/標記 8 項（方案A）:\n   a. 【重複掛單｜方案A：僅標記】同 symbol+同 positionSide 分組≥2 → 產 candidates=[{orderId,symbol,positionSide,price,qty,age}]，寫 autoFix[{id:4,found:1,action:\"PENDING_AI\",candidates}]，不呼叫 POST /api/cancel-order，不做 Verify。AI 08:45 再判斷是否 cancel。\n   b. STOP遺失: 有倉無對應止損 → 標記 found，action PENDING_AI，交 AI 通知持倉管理師補掛\n   c. NOTE錯夾/未歸檔: vault_query parents 比對（跳過 DL-）→ 記錄待搬清單 candidates，action PENDING_AI（AI 執行 vault_update_items）\n   d. 其他 5 項: 記錄狀態供 AI 判級（不含交易寫操作）\n5. 三邊對帳差集: 交易計畫NOTE ↔ 主交易記錄Sheets ↔ BingX ↔ Dashboard（DL已廢 2026-08-23 B1，不再對帳 DL ↔ Sheets）\n6. Version Check: GET /api/version ×3 (BingX/CEO Office/Sheets) + web_fetch Apps Script + Data Dictionary NOTE（4aaedc3b）\n7. 引用有效性: 取 3 Agent（策略長/營運長/盈虧分析師）content+memory → 正則 cubelv://note/… → 逐一 vault_query 驗證\n8. 效能+交易計畫筆數: invoke agent_usage(漏斗分析員, 7天) + find NOTE__交易計畫-* | wc -l（DL筆數已廢 2026-08-23 B1，不再統計 DL-*）\n9. 組 JSON → 建 NOTE 巡檢JSON-YYYY-MM-DD-0842 到 CEO 指揮中心(3d52618d...)\u003c/pre\u003e\n\u003ch3\u003e與原版差異對照\u003c/h3\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e節\u003c/th\u003e\u003cth\u003e原版（已作廢）\u003c/th\u003e\u003cth\u003e方案A（本版）\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e4a 重複掛單\u003c/td\u003e\u003ctd\u003e分組≥2 → 留最新 → 直接 POST cancel 舊 → Verify\u003c/td\u003e\u003ctd\u003e分組≥2 → 寫 candidates + PENDING_AI，不 cancel，不 Verify\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eFast Scan 重複掛單\u003c/td\u003e\u003ctd\u003e同上，直接 cancel\u003c/td\u003e\u003ctd\u003e同上，僅標記 + sendPush 告警，不 cancel\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eJSON autoFix[4]\u003c/td\u003e\u003ctd\u003e{found, fixed}\u003c/td\u003e\u003ctd\u003e{found, action:\"PENDING_AI\", candidates:[...]}\u003c/td\u003e\u003c/tr\u003e\n\u003c/tbody\u003e\u003c/table\u003e\n\u003ch2\u003e3. Fast Scan 節點鏈（每小時 :00）— 方案A版\u003c/h2\u003e\n\u003cpre\u003e僅 3 項（輕量），皆為「標記不執行\":\n- 重複掛單(同 §2.4a 方案A：僅標記 PENDING_AI)\n- STOP遺失(標記)\n- 保證金率 = Σmargin / equity → \u0026gt;30% 告警、\u0026gt;50% 立即建 P0 Bug（讀 balance/positions 失敗則標 UNKNOWN）\n\n任一異常（found\u0026gt;0 或 margin\u0026gt;30%）→ sendPush + NOTE 快篩告警-HHmm（含 candidates 明細）；無異常不寫 NOTE。Fast Scan 全程不呼叫 cancel-order。\u003c/pre\u003e\n\u003ch2\u003e4. JSON 契約（Full Scan 輸出）— 方案A版\u003c/h2\u003e\n\u003cpre\u003e{\n  \"at\": \"2026-08-19T08:42:00+08:00\",\n  \"schema\": \"2.3\",\n  \"sheetsPing\": {\"status\": 200, \"retry\": 0},\n  \"bingxHealth\": {\"openOrders\": 200, \"positions\": 3},\n  \"autoFix\": [\n    {\"id\":4, \"name\":\"重複掛單\", \"found\":1, \"action\":\"PENDING_AI\", \"candidates\":[{\"orderId\":\"1829...\",\"symbol\":\"BTC-USDT\",\"positionSide\":\"LONG\",\"price\":64189,\"qty\":0.002,\"ageMin\":47},{\"orderId\":\"1828...\",\"symbol\":\"BTC-USDT\",\"positionSide\":\"LONG\",\"price\":64150,\"qty\":0.002,\"ageMin\":312}]},\n    {\"id\":5, \"name\":\"STOP遺失\", \"found\":0, \"action\":\"NONE\"}\n  ],\n  \"integrity\": {\n    \"planSheets\": {\"status\":\"PASS\", \"orphan\":0, \"ghost\":0}  // 原 dlSheets 已退役 2026-08-23 B1,\n    \"sheetsBingx\": {\"status\":\"PASS\", \"zombie\":0, \"unrecorded\":0},\n    \"pnlBingx\": {\"status\":\"PASS\", \"mismatch\":0},\n    \"dashboardBingx\": {\"status\":\"PASS\"}\n  },\n  \"versions\": {\n    \"bingx\": {\"version\":\"v6.2\",\"schema\":\"2.3\"},\n    \"ceoOffice\": {\"version\":\"v1.1\",\"schema\":\"2.3\"},\n    \"sheets\": {\"version\":\"v3.0\",\"schema\":\"2.3\"},\n    \"appsScript\": {\"version\":\"v4.7\",\"schema\":\"2.3\"},\n    \"dataDict\": {\"version\":\"v2.3\",\"schema\":\"2.3\"},\n    \"allMatch\": true\n  },\n  \"refIntegrity\": {\"checked\":6, \"pass\":6, \"warn\":0, \"fail\":0},\n  \"agentPerf\": {\"tokens\":[900000,1200000], \"credits\":[12,18], \"durationSec\":[120,180], \"level\":\"PASS\"},\n  \"planCount\": {\"n\": 20, \"level\":\"PASS\"}  // 原 dlCount 已退役 2026-08-23 B1，改統計交易計畫 NOTE,\n  \"positions\": 3, \"openOrders\": 3, \"equity\": 149.13, \"marginRate\": 0.128\n}\u003c/pre\u003e\n\u003cp\u003e欄位規則：\u003ccode\u003eautoFix[].action\u003c/code\u003e 僅允許 \u003ccode\u003ePENDING_AI\u003c/code\u003e / \u003ccode\u003eNONE\u003c/code\u003e（方案A不允許 \u003ccode\u003eAUTO_FIXED\u003c/code\u003e / \u003ccode\u003efixed\u003c/code\u003e）。\u003ccode\u003ecandidates\u003c/code\u003e 為空陣列或明細，明細至少含 \u003ccode\u003eorderId + symbol\u003c/code\u003e。\u003c/p\u003e\n\u003ch2\u003e5. AI 端讀取方式（08:45）— 方案A\u003c/h2\u003e\n\u003cp\u003e自動維運員 08:45：\u003ccode\u003efind NOTE 巡檢JSON-當日-0842 → Read JSON → autoFix[4] 若 PENDING_AI 且 candidates≥2 → 按判級表決定是否 POST /api/cancel-order?orderId=\u0026amp;symbol=SYMBOL-USDT（需 query string，Hedge 禁 reduceOnly）→ Verify 不在清單 → 寫維運報告「已處理/已轉人工」\u003c/code\u003e。Fast Scan 的每小時 PENDING_AI 僅推播，統一批次由 08:45 處理（緊急保證金 \u0026gt;50% 除外，AI 即時處理）。若 JSON 缺失 → 最小自檢 + Low Bug。\u003c/p\u003e\n\u003ch2\u003e6. 禁令與細節（沿用）\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ecancel-all\u003c/code\u003e 禁用；\u003ccode\u003ecancel-order\u003c/code\u003e 必須 \u003ccode\u003e?orderId=\u0026amp;symbol=\u003c/code\u003e query string（方案A僅 AI 側可呼叫，n8n 不呼叫）\u003c/li\u003e\n\u003cli\u003e無 \u003ccode\u003emodify\u003c/code\u003e API，改單 = cancel→place；Hedge 禁 \u003ccode\u003ereduceOnly\u003c/code\u003e，平倉 side↔positionSide 相反\u003c/li\u003e\n\u003cli\u003eDL- NOTE 一律不碰；SSOT 寫後必 Read Verify（n8n 實作「寫→回讀→比對」）\u003c/li\u003e\n\u003cli\u003eDL 746 已建 d4809680，同窗口不重複；效能紅燈同窗口不重複\u003c/li\u003e\n\u003cli\u003e任一 GET 5xx/401 重試一次仍失敗 → 該欄標 \u003ccode\u003eUNKNOWN\u003c/code\u003e + 註 error，不阻斷其餘檢查；appsScript 404 → WARN\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e7. 驗收（方案A）\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003en8n 08:42 產 JSON（含 PENDING_AI candidates）、08:45 AI 讀後可追溯處理；Fast Scan 每小時僅告警不自動撤單\u003c/li\u003e\n\u003cli\u003e重複掛單：同 symbol+同 side ≥2 筆 → 寫 candidates + PENDING_AI（不再自動 cancel）\u003c/li\u003e\n\u003cli\u003e快篩 1 小時內告警可達（重複單/STOP/保證金），\u0026gt;50% 建 P0 Bug\u003c/li\u003e\n\u003cli\u003eprompt 25,038 → ~4,567 字（-82%），credits 預估 30→18/次（-40%）\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp style=\"font-size:11px;color:#888\"\u003e更新時間：2026-08-19 方案A定版｜ 本版覆蓋原 08-19 版，原版 4a 自動撤單邏輯作廢｜ 下一步：Claude Code 依此版建 2 workflow（見 WORK ORDER ec1749f0 方案A）\u003c/p\u003e\n\u003c/div\u003e\n\u003ch2\u003e9. 2026-08-23 B1 DL全廢 — 巡檢 DL 退休（追加）\u003c/h2\u003e\n\u003cdiv class=\"warn\"\u003e\u003cb\u003eDL 已全廢（B1 真·全廢，CEO 拍板 2026-08-23）：\u003c/b\u003en8n 不再巡檢 DL。以下原 DL 相關節點已退休：\u003cul\u003e\u003cli\u003eFull Scan §2-Step5：原「四邊對帳 DL↔Sheets↔BingX↔Dashboard」→ 改為「三邊對帳 交易計畫 NOTE ↔ Sheets（主交易記錄）↔ BingX ↔ Dashboard」；對帳鍵改為交易計畫 symbol/side 與 BingX open-orders/positions，不再讀 ef618e4b / DL資料。\u003c/li\u003e\u003cli\u003eFull Scan §2-Step8：原「DL筆數 find NOTE__DL-*」→ 改為「交易計畫筆數 find NOTE__交易計畫-*」（或 planCount）；門檻為近 20 份 LOG 滾動，不再以 300/350 判 FAIL。\u003c/li\u003e\u003cli\u003eJSON 契約 §4：\u003ccode\u003eintegrity.dlSheets\u003c/code\u003e、\u003ccode\u003edlCount\u003c/code\u003e 欄位已作廢，改為 \u003ccode\u003eintegrity.planSheets\u003c/code\u003e / \u003ccode\u003eplanCount\u003c/code\u003e；n8n workflow 下一版需移除這兩欄，AI 端 08:45 已忽略 dl 相關欄位（見自動維運員 v4.0 2026-08-23 patch）。\u003c/li\u003e\u003cli\u003eSheets／NOTE 側：DL資料 937 列已封存至 DL歷史_2026H1_封存_20260823，ef618e4b 不再寫入；未來 dlCount 如仍出現僅為舊 workflow 殘留，應標 NOT_SPECIFIED。\u003c/li\u003e\u003c/ul\u003e舊 workflow 若仍輸出 dlSheets/dlCount，AI 端視為 NOT_SPECIFIED，不建 Bug。\u003c/div\u003e\n\n\u003ch2\u003e8. 2026-08-21 擴充 — Shadow 最小接線 + 健康巡檢 2 項（方案A延伸）\u003c/h2\u003e\n\u003cdiv class=\"callout\"\u003e\u003cb\u003e本次新增（不改方案A主體）：\u003c/b\u003e 2 條外掛工作流 + Fast Scan 補 2 檢，全部沿用「機械標記、AI 派修」模式。資訊量見 CEO 裁定：Shadow 5k/週、健康巡檢零新增 NOTE（僅標記）。\u003c/div\u003e\n\u003ch3\u003e8.1 Shadow Trades 最小接線（獨立 Workflow：Shadow Writer）\u003c/h3\u003e\n\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e觸發\u003c/th\u003e\u003cth\u003e條件\u003c/th\u003e\u003cth\u003e動作\u003c/th\u003e\u003cth\u003e輸出\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eWebhook / Poll DL 新列\u003c/td\u003e\u003ctd\u003eDL Block Reason ∈ {RISK_BUDGET_FULL, WAITING_EVENT, 窄SL成本過高, 同批熔斷} 且 Score≥60\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ePOST /api/write\u003c/code\u003e append 一列至 \u003ccode\u003eShadow Trades\u003c/code\u003e 頁籤：DL ID | Symbol | Side | Score | ①-④分 | Block Reason | Block Rule | 假設Entry | SL | TP | RR（MFE/MAE/Hit/Status 留空）\u003c/td\u003e\u003ctd\u003eSheets 一列（機械，零 token）\u003c/td\u003e\u003c/tr\u003e\n\u003c/tbody\u003e\u003c/table\u003e\n\u003cp\u003e\u003cb\u003e節流：\u003c/b\u003e 被攔當下寫一列，不做 48h 驗證、MFE/MAE 留給漏斗分析員週六批量跑（market_data history 單幣 48h/5日 + Sheets updateCell + Read Verify）。Docker 重啟以表為狀態，無需恢復任務。\u003c/p\u003e\n\u003ch3\u003e8.2 Fast Scan 補 2 檢（沿用每小時 :00，僅 PENDING_AI）\u003c/h3\u003e\n\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e#\u003c/th\u003e\u003cth\u003e檢查\u003c/th\u003e\u003cth\u003e來源\u003c/th\u003e\u003cth\u003e標記\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e④\u003c/td\u003e\u003ctd\u003e窄SL漏網：已掛 LIMIT 但 feeRisk\u0026gt;0.50 或 SL\u0026lt;0.30% 仍放行\u003c/td\u003e\u003ctd\u003eDL 槓桿欄 + open-orders 進場/SL 距離直算 feeRisk\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eautoFix[9]={id:9, found:1, action:\"PENDING_AI\", candidates:[{symbol, feeRisk, slPct}]}\u003c/code\u003e，交 AI→持倉/維護處理\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e⑤\u003c/td\u003e\u003ctd\u003e同批集中漏網：同班同向待掛≥3 筆未熔斷\u003c/td\u003e\u003ctd\u003eopen-orders 同 side 計數\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eautoFix[10]={id:10, found:1, action:\"PENDING_AI\"}\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003c/tbody\u003e\u003c/table\u003e\n\u003cp\u003e\u003cb\u003eAI 08:45 分流：\u003c/b\u003e ④→ TODO 持倉管理師 二次檢（超標則 cancel-order query string + Verify）；⑤→ TODO 維護管理員 標註 + 通知策略師。兩者皆寫 技術中心 維護報告「🟢自動修復」區塊，不進績效與檢討。\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eJSON 契約擴充：\u003c/b\u003e \u003ccode\u003eautoFix\u003c/code\u003e 在既有 8 項後追加 id 9/10，欄位規則同 §4（僅 PENDING_AI/NONE）。Shadow 寫入不進巡檢 JSON（獨立由漏斗員週報對帳）。\u003c/p\u003e\n\n\u003ch2\u003e8. 連動 6 補檢（2026-08-21 成交量門檻 + 交易計畫冪等）\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cb\u003en8n Fast Scan 每小時 :00 補 2 檢（共 5 檢）：\u003c/b\u003e ④ 重複交易計畫（同日同班標題 \u0026gt;=2 → PENDING_AI candidates noteId/title/updatedAt，不自刪）⑤ VOLUME_LEAK（DL 已掛單/觀察但 24h成交額 \u0026lt;5M 未標 VOLUME_LOW → PENDING_AI）\u003c/li\u003e\n\u003cli\u003e\u003cb\u003eFull Scan 08:42 同步：\u003c/b\u003e 兩檢納入 autoFix陣列，action 僅 PENDING_AI/NONE。\u003c/li\u003e\n\u003cli\u003e\u003cb\u003eAI 08:45 判級：\u003c/b\u003e ④→留最新1筆其餘軟刪除；⑤→僅報告標記，不撤單。\u003c/li\u003e\n\u003cli\u003e\u003cb\u003e掛單策略師 v6.7 前置：\u003c/b\u003e 第一關前批量 GET /api/ticker 12幣 quoteVolume，\u0026lt;5M 轉觀察 VOLUME_LOW，5-10M 降倉50%，503/UNKNOWN 放行。\u003c/li\u003e\n\u003cli\u003e\u003cb\u003e交易計畫冪等：\u003c/b\u003e 掛單策略師每班 find 當日同名 NOTE→有則 update，無才 create；重試走同分支。\u003c/li\u003e\n\u003c/ul\u003e\n","createdAt":1787136260942,"deletedAt":null,"displayMode":"artifact","id":"7391612712d2a2512e8d64d6","isNew":false,"isPublic":true,"itemType":"NOTE","name":"n8n 巡檢規格 — 自動維運員 v4.0 配套（2026-08-19）方案A","parents":{"3d52618d766d6984560f58c8":1787136260942},"preParentID":null,"updatedAt":1787494901078,"updatedBy":{"agentId":"ceo","agentName":"CEO","userId":"6a47425d004ad1e5692aa0","userName":"郭胖"},"version":14},"ownerName":"郭胖","subtree":[{"artifactHtml":"\u003cstyle\u003e\n  :root { --paper:#F7F8F7; --ink:#14191A; --ink2:#4E5658; --accent:#0D5A63; --soft:#DFEEF0; --hair:#D8DEDC; --ok:#ecfdf5; --okBd:#10b981; --warn:#fef3c7; --warnBd:#f59e0b; }\n  :root[data-theme=\"dark\"] { --paper:#121616; --ink:#E9EDEC; --ink2:#AEB6B7; --accent:#6FC5D2; --soft:#12333A; --hair:#2B3233; }\n  .doc { background:var(--paper); color:var(--ink); padding:28px 30px; font:15px/1.72 -apple-system,\"PingFang TC\",sans-serif; }\n  .eyebrow { font:600 11px ui-monospace; letter-spacing:.16em; color:var(--accent); }\n  h1 { font-size:25px; line-height:1.25; letter-spacing:-.015em; margin:10px 0 6px; }\n  .lede { color:var(--ink2); margin:0 0 10px; font-size:13px; }\n  .meta { font-size:11px; color:#888; margin:0 0 12px; }\n  h2 { font-size:17px; margin:28px 0 8px; padding-bottom:6px; border-bottom:2px solid var(--soft); }\n  h3 { font-size:14px; margin:18px 0 6px; color:var(--accent); }\n  p, li { color:var(--ink2); }\n  .callout { display:flex; gap:12px; padding:13px 14px; background:var(--soft); border-radius:8px; margin:14px 0; font-size:13px; }\n  .ok { background:var(--ok); border:1px solid var(--okBd); border-radius:8px; padding:12px; margin:12px 0; font-size:13px; }\n  .warn { background:var(--warn); border:1px solid var(--warnBd); border-radius:8px; padding:12px; margin:12px 0; font-size:13px; }\n  table { border-collapse:collapse; width:100%; font-size:13px; margin:10px 0; }\n  th,td { text-align:left; padding:8px 10px; border-bottom:1px solid var(--hair); vertical-align:top; }\n  th { font:600 11px ui-monospace; color:var(--ink2); background:var(--soft); }\n  code { font:12px ui-monospace; background:var(--soft); padding:1px 5px; border-radius:4px; }\n  pre { background:#0f172a; color:#e2e8f0; padding:14px 16px; border-radius:8px; overflow:auto; font:12px/1.6 ui-monospace; white-space:pre-wrap; word-break:break-all; }\n  ul,ol { padding-left:22px; } li{margin:4px 0}\n  @media(max-width:640px){.doc{padding:20px 18px}h1{font-size:21px}}\n\u003c/style\u003e\n\u003cdiv class=\"doc\"\u003e\n\u003cheader\u003e\n\u003cdiv class=\"eyebrow\"\u003en8n 交付規格 · 方案 A 定版 · 2026-08-19\u003c/div\u003e\n\u003ch1\u003en8n 巡檢規格 — 自動維運員 v4.0 配套（2026-08-19）方案A\u003c/h1\u003e\n\u003cp class=\"lede\"\u003e機器做巡檢，AI 做判斷。方案 A：重複掛單僅偵測標記（PENDING_AI），不自動 cancel。\u003c/p\u003e\n\u003c/header\u003e\n\u003cp class=\"meta\"\u003eID: 7391612712d2a2512e8d64d6 ｜ 狀態：方案A已裁定（原 08-19 版已作廢，以此版為準）｜ 關聯：自動維運員 v4.0 79a7e177 ＋ WORK ORDER ec1749f0 方案A ＋ 回覆 4e0e16c9 ｜ Vault 路徑（Claude Code 直讀，不用 cubelv://）：\u003ccode\u003e/vault/筆記/NOTE_FOLDER__🏛️ CEO 指揮中心_3d52618d766d6984560f58c8/NOTE__n8n 巡檢規格*\u003c/code\u003e\u003c/p\u003e\n\u003cdiv class=\"callout\"\u003e\u003cb\u003e分工（不變）：\u003c/b\u003e n8n = 全部 Step-by-step 操作鏈（GET/POST、重試、Verify、差集比對、組 JSON）；AI（自動維運員 08:45）= 讀 JSON 判 PASS/WARN/FAIL、建 CEO_BUG、執行交易操作（cancel 僅 AI 經判斷後執行）、寫維運報告。AI 不重跑巡檢。\u003c/div\u003e\n\u003cdiv class=\"ok\"\u003e\u003cb\u003e方案 A 變更（本次唯一改動）：\u003c/b\u003e 原 Full/Fast Scan 節 4a「重複掛單→直接 cancel」改為「僅偵測標記 PENDING_AI，不呼叫 POST /api/cancel-order」。n8n 此階段不碰真實掛單；cancel 由 AI 08:45 依判級表執行。詳見 §2.4a 與 §4 JSON 契約。\u003c/div\u003e\n\u003ch2\u003e1. Workflow 清單\u003c/h2\u003e\n\u003ctable\u003e\n\u003ctr\u003e\u003cth\u003eWorkflow\u003c/th\u003e\u003cth\u003e觸發\u003c/th\u003e\u003cth\u003e輸出\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cstrong\u003eFull Scan\u003c/strong\u003e\u003c/td\u003e\u003ctd\u003eCron 每日 08:42 Asia/Taipei\u003c/td\u003e\u003ctd\u003eNOTE 巡檢JSON-YYYY-MM-DD-0842（JSON）到 CEO 指揮中心 3d52618d...\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cstrong\u003eFast Scan\u003c/strong\u003e\u003c/td\u003e\u003ctd\u003eCron 每小時 :00\u003c/td\u003e\u003ctd\u003e異常才寫 NOTE 快篩告警-YYYY-MM-DD-HHmm + sendPush，不自動 cancel\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003ch2\u003e2. Full Scan 節點鏈（08:42）— 9 節點，方案A版\u003c/h2\u003e\n\u003cpre\u003e0. 讀營運長 Brief：find 名稱=CEO 每日摘要-YYYY-MM-DD → 取摘要區塊供 AI 引用\n1. Google Sheets 健康: GET /api/ping → 5xx 重試 60s×1（失敗標 UNKNOWN，不阻斷）\n2. BingX 健康: GET /api/open-orders（探活，401/5xx 標 UNKNOWN，不阻斷）\n3. 取 BingX 實際狀態: GET /api/open-orders + GET /api/positions + GET /api/balance + POST /api/read(主交易) + POST /api/read(跟單)（任一 5xx→UNKNOWN）\n4. 自動修復/標記 8 項（方案A）:\n   a. 【重複掛單｜方案A：僅標記】同 symbol+同 positionSide 分組≥2 → 產 candidates=[{orderId,symbol,positionSide,price,qty,age}]，寫 autoFix[{id:4,found:1,action:\"PENDING_AI\",candidates}]，不呼叫 POST /api/cancel-order，不做 Verify。AI 08:45 再判斷是否 cancel。\n   b. STOP遺失: 有倉無對應止損 → 標記 found，action PENDING_AI，交 AI 通知持倉管理師補掛\n   c. NOTE錯夾/未歸檔: vault_query parents 比對（跳過 DL-）→ 記錄待搬清單 candidates，action PENDING_AI（AI 執行 vault_update_items）\n   d. 其他 5 項: 記錄狀態供 AI 判級（不含交易寫操作）\n5. 三邊對帳差集: 交易計畫NOTE ↔ 主交易記錄Sheets ↔ BingX ↔ Dashboard（DL已廢 2026-08-23 B1，不再對帳 DL ↔ Sheets）\n6. Version Check: GET /api/version ×3 (BingX/CEO Office/Sheets) + web_fetch Apps Script + Data Dictionary NOTE（4aaedc3b）\n7. 引用有效性: 取 3 Agent（策略長/營運長/盈虧分析師）content+memory → 正則 cubelv://note/… → 逐一 vault_query 驗證\n8. 效能+交易計畫筆數: invoke agent_usage(漏斗分析員, 7天) + find NOTE__交易計畫-* | wc -l（DL筆數已廢）\n9. 組 JSON → 建 NOTE 巡檢JSON-YYYY-MM-DD-0842 到 CEO 指揮中心(3d52618d...)\u003c/pre\u003e\n\u003ch3\u003e與原版差異對照\u003c/h3\u003e\n\u003ctable\u003e\n\u003ctr\u003e\u003cth\u003e節\u003c/th\u003e\u003cth\u003e原版（已作廢）\u003c/th\u003e\u003cth\u003e方案A（本版）\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e4a 重複掛單\u003c/td\u003e\u003ctd\u003e分組≥2 → 留最新 → 直接 POST cancel 舊 → Verify\u003c/td\u003e\u003ctd\u003e分組≥2 → 寫 candidates + PENDING_AI，不 cancel，不 Verify\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eFast Scan 重複掛單\u003c/td\u003e\u003ctd\u003e同上，直接 cancel\u003c/td\u003e\u003ctd\u003e同上，僅標記 + sendPush 告警，不 cancel\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eJSON autoFix[4]\u003c/td\u003e\u003ctd\u003e{found, fixed}\u003c/td\u003e\u003ctd\u003e{found, action:\"PENDING_AI\", candidates:[...]}\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003ch2\u003e3. Fast Scan 節點鏈（每小時 :00）— 方案A版\u003c/h2\u003e\n\u003cpre\u003e僅 3 項（輕量），皆為「標記不執行\":\n- 重複掛單(同 §2.4a 方案A：僅標記 PENDING_AI)\n- STOP遺失(標記)\n- 保證金率 = Σmargin / equity → \u0026gt;30% 告警、\u0026gt;50% 立即建 P0 Bug（讀 balance/positions 失敗則標 UNKNOWN）\n\n任一異常（found\u0026gt;0 或 margin\u0026gt;30%）→ sendPush + NOTE 快篩告警-HHmm（含 candidates 明細）；無異常不寫 NOTE。Fast Scan 全程不呼叫 cancel-order。\u003c/pre\u003e\n\u003ch2\u003e4. JSON 契約（Full Scan 輸出）— 方案A版\u003c/h2\u003e\n\u003cpre\u003e{\n  \"at\": \"2026-08-19T08:42:00+08:00\",\n  \"schema\": \"2.3\",\n  \"sheetsPing\": {\"status\": 200, \"retry\": 0},\n  \"bingxHealth\": {\"openOrders\": 200, \"positions\": 3},\n  \"autoFix\": [\n    {\"id\":4, \"name\":\"重複掛單\", \"found\":1, \"action\":\"PENDING_AI\", \"candidates\":[{\"orderId\":\"1829...\",\"symbol\":\"BTC-USDT\",\"positionSide\":\"LONG\",\"price\":64189,\"qty\":0.002,\"ageMin\":47},{\"orderId\":\"1828...\",\"symbol\":\"BTC-USDT\",\"positionSide\":\"LONG\",\"price\":64150,\"qty\":0.002,\"ageMin\":312}]},\n    {\"id\":5, \"name\":\"STOP遺失\", \"found\":0, \"action\":\"NONE\"}\n  ],\n  \"integrity\": {\n    \"planSheets\": {\"status\":\"PASS\", \"orphan\":0, \"ghost\":0},\n    \"sheetsBingx\": {\"status\":\"PASS\", \"zombie\":0, \"unrecorded\":0},\n    \"pnlBingx\": {\"status\":\"PASS\", \"mismatch\":0},\n    \"dashboardBingx\": {\"status\":\"PASS\"}\n  },\n  \"versions\": {\n    \"bingx\": {\"version\":\"v6.2\",\"schema\":\"2.3\"},\n    \"ceoOffice\": {\"version\":\"v1.1\",\"schema\":\"2.3\"},\n    \"sheets\": {\"version\":\"v3.0\",\"schema\":\"2.3\"},\n    \"appsScript\": {\"version\":\"v4.7\",\"schema\":\"2.3\"},\n    \"dataDict\": {\"version\":\"v2.3\",\"schema\":\"2.3\"},\n    \"allMatch\": true\n  },\n  \"refIntegrity\": {\"checked\":6, \"pass\":6, \"warn\":0, \"fail\":0},\n  \"agentPerf\": {\"tokens\":[900000,1200000], \"credits\":[12,18], \"durationSec\":[120,180], \"level\":\"PASS\"},\n  \"planCount\": {\"n\": 20, \"level\":\"PASS\"},\n  \"positions\": 3, \"openOrders\": 3, \"equity\": 149.13, \"marginRate\": 0.128\n}\u003c/pre\u003e\n\u003cp\u003e欄位規則：\u003ccode\u003eautoFix[].action\u003c/code\u003e 僅允許 \u003ccode\u003ePENDING_AI\u003c/code\u003e / \u003ccode\u003eNONE\u003c/code\u003e（方案A不允許 \u003ccode\u003eAUTO_FIXED\u003c/code\u003e / \u003ccode\u003efixed\u003c/code\u003e）。\u003ccode\u003ecandidates\u003c/code\u003e 為空陣列或明細，明細至少含 \u003ccode\u003eorderId + symbol\u003c/code\u003e。\u003c/p\u003e\n\u003ch2\u003e5. AI 端讀取方式（08:45）— 方案A\u003c/h2\u003e\n\u003cp\u003e自動維運員 08:45：\u003ccode\u003efind NOTE 巡檢JSON-當日-0842 → Read JSON → autoFix[4] 若 PENDING_AI 且 candidates≥2 → 按判級表決定是否 POST /api/cancel-order?orderId=\u0026amp;symbol=SYMBOL-USDT（需 query string，Hedge 禁 reduceOnly）→ Verify 不在清單 → 寫維運報告「已處理/已轉人工」\u003c/code\u003e。Fast Scan 的每小時 PENDING_AI 僅推播，統一批次由 08:45 處理（緊急保證金 \u0026gt;50% 除外，AI 即時處理）。若 JSON 缺失 → 最小自檢 + Low Bug。\u003c/p\u003e\n\u003ch2\u003e6. 禁令與細節（沿用）\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ecancel-all\u003c/code\u003e 禁用；\u003ccode\u003ecancel-order\u003c/code\u003e 必須 \u003ccode\u003e?orderId=\u0026amp;symbol=\u003c/code\u003e query string（方案A僅 AI 側可呼叫，n8n 不呼叫）\u003c/li\u003e\n\u003cli\u003e無 \u003ccode\u003emodify\u003c/code\u003e API，改單 = cancel→place；Hedge 禁 \u003ccode\u003ereduceOnly\u003c/code\u003e，平倉 side↔positionSide 相反\u003c/li\u003e\n\u003cli\u003eDL- NOTE 一律不碰；SSOT 寫後必 Read Verify（n8n 實作「寫→回讀→比對」）\u003c/li\u003e\n\u003cli\u003eDL 746 已建 d4809680，同窗口不重複；效能紅燈同窗口不重複\u003c/li\u003e\n\u003cli\u003e任一 GET 5xx/401 重試一次仍失敗 → 該欄標 \u003ccode\u003eUNKNOWN\u003c/code\u003e + 註 error，不阻斷其餘檢查；appsScript 404 → WARN\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e7. 驗收（方案A）\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003en8n 08:42 產 JSON（含 PENDING_AI candidates）、08:45 AI 讀後可追溯處理；Fast Scan 每小時僅告警不自動撤單\u003c/li\u003e\n\u003cli\u003e重複掛單：同 symbol+同 side ≥2 筆 → 寫 candidates + PENDING_AI（不再自動 cancel）\u003c/li\u003e\n\u003cli\u003e快篩 1 小時內告警可達（重複單/STOP/保證金），\u0026gt;50% 建 P0 Bug\u003c/li\u003e\n\u003cli\u003eprompt 25,038 → ~4,567 字（-82%），credits 預估 30→18/次（-40%）\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp style=\"font-size:11px;color:#888\"\u003e更新時間：2026-08-19 方案A定版｜ 本版覆蓋原 08-19 版，原版 4a 自動撤單邏輯作廢｜ 下一步：Claude Code 依此版建 2 workflow（見 WORK ORDER ec1749f0 方案A）\u003c/p\u003e\n\u003ch2\u003e9. 2026-08-23 B1 DL全廢 — 巡檢 DL 退休\u003c/h2\u003e\n\u003cdiv class=\"warn\"\u003e\u003cb\u003eDL 已全廢（B1 真·全廢，CEO 拍板 2026-08-23）：\u003c/b\u003en8n 不再巡檢 DL。原 Step5 四邊對帳 DL↔Sheets 與 Step8 DL筆數已退休，改為三邊對帳（交易計畫↔主交易記錄↔BingX↔Dashboard）與交易計畫筆數；JSON 欄位 dlSheets/dlCount 作廢改 planSheets/planCount。\u003c/div\u003e\n\u003ch2\u003e8. 連動 6 補檢（2026-08-21 成交量門檻 + 交易計畫冪等）\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cb\u003en8n Fast Scan 每小時 :00 補 2 檢（共 5 檢）：\u003c/b\u003e ④ 重複交易計畫（同日同班標題 \u0026gt;=2 → PENDING_AI candidates noteId/title/updatedAt，不自刪）⑤ VOLUME_LEAK（DL 已掛單/觀察但 24h成交額 \u0026lt;5M 未標 VOLUME_LOW → PENDING_AI）\u003c/li\u003e\n\u003cli\u003e\u003cb\u003eFull Scan 08:42 同步：\u003c/b\u003e 兩檢納入 autoFix陣列，action 僅 PENDING_AI/NONE。\u003c/li\u003e\n\u003cli\u003e\u003cb\u003eAI 08:45 判級：\u003c/b\u003e ④→留最新1筆其餘軟刪除；⑤→僅報告標記，不撤單。\u003c/li\u003e\n\u003cli\u003e\u003cb\u003e掛單策略師 v6.7 前置：\u003c/b\u003e 第一關前批量 GET /api/ticker 12幣 quoteVolume，\u0026lt;5M 轉觀察 VOLUME_LOW，5-10M 降倉50%，503/UNKNOWN 放行。\u003c/li\u003e\n\u003cli\u003e\u003cb\u003e交易計畫冪等：\u003c/b\u003e 掛單策略師每班 find 當日同名 NOTE→有則 update，無才 create；重試走同分支。\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e","artifactSourceHash":"1jz2yrco6ohpj","content":"\u003cdiv class=\"doc\"\u003e\n\n\u003cp class=\"meta\"\u003eID: 7391612712d2a2512e8d64d6 ｜ 狀態：方案A已裁定（原 08-19 版已作廢，以此版為準）｜ 關聯：自動維運員 v4.0 79a7e177 ＋ WORK ORDER ec1749f0 方案A ＋ 回覆 4e0e16c9 ｜ Vault 路徑（Claude Code 直讀，不用 cubelv://）：\u003ccode\u003e/vault/筆記/NOTE_FOLDER__🏛️ CEO 指揮中心_3d52618d766d6984560f58c8/NOTE__n8n 巡檢規格*\u003c/code\u003e\u003c/p\u003e\n\u003cdiv class=\"callout\"\u003e\u003cb\u003e分工（不變）：\u003c/b\u003e n8n = 全部 Step-by-step 操作鏈（GET/POST、重試、Verify、差集比對、組 JSON）；AI（自動維運員 08:45）= 讀 JSON 判 PASS/WARN/FAIL、建 CEO_BUG、執行交易操作（cancel 僅 AI 經判斷後執行）、寫維運報告。AI 不重跑巡檢。\u003c/div\u003e\n\u003cdiv class=\"ok\"\u003e\u003cb\u003e方案 A 變更（本次唯一改動）：\u003c/b\u003e 原 Full/Fast Scan 節 4a「重複掛單→直接 cancel」改為「僅偵測標記 PENDING_AI，不呼叫 POST /api/cancel-order」。n8n 此階段不碰真實掛單；cancel 由 AI 08:45 依判級表執行。詳見 §2.4a 與 §4 JSON 契約。\u003c/div\u003e\n\u003ch2\u003e1. Workflow 清單\u003c/h2\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003cth\u003eWorkflow\u003c/th\u003e\u003cth\u003e觸發\u003c/th\u003e\u003cth\u003e輸出\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cstrong\u003eFull Scan\u003c/strong\u003e\u003c/td\u003e\u003ctd\u003eCron 每日 08:42 Asia/Taipei\u003c/td\u003e\u003ctd\u003eNOTE 巡檢JSON-YYYY-MM-DD-0842（JSON）到 CEO 指揮中心 3d52618d...\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cstrong\u003eFast Scan\u003c/strong\u003e\u003c/td\u003e\u003ctd\u003eCron 每小時 :00\u003c/td\u003e\u003ctd\u003e異常才寫 NOTE 快篩告警-YYYY-MM-DD-HHmm + sendPush，不自動 cancel\u003c/td\u003e\u003c/tr\u003e\n\u003c/tbody\u003e\u003c/table\u003e\n\u003ch2\u003e2. Full Scan 節點鏈（08:42）— 9 節點，方案A版\u003c/h2\u003e\n\u003cpre\u003e0. 讀營運長 Brief：find 名稱=CEO 每日摘要-YYYY-MM-DD → 取摘要區塊供 AI 引用\n1. Google Sheets 健康: GET /api/ping → 5xx 重試 60s×1（失敗標 UNKNOWN，不阻斷）\n2. BingX 健康: GET /api/open-orders（探活，401/5xx 標 UNKNOWN，不阻斷）\n3. 取 BingX 實際狀態: GET /api/open-orders + GET /api/positions + GET /api/balance + POST /api/read(主交易) + POST /api/read(跟單)（任一 5xx→UNKNOWN）\n4. 自動修復/標記 8 項（方案A）:\n   a. 【重複掛單｜方案A：僅標記】同 symbol+同 positionSide 分組≥2 → 產 candidates=[{orderId,symbol,positionSide,price,qty,age}]，寫 autoFix[{id:4,found:1,action:\"PENDING_AI\",candidates}]，不呼叫 POST /api/cancel-order，不做 Verify。AI 08:45 再判斷是否 cancel。\n   b. STOP遺失: 有倉無對應止損 → 標記 found，action PENDING_AI，交 AI 通知持倉管理師補掛\n   c. NOTE錯夾/未歸檔: vault_query parents 比對（跳過 DL-）→ 記錄待搬清單 candidates，action PENDING_AI（AI 執行 vault_update_items）\n   d. 其他 5 項: 記錄狀態供 AI 判級（不含交易寫操作）\n5. 三邊對帳差集: 交易計畫NOTE ↔ 主交易記錄Sheets ↔ BingX ↔ Dashboard（DL已廢 2026-08-23 B1，不再對帳 DL ↔ Sheets）\n6. Version Check: GET /api/version ×3 (BingX/CEO Office/Sheets) + web_fetch Apps Script + Data Dictionary NOTE（4aaedc3b）\n7. 引用有效性: 取 3 Agent（策略長/營運長/盈虧分析師）content+memory → 正則 cubelv://note/… → 逐一 vault_query 驗證\n8. 效能+交易計畫筆數: invoke agent_usage(漏斗分析員, 7天) + find NOTE__交易計畫-* | wc -l（DL筆數已廢 2026-08-23 B1，不再統計 DL-*）\n9. 組 JSON → 建 NOTE 巡檢JSON-YYYY-MM-DD-0842 到 CEO 指揮中心(3d52618d...)\u003c/pre\u003e\n\u003ch3\u003e與原版差異對照\u003c/h3\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e節\u003c/th\u003e\u003cth\u003e原版（已作廢）\u003c/th\u003e\u003cth\u003e方案A（本版）\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e4a 重複掛單\u003c/td\u003e\u003ctd\u003e分組≥2 → 留最新 → 直接 POST cancel 舊 → Verify\u003c/td\u003e\u003ctd\u003e分組≥2 → 寫 candidates + PENDING_AI，不 cancel，不 Verify\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eFast Scan 重複掛單\u003c/td\u003e\u003ctd\u003e同上，直接 cancel\u003c/td\u003e\u003ctd\u003e同上，僅標記 + sendPush 告警，不 cancel\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eJSON autoFix[4]\u003c/td\u003e\u003ctd\u003e{found, fixed}\u003c/td\u003e\u003ctd\u003e{found, action:\"PENDING_AI\", candidates:[...]}\u003c/td\u003e\u003c/tr\u003e\n\u003c/tbody\u003e\u003c/table\u003e\n\u003ch2\u003e3. Fast Scan 節點鏈（每小時 :00）— 方案A版\u003c/h2\u003e\n\u003cpre\u003e僅 3 項（輕量），皆為「標記不執行\":\n- 重複掛單(同 §2.4a 方案A：僅標記 PENDING_AI)\n- STOP遺失(標記)\n- 保證金率 = Σmargin / equity → \u0026gt;30% 告警、\u0026gt;50% 立即建 P0 Bug（讀 balance/positions 失敗則標 UNKNOWN）\n\n任一異常（found\u0026gt;0 或 margin\u0026gt;30%）→ sendPush + NOTE 快篩告警-HHmm（含 candidates 明細）；無異常不寫 NOTE。Fast Scan 全程不呼叫 cancel-order。\u003c/pre\u003e\n\u003ch2\u003e4. JSON 契約（Full Scan 輸出）— 方案A版\u003c/h2\u003e\n\u003cpre\u003e{\n  \"at\": \"2026-08-19T08:42:00+08:00\",\n  \"schema\": \"2.3\",\n  \"sheetsPing\": {\"status\": 200, \"retry\": 0},\n  \"bingxHealth\": {\"openOrders\": 200, \"positions\": 3},\n  \"autoFix\": [\n    {\"id\":4, \"name\":\"重複掛單\", \"found\":1, \"action\":\"PENDING_AI\", \"candidates\":[{\"orderId\":\"1829...\",\"symbol\":\"BTC-USDT\",\"positionSide\":\"LONG\",\"price\":64189,\"qty\":0.002,\"ageMin\":47},{\"orderId\":\"1828...\",\"symbol\":\"BTC-USDT\",\"positionSide\":\"LONG\",\"price\":64150,\"qty\":0.002,\"ageMin\":312}]},\n    {\"id\":5, \"name\":\"STOP遺失\", \"found\":0, \"action\":\"NONE\"}\n  ],\n  \"integrity\": {\n    \"planSheets\": {\"status\":\"PASS\", \"orphan\":0, \"ghost\":0}  // 原 dlSheets 已退役 2026-08-23 B1,\n    \"sheetsBingx\": {\"status\":\"PASS\", \"zombie\":0, \"unrecorded\":0},\n    \"pnlBingx\": {\"status\":\"PASS\", \"mismatch\":0},\n    \"dashboardBingx\": {\"status\":\"PASS\"}\n  },\n  \"versions\": {\n    \"bingx\": {\"version\":\"v6.2\",\"schema\":\"2.3\"},\n    \"ceoOffice\": {\"version\":\"v1.1\",\"schema\":\"2.3\"},\n    \"sheets\": {\"version\":\"v3.0\",\"schema\":\"2.3\"},\n    \"appsScript\": {\"version\":\"v4.7\",\"schema\":\"2.3\"},\n    \"dataDict\": {\"version\":\"v2.3\",\"schema\":\"2.3\"},\n    \"allMatch\": true\n  },\n  \"refIntegrity\": {\"checked\":6, \"pass\":6, \"warn\":0, \"fail\":0},\n  \"agentPerf\": {\"tokens\":[900000,1200000], \"credits\":[12,18], \"durationSec\":[120,180], \"level\":\"PASS\"},\n  \"planCount\": {\"n\": 20, \"level\":\"PASS\"}  // 原 dlCount 已退役 2026-08-23 B1，改統計交易計畫 NOTE,\n  \"positions\": 3, \"openOrders\": 3, \"equity\": 149.13, \"marginRate\": 0.128\n}\u003c/pre\u003e\n\u003cp\u003e欄位規則：\u003ccode\u003eautoFix[].action\u003c/code\u003e 僅允許 \u003ccode\u003ePENDING_AI\u003c/code\u003e / \u003ccode\u003eNONE\u003c/code\u003e（方案A不允許 \u003ccode\u003eAUTO_FIXED\u003c/code\u003e / \u003ccode\u003efixed\u003c/code\u003e）。\u003ccode\u003ecandidates\u003c/code\u003e 為空陣列或明細，明細至少含 \u003ccode\u003eorderId + symbol\u003c/code\u003e。\u003c/p\u003e\n\u003ch2\u003e5. AI 端讀取方式（08:45）— 方案A\u003c/h2\u003e\n\u003cp\u003e自動維運員 08:45：\u003ccode\u003efind NOTE 巡檢JSON-當日-0842 → Read JSON → autoFix[4] 若 PENDING_AI 且 candidates≥2 → 按判級表決定是否 POST /api/cancel-order?orderId=\u0026amp;symbol=SYMBOL-USDT（需 query string，Hedge 禁 reduceOnly）→ Verify 不在清單 → 寫維運報告「已處理/已轉人工」\u003c/code\u003e。Fast Scan 的每小時 PENDING_AI 僅推播，統一批次由 08:45 處理（緊急保證金 \u0026gt;50% 除外，AI 即時處理）。若 JSON 缺失 → 最小自檢 + Low Bug。\u003c/p\u003e\n\u003ch2\u003e6. 禁令與細節（沿用）\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ecancel-all\u003c/code\u003e 禁用；\u003ccode\u003ecancel-order\u003c/code\u003e 必須 \u003ccode\u003e?orderId=\u0026amp;symbol=\u003c/code\u003e query string（方案A僅 AI 側可呼叫，n8n 不呼叫）\u003c/li\u003e\n\u003cli\u003e無 \u003ccode\u003emodify\u003c/code\u003e API，改單 = cancel→place；Hedge 禁 \u003ccode\u003ereduceOnly\u003c/code\u003e，平倉 side↔positionSide 相反\u003c/li\u003e\n\u003cli\u003eDL- NOTE 一律不碰；SSOT 寫後必 Read Verify（n8n 實作「寫→回讀→比對」）\u003c/li\u003e\n\u003cli\u003eDL 746 已建 d4809680，同窗口不重複；效能紅燈同窗口不重複\u003c/li\u003e\n\u003cli\u003e任一 GET 5xx/401 重試一次仍失敗 → 該欄標 \u003ccode\u003eUNKNOWN\u003c/code\u003e + 註 error，不阻斷其餘檢查；appsScript 404 → WARN\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e7. 驗收（方案A）\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003en8n 08:42 產 JSON（含 PENDING_AI candidates）、08:45 AI 讀後可追溯處理；Fast Scan 每小時僅告警不自動撤單\u003c/li\u003e\n\u003cli\u003e重複掛單：同 symbol+同 side ≥2 筆 → 寫 candidates + PENDING_AI（不再自動 cancel）\u003c/li\u003e\n\u003cli\u003e快篩 1 小時內告警可達（重複單/STOP/保證金），\u0026gt;50% 建 P0 Bug\u003c/li\u003e\n\u003cli\u003eprompt 25,038 → ~4,567 字（-82%），credits 預估 30→18/次（-40%）\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp style=\"font-size:11px;color:#888\"\u003e更新時間：2026-08-19 方案A定版｜ 本版覆蓋原 08-19 版，原版 4a 自動撤單邏輯作廢｜ 下一步：Claude Code 依此版建 2 workflow（見 WORK ORDER ec1749f0 方案A）\u003c/p\u003e\n\u003c/div\u003e\n\u003ch2\u003e9. 2026-08-23 B1 DL全廢 — 巡檢 DL 退休（追加）\u003c/h2\u003e\n\u003cdiv class=\"warn\"\u003e\u003cb\u003eDL 已全廢（B1 真·全廢，CEO 拍板 2026-08-23）：\u003c/b\u003en8n 不再巡檢 DL。以下原 DL 相關節點已退休：\u003cul\u003e\u003cli\u003eFull Scan §2-Step5：原「四邊對帳 DL↔Sheets↔BingX↔Dashboard」→ 改為「三邊對帳 交易計畫 NOTE ↔ Sheets（主交易記錄）↔ BingX ↔ Dashboard」；對帳鍵改為交易計畫 symbol/side 與 BingX open-orders/positions，不再讀 ef618e4b / DL資料。\u003c/li\u003e\u003cli\u003eFull Scan §2-Step8：原「DL筆數 find NOTE__DL-*」→ 改為「交易計畫筆數 find NOTE__交易計畫-*」（或 planCount）；門檻為近 20 份 LOG 滾動，不再以 300/350 判 FAIL。\u003c/li\u003e\u003cli\u003eJSON 契約 §4：\u003ccode\u003eintegrity.dlSheets\u003c/code\u003e、\u003ccode\u003edlCount\u003c/code\u003e 欄位已作廢，改為 \u003ccode\u003eintegrity.planSheets\u003c/code\u003e / \u003ccode\u003eplanCount\u003c/code\u003e；n8n workflow 下一版需移除這兩欄，AI 端 08:45 已忽略 dl 相關欄位（見自動維運員 v4.0 2026-08-23 patch）。\u003c/li\u003e\u003cli\u003eSheets／NOTE 側：DL資料 937 列已封存至 DL歷史_2026H1_封存_20260823，ef618e4b 不再寫入；未來 dlCount 如仍出現僅為舊 workflow 殘留，應標 NOT_SPECIFIED。\u003c/li\u003e\u003c/ul\u003e舊 workflow 若仍輸出 dlSheets/dlCount，AI 端視為 NOT_SPECIFIED，不建 Bug。\u003c/div\u003e\n\n\u003ch2\u003e8. 2026-08-21 擴充 — Shadow 最小接線 + 健康巡檢 2 項（方案A延伸）\u003c/h2\u003e\n\u003cdiv class=\"callout\"\u003e\u003cb\u003e本次新增（不改方案A主體）：\u003c/b\u003e 2 條外掛工作流 + Fast Scan 補 2 檢，全部沿用「機械標記、AI 派修」模式。資訊量見 CEO 裁定：Shadow 5k/週、健康巡檢零新增 NOTE（僅標記）。\u003c/div\u003e\n\u003ch3\u003e8.1 Shadow Trades 最小接線（獨立 Workflow：Shadow Writer）\u003c/h3\u003e\n\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e觸發\u003c/th\u003e\u003cth\u003e條件\u003c/th\u003e\u003cth\u003e動作\u003c/th\u003e\u003cth\u003e輸出\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eWebhook / Poll DL 新列\u003c/td\u003e\u003ctd\u003eDL Block Reason ∈ {RISK_BUDGET_FULL, WAITING_EVENT, 窄SL成本過高, 同批熔斷} 且 Score≥60\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ePOST /api/write\u003c/code\u003e append 一列至 \u003ccode\u003eShadow Trades\u003c/code\u003e 頁籤：DL ID | Symbol | Side | Score | ①-④分 | Block Reason | Block Rule | 假設Entry | SL | TP | RR（MFE/MAE/Hit/Status 留空）\u003c/td\u003e\u003ctd\u003eSheets 一列（機械，零 token）\u003c/td\u003e\u003c/tr\u003e\n\u003c/tbody\u003e\u003c/table\u003e\n\u003cp\u003e\u003cb\u003e節流：\u003c/b\u003e 被攔當下寫一列，不做 48h 驗證、MFE/MAE 留給漏斗分析員週六批量跑（market_data history 單幣 48h/5日 + Sheets updateCell + Read Verify）。Docker 重啟以表為狀態，無需恢復任務。\u003c/p\u003e\n\u003ch3\u003e8.2 Fast Scan 補 2 檢（沿用每小時 :00，僅 PENDING_AI）\u003c/h3\u003e\n\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e#\u003c/th\u003e\u003cth\u003e檢查\u003c/th\u003e\u003cth\u003e來源\u003c/th\u003e\u003cth\u003e標記\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e④\u003c/td\u003e\u003ctd\u003e窄SL漏網：已掛 LIMIT 但 feeRisk\u0026gt;0.50 或 SL\u0026lt;0.30% 仍放行\u003c/td\u003e\u003ctd\u003eDL 槓桿欄 + open-orders 進場/SL 距離直算 feeRisk\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eautoFix[9]={id:9, found:1, action:\"PENDING_AI\", candidates:[{symbol, feeRisk, slPct}]}\u003c/code\u003e，交 AI→持倉/維護處理\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e⑤\u003c/td\u003e\u003ctd\u003e同批集中漏網：同班同向待掛≥3 筆未熔斷\u003c/td\u003e\u003ctd\u003eopen-orders 同 side 計數\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eautoFix[10]={id:10, found:1, action:\"PENDING_AI\"}\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003c/tbody\u003e\u003c/table\u003e\n\u003cp\u003e\u003cb\u003eAI 08:45 分流：\u003c/b\u003e ④→ TODO 持倉管理師 二次檢（超標則 cancel-order query string + Verify）；⑤→ TODO 維護管理員 標註 + 通知策略師。兩者皆寫 技術中心 維護報告「🟢自動修復」區塊，不進績效與檢討。\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eJSON 契約擴充：\u003c/b\u003e \u003ccode\u003eautoFix\u003c/code\u003e 在既有 8 項後追加 id 9/10，欄位規則同 §4（僅 PENDING_AI/NONE）。Shadow 寫入不進巡檢 JSON（獨立由漏斗員週報對帳）。\u003c/p\u003e\n\n\u003ch2\u003e8. 連動 6 補檢（2026-08-21 成交量門檻 + 交易計畫冪等）\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cb\u003en8n Fast Scan 每小時 :00 補 2 檢（共 5 檢）：\u003c/b\u003e ④ 重複交易計畫（同日同班標題 \u0026gt;=2 → PENDING_AI candidates noteId/title/updatedAt，不自刪）⑤ VOLUME_LEAK（DL 已掛單/觀察但 24h成交額 \u0026lt;5M 未標 VOLUME_LOW → PENDING_AI）\u003c/li\u003e\n\u003cli\u003e\u003cb\u003eFull Scan 08:42 同步：\u003c/b\u003e 兩檢納入 autoFix陣列，action 僅 PENDING_AI/NONE。\u003c/li\u003e\n\u003cli\u003e\u003cb\u003eAI 08:45 判級：\u003c/b\u003e ④→留最新1筆其餘軟刪除；⑤→僅報告標記，不撤單。\u003c/li\u003e\n\u003cli\u003e\u003cb\u003e掛單策略師 v6.7 前置：\u003c/b\u003e 第一關前批量 GET /api/ticker 12幣 quoteVolume，\u0026lt;5M 轉觀察 VOLUME_LOW，5-10M 降倉50%，503/UNKNOWN 放行。\u003c/li\u003e\n\u003cli\u003e\u003cb\u003e交易計畫冪等：\u003c/b\u003e 掛單策略師每班 find 當日同名 NOTE→有則 update，無才 create；重試走同分支。\u003c/li\u003e\n\u003c/ul\u003e\n","createdAt":1787136260942,"deletedAt":null,"displayMode":"artifact","id":"7391612712d2a2512e8d64d6","isNew":false,"isPublic":true,"itemType":"NOTE","name":"n8n 巡檢規格 — 自動維運員 v4.0 配套（2026-08-19）方案A","parents":{"3d52618d766d6984560f58c8":1787136260942},"preParentID":null,"updatedAt":1787494901078,"updatedBy":{"agentId":"ceo","agentName":"CEO","userId":"6a47425d004ad1e5692aa0","userName":"郭胖"},"version":14}]}