CLAUDE.md — /tools/alphafold(AlphaFold 學習中心)

AlphaFold 開放學習工具。主題 01 = 肌少症網絡(IA 可容多主題)。Phase 1 = 前端 + 最小後端代理。

專案資訊

架構要點(踩過的坑,務必遵守)

  1. 所有 class/id 前綴 af- / af,且包在 .af-hub 容器:主站全域 CSS 有 .hero{display:flex}.card.btn.panel.tag 等同名規則會「反向滲入」同名元素(實測把 hero 擠成直排)。用 <div> 取代 header/section/footer 元素、CSS 變數掛 .af-hub(非 :root)避免覆蓋主站變數。改版時別新增未前綴的 class
  2. 動態 DOM(tracker/shelf/concepts/network)用 is:inline script + <style is:global>innerHTML/createElement 建立的元素拿不到 Astro scoped 屬性,scoped <style> 匹配不到 → 用 global(已前綴,不外洩)。
  3. 3Dmol 從 jsDelivr 載cdn.jsdelivr.net/npm/[email protected],CSP 白名單):原型用的 3Dmol.org 不在 CSP script-src 白名單。defer + ensure3Dmol() 輪詢,非阻塞。
  4. 3D 結構與蛋白事實一律走 Worker 代理api.paulkuo.tw),前端不直連 EBI/UniProt:主站 CSP connect-src 只放 self + api.paulkuo.tw;代理另解 CORS + 邊緣快取 + 版本無關。
  5. AlphaFold 檔案版本會漂移:DB 已 v4→v6(2025-08-01)。代理不硬編版本,先打 alphafold.ebi.ac.uk/api/prediction/{acc} 取當前 pdbUrl 再抓,避免 pinned 版本靜默 404。

Worker 代理端點(worker/src/protein.js,公開、無認證、邊緣快取、CORS *

Smoke Test(每次 deploy 後跑,結果寫 worklog)

已知待辦 / Phase 1.5+

檔案結構