本卡屬 FR-167(母卡 CM-3241),卡 P1-3b,階段 P1 升級變安全、批 3。只改 BE(主 repo,Repo 欄空著)。依賴:E-1、P1-3a。
主系統這邊接旗標檔:看到旗標就 worker 不撿新單、心跳不派新任務給 Agent,但進行中的照跑、結果照收。拿掉旗標 10 秒內恢復。
接線+一個守門
new(30 行)+extend:worker 撿單處加一個判斷;core/plugins/remote_agent.py 接 port 一行
repo:~/Projects/Billows/Audit-Manager/compliance-manager-be
改既有:core/plugins/remote_agent.py(一行)
改既有:app/background_job/(撿單處一個判斷)
新開:core/maintenance_gate.py
細節在 design.md §5 對應段(~/Projects/Billows/Audit-Manager/compliance-manager-be/docs/features/FR-167-2610-online-update-channel/design.md,開 design.html 看導覽);本段只列本卡要做到的點:
core/maintenance_gate.py:is_draining() 只看旗標檔存在,路徑從 config 來(同 P3-2a 用的變數)。background_jobs 撿單的那支)加一個 if is_draining(): sleep; continue;core/plugins/remote_agent.py 把 dispatch_gate=lambda: not is_draining() 接進 RemoteAgentAdapters(一行)。draining 與進行中數(P3-2a 的 service 加一個欄)。test 兩條。放旗標檔後:worker 不撿 queued 單(既有 running 照跑完)、Agent 心跳回應不帶 pending 任務但結果照收;拿掉旗標 10 秒內恢復;test 兩條
對照雛形:~/Projects/Billows/Audit-Manager/compliance-manager-be/docs/features/FR-167-2610-online-update-channel/prototype/index.html(上方「跟著走」)。
docs/claude/domain-capabilities.md。三擇一、預設不新增:reuse → extend 加參數 → 都沒有才新增。回寫列出 reuse 了哪些、新增了哪些、為什麼不能 reuse。