本卡屬 FR-169(母卡 (建卡後補 Case No)),卡 B2,批 3。只改 BE(主 repo,Repo 欄空著)。依賴:B1。
把主系統其餘十幾支匯出端點全部換成呼叫 B1 的 send_protected,每支一行。SSP、模組框架 SSP 匯出各自抄的 _send_attachment 複本刪掉。有三種下載不接:Agent 機器對機器拉的弱點資料庫包(不是人下載)、OSCAL 框架原始 JSON(公開框架內容,非機敏)、PoA&M 的 JSON 若也是機器匯出——回寫列出來給首腦核。診斷包原本是 tar.gz,改走 7z。SSP 的 odt 格式沒有原生密碼,走 7z 包。
extend:每支端點把自己的 send_file/_send_attachment 換成 B1 的 send_protected 一行;刪掉 ssp_export、mf_ssp_export 各自的 _send_attachment 複本。不接:agent_vulndb_route(Agent 機器對機器拉的包,不是人下載)、oscal_framework_version_route OSCAL json 下載(框架公開內容,非機敏;回寫列出)、poam_objective_route json 若為機器匯出同上
repo:~/Projects/Billows/Audit-Manager/compliance-manager-be
改既有:api/oscal/routes/ssp/ssp_export_route.py
改既有:api/module_frame/routes/mf_ssp_export_route.py
改既有:api/oscal/routes/control_mapping_route.py
改既有:api/governance/routes/raci_defaults_io_route.py
改既有:api/governance/routes/risk_register_route.py
改既有:api/pre_engagement/routes/file_route.py
改既有:api/support/routes/diagnostic_bundle_route.py
改既有:api/ai_call_log/routes/ai_call_log_route.py
改既有:api/oscal/routes/ssp/ssp_control_impl_import_route.py
改既有:api/module_frame/routes/ssp_import_template_route.py
改既有:api/module_frame/routes/module_frame_template_import_route.py
改既有:api/source_scan/routes/scan_route.py
改既有:api/project/routes/ar_workbook_route.py
改既有:api/project/routes/pass_report_route.py
改既有:api/project/routes/poam_objective_route.py
改既有:api/project_summary_report/routes/project_summary_report_route.py
改既有:api/remote_agent/routes/agent_local_run_route.py
改既有:api/remote_agent/routes/agent_file_route.py
send_file(...)/_send_attachment(...) 換成 send_protected(buf, filename, mimetype, actor=get_user_context(), source="<端點名>");回 zip/tar.gz 的端點改傳 files=[(name, bytes), ...]。ssp_export_route._send_attachment、mf_ssp_export_route._send_attachment。agent_vulndb_route、oscal_framework_version_route OSCAL 下載、poam_objective_route JSON(確認是否人下載,是就接)。grep -rn 'send_file\|as_attachment' api/ 剩餘清單貼回寫。grep -rn 'send_file\|as_attachment' api/ | grep -v file_protect | grep -v vulndb | grep -v framework_version 只剩回寫列出的例外;每支端點實打一次:不帶 header 400、帶 header 回加密檔;tar.gz 診斷包改回 .7z;SSP 匯出 docx/pdf/odt 三格式都要密碼(odt 走 7z 包,回寫註明);守衛測試綠
~/Projects/Billows/Audit-Manager/compliance-manager-be/docs/features/FR-169-2610-download-file-encryption/design.md §3 決策、§5 詳細設計、§6 拆分表本卡那列~/Projects/Billows/Audit-Manager/compliance-manager-be/docs/features/FR-169-2610-download-file-encryption/prototype/index.html(畫面①對話框、②開關、②b 關閉警示、③Agent、④稽核)~/Projects/Billows/Audit-Manager/compliance-manager-be/docs/analysis/2026-10-29-download-file-encryption-approach.mddocs/claude/domain-capabilities.md 與 FE docs/claude/frontend-overview.md §4。三擇一、預設不新增:reuse → extend 加參數 → 兩邊都確認沒有才新增。回寫列出本卡 reuse 了哪些、新增了哪些、為什麼不能 reuse。