本卡屬 FR-169(母卡 CM-3223(https://app.notion.com/p/FR-169-Agent-8-5-408346da4cd081eeb138ef3e49d3240e)),卡 F4,批 6。只改 FE(compliance-manager-fe)。依賴:F1、F2。

🔴 本卡是首腦母卡層總驗(2026-10-29)抓到的缺口補卡,三支套件已發版(jedi-file-protect 0.1.0、jedi-iam 1.10.0、jedi-masking 0.1.1),BE 主資料夾已釘版;不必再走 path dependency。前八張卡的成果在各 repo 的工作區 .worktrees/CM-3223(branch ws-CM-3223),本卡會在同一個工作坊底下開,直接疊上去。

這張卡做什麼(白話)

設計 D5 說管理員關掉「檔案下載保護」後有三道提醒:寫稽核、頁頂常駐警示、每筆下載標「未加密」。8 張卡做出來的只有第一道加安全政策頁自己的警示;總覽與全站頂部的常駐橫幅、稽核事件頁每筆下載的「未加密」標記都沒排到卡。這張卡把這兩道補上:橫幅照授權到期橫幅(LicenseExpiryBanner)掛在同一個位置,另開一支小元件;稽核頁對 FILE_DOWNLOADED 與 AGENT_FILE_DOWNLOADED 且 encrypted=false 的列加一顆警示色 Tag。i18n 的 key F1 當時已預留,不必新加。

reuse/extend/new

reuse:securityPolicyStore.protectionOn(F2 已改讀 /system/file-download-protection)、LicenseExpiryBanner 掛在 AppLayout.vue 的位置與寫法(照它新開一支 FileProtectionOffBanner.vue,不塞進 LicenseExpiryBanner)、i18n 已預留 protected_download.unprotected_badge 與 security_policy.file_download_protection_off_warning。extend:UserLogs.vue request/message 欄對 FILE_DOWNLOADED 與 AGENT_FILE_DOWNLOADED 且 encrypted=false 的列加一顆 Tag(severity warning)。誰看得到橫幅:用側欄對「安全政策」頁的同一個能力點判斷,不自己發明角色判斷

在哪裡

repo:~/Projects/Billows/Audit-Manager/compliance-manager-fe
改既有:src/layout/AppLayout.vue(掛一行)
改既有:src/views/action-log/UserLogs.vue
新開:src/components/security/FileProtectionOffBanner.vue

怎麼做

驗收(首腦照這個驗)

安全政策關掉存檔後:總覽與任何頁頂部出現常駐橫幅(系統管理員帳號看得到、一般使用者看不到),開回來橫幅消失;稽核事件頁 FILE_DOWNLOADED/AGENT_FILE_DOWNLOADED 且 encrypted=false 的列有「未加密(保護已關閉)」Tag,encrypted=true 的列沒有;grep -rn border-left 新檔為 0;vitest 既有綠

必讀

紀律