本卡屬 FR-181(母卡 FR-181 母案 CM-3595),卡 B-6d,批 10。只改 主 repo。依賴:B-6b、B-6c。

這張卡做什麼(白話)

對帳改走長輪詢的主系統端:把 B-6c 定義的 file_verifier port 實作成「每檔 ask(verify_file)」注入給套件,跟 A-1 已經注入的四個 port 放同一處。注意對帳是逐檔問、每檔佔等回答配額一條,先做序列(百檔約 2 分鐘),實測時間寫回寫;要並發另開卡。同時主系統釘契約 0.5.2、remote-agent 1.17.2。驗收要用一個「證據存 Agent 側」的租戶(DEV 的 STORAGE_CONFIG 設 remote_agent 指本機 Agent)上傳幾檔實按對帳,含竄改、刪檔、Agent 停掉三種情況。

reuse/extend/new

extend:core/plugins/_agent_channel.py channel_adapters() 回傳 dict 加 file_verifier=LazyFileVerifier()——實作 (agent, file_uid):agent_request_service.ask(agent, KIND_VERIFY_FILE, {"file_uid": file_uid}, timeout=15) 回 result["sha256"];AgentRequestFailed 且 reason=missing → 回 None;逾時/busy → 原樣拋給套件記 unreachable。🔴 reconcile 是逐檔同步 ask,N 檔=N 次 ask 各佔等回答配額一條——改成每檔序列呼叫(不並發),百檔約 2 分鐘,回寫記實測時間;若要並發另開卡。釘 0.5.2/1.17.2、poetry update 兩支

在哪裡

repo:~/Projects/Billows/Audit-Manager/compliance-manager-be
改既有:core/plugins/_agent_channel.py
改既有:pyproject.toml
改既有:poetry.lock
改既有:test/test_agent_outbound_only.py(對帳路徑加進「開關關不直推」五條變六條)

怎麼做

驗收(首腦照這個驗)

DEV 本機 Agent(證據存 Agent 的租戶,STORAGE_CONFIG=remote_agent 指本機 Agent)上傳 3 檔 → 管理頁「對帳」→ {total:3, matched:3};Agent 側手改一檔 bytes → mismatched 1;刪一檔 → missing 1;Agent 停掉 → error 3 reason unreachable、30 秒內回不 500;守衛六條綠

必讀