本卡屬 FR-181(母卡 FR-181 母案(同清單上一張)),卡 B-1,批 6。只改 主 repo。依賴:A-1、A-3。

這張卡做什麼(白話)

證據存在 Agent 那台的租戶,主系統只有一筆「參照」(檔案在哪台、Agent 那邊的檔案 uid),bytes 全在 Agent。現況上傳/下載/轉 PDF/刪除都是主系統主動連 Agent /blob。改成(決策者裁 A 案「經主系統中轉」):上傳=主系統收檔先暫存 → ask(fetch_file) → Agent 來拿、驗 sha、存好回覆檔案 uid → 主系統寫參照、刪暫存;下載/預覽=ask(send_file) → Agent 把檔 multipart 送上來落暫存 → 主系統串給瀏覽器 → 刪暫存;轉 PDF 同下載、Agent 側先轉;刪除=fire(delete_file) 不等。使用者感受:多 1~2 秒;大檔等待約翻倍(Agent 整檔傳完主系統才開始回瀏覽器)——100 MB 要實測記時間。錯誤碼不變(FE 依碼顯示)。adapter 選擇邏輯不動。

reuse/extend/new

extend:infra/upload_file/remote_agent_adapter.py——save_file:收檔→spool.save→ask(fetch_file, {request_id, name, sha256})→result 的 file_uid 寫參照 row;get_file/fetch_agent_blob:ask(send_file, {file_uid})→spool.open(request_id) 串給呼叫端→讀完刪;convert_to_pdf:ask(send_pdf);delete_file:fire(delete_file)。_via_data_plane/_data_plane/_lookup_agent 刪(直推開關關閉時這條本來就不通;主系統側直推留在 AgentCommandService 已足夠 D6)。錯誤碼不變(FE 依碼顯示):504→FILE_AGENT_UNREACHABLE、Agent failed→FILE_AGENT_BAD_RESPONSE。禁:managed_file_upload_service.py 的 adapter 選擇邏輯不動

在哪裡

repo:~/Projects/Billows/Audit-Manager/compliance-manager-be
改既有:infra/upload_file/remote_agent_adapter.py
改既有:test/test_remote_agent_adapter.py

怎麼做

驗收(首腦照這個驗)

DEV 一個租戶 STORAGE_CONFIG 設 remote_agent 指 123 Agent:上傳 1 MB → upload_files 參照 row 有 save_file_name、/tmp/agent-outbound 空、Agent 側檔存在;預覽/下載拿到同 sha;docx 轉 PDF 可開;刪除 → Agent 側檔消失;100 MB 檔上傳與下載各量一次時間寫進回寫;Agent 停掉 → 上傳 30 秒後回 FILE_AGENT_UNREACHABLE 不 500

必讀