本卡屬 FR-181(母卡 FR-181 母案(同清單上一張)),卡 B-2,批 6。只改 主 repo。依賴:A-1、A-3。
FR-178 剛做的「支援頁遠端查 Agent 日誌」是主系統直連 Agent GET /logs 即查即回,單向網路下查不到。改成 ask(query_logs, 篩選條件),Agent 用既有 audit_log.list_logs 查完回覆,主系統回給頁面——回應形狀不變,FE 不動。Agent 沒回應 30 秒後顯示既有的「Agent 無回應」錯誤,不白屏。
extend:FR-178 主系統側打 Agent GET /logs 的那支(app/support/service/agent_log_query_app_service.py)改 ask(agent, KIND_QUERY_LOGS, filters) 回 result,回應形狀不變(FE 不動);逾時→既有「Agent 無回應」錯誤碼
repo:~/Projects/Billows/Audit-Manager/compliance-manager-be
改既有:app/support/service/agent_log_query_app_service.py
改既有:test/test_agent_log_query_app_service.py
app/support/service/agent_log_query_app_service.py:找現在打 Agent GET /logs 的那支(經 AgentDataPlaneClient.command("GET /logs")),改 self._agent_request_service.ask(agent, KIND_QUERY_LOGS, filters) 回 result;DI 注入;回應形狀不變。逾時例外→既有「Agent 無回應」錯誤碼(看該檔現在怎麼對映 AgentDataPlaneClient 失敗,沿用同一碼)。test_agent_log_query_app_service.py 改假 service;支援頁手測。支援頁「系統日誌查詢」來源選 123 Agent → 查得到;Agent 停掉 → 30 秒後頁面顯示無回應不白屏
~/Projects/Billows/Audit-Manager/compliance-manager-be/docs/features/FR-181-2611-agent-outbound-only-channel/design.md §3 決策定案(D1~D8)、§4 端到端流程兩張圖、§5 詳細設計本卡那節、§7 拆分表本卡那列;為什麼這樣定看 discussion.mdcore/plugins/_agent_commands.py(檔頭說明三個觸發點)、app/remote_agent/service/agent_command_service.py、core/plugins/_agent_config_notify.py、core/plugins/_agent_keys.py、infra/upload_file/remote_agent_adapter.py、core/plugins/remote_agent.py(plugin mount 與 handle)jedi-remote-agent/jedi_remote_agent/api/routing.py(端點表與 AUTH_AGENT)、api/routes/(心跳 route 範本)、app/service/agent_data_plane_client.py(直推出口,留著)、app/service/heartbeat_vulndb.py(_CORE_KEYS 心跳守衛);契約 jedi-agent-protocol/jedi_agent_protocol/commands.py、heartbeat.py、events.pyguidant_agent/sync/app/config_pull.py(WorkerComponent 拉取範本)、enroll.py(心跳 client 與通行證)、event_sender.py+outbox.py(送不到補送)、task_queue.py、sync/api/data_plane_server.py(8443 與 blueprint 掛點)、sync/api/cmd_*.py(直推 handler,本案改薄)、files/api/blob_route.py、scan/api/routes/、docs/ARCHITECTURE.mddocs/claude/domain-capabilities.md。三擇一、預設不新增。回寫列出本卡 reuse 了哪些、新增了哪些、為什麼不能 reuse。