修復計畫 v2:公告系統安全與可用性(A~F 完整報告)
由 Sun Lin 分享的筆記
日期:2026-07-05 分支:cubelv-cli-announcement-hardening-v2(尚未 push) 狀態:僅完成程式碼與 SQL 草案輸出,尚未修改任何正式系統。 A. index.html 修改摘要 原來 ❌ 改後 ✅ 從 localStorage 讀 Supabase 設定 硬編碼 SUPABASEURL 、 SUPABASEPUBLISHABLEKEY 常數 無 localStorage → 顯示錯誤 頁面載入自動初始化,直接讀公告 loadPublishedAnnouncements(url, key) 無參數版本 關鍵程式碼: ✅ 不依賴 localStorage ✅ 只讀取 status = 'published' 的公告 ✅ 排序:ispinned DESC → publishedat DESC ✅ 無公告時顯示「目前尚無已發布公告。」 ✅ 絕不使用 servicerole key / secret key B. announcement-admin.html 修改摘要 原來 ❌ 改後 ✅ 手動輸入 Supabase URL/Key 才初始化 頁面載入自動初始化 儲存設定到 localStorage 不使用 localStorage verifyAdmin() 前端比對 email 登入成功即顯示管理面板,權限交 RLS config-section 手動設定區域 改為 status-section 自動狀態顯示 操作功能: ✅ 新增公告(寫入 createdat、updatedat、status='draft'、ispinned=false) ✅ 編輯公告(寫入 updatedat) ✅ 發布(寫入 status='published'、publishedat、updatedat) ✅ 下架(寫入 status='draft'、p…