Maker-Checker 審批閘門
有些自動化步驟後果太重大,不該由單一方說了算 —— 刪除正式環境資料、匯款、發布版
本。ApprovalGate 提供**職責分離(segregation of duties)**控制:由 maker
提出請求並取得 token;*checker*(必須是**不同**的主體)核准或駁回;只有在 token
被核准後動作才會繼續。
狀態存於選用的 JSON 檔,因此 maker(例如 CI 派發器)與 checker(例如人工審批者)
可分屬不同程序執行。本模組為純標準函式庫,不匯入 PySide6;token 使用
secrets。
無頭 API
from je_auto_control import ApprovalGate
gate = ApprovalGate("approvals.json") # 跨程序共用
token = gate.request("delete prod table", requester="alice")
# 自我核准會被拒絕 —— checker 必須與 maker 不同。
gate.approve(token, "alice") # -> False
gate.approve(token, "bob") # -> True
if gate.is_approved(token):
run_high_risk_action()
reject(token, approver) 會封鎖動作;已決議的請求無法再次決議。
status(token) 回傳 pending / approved / rejected``(未知 token 為
``None),``get(token)`` 回傳完整紀錄,``pending()`` 則列出所有仍待決議的請求。
執行器指令
指令 |
效果 |
|---|---|
|
為 |
|
以 |
|
以 |
|
回傳 |
每個指令都接受選用的 db 路徑,讓流程可將請求保存到共用 JSON 檔。相同操作亦提供
為 MCP 工具(ac_approval_request / ac_approval_approve /
ac_approval_reject / ac_approval_status),以及 Script Builder 中 Tools
分類下的指令。