本卡屬 FR-167(母卡 CM-3241),卡 P2-2,階段 P2 更新站、批 2。只改 update-center(新 repo)。依賴:P2-1。
更新站的後台:列發行版、撤回、指定哪幾台內部機器可以先裝草稿、拒絕名單、印章表。後台用 Cloudflare Access 擋,只放行決策者信箱;CI 用的 token 只能登記草稿,打其他端點一律 403。
後台不能發布,權限邊界要清楚
extend:同 repo 加 admin 路由(TS);後台頁純 HTML+少量 JS,不用框架
repo:~/Projects/Billows/Audit-Manager/update-center
改既有:update-center/src/index.ts(掛 admin 路由)
新開:update-center/src/routes/admin.ts
新開:update-center/public/admin.html
細節在 design.md §5 對應段(~/Projects/Billows/Audit-Manager/compliance-manager-be/docs/features/FR-167-2610-online-update-channel/design.md,開 design.html 看導覽);本段只列本卡要做到的點:
src/routes/admin.ts:Access JWT 驗證(Cf-Access-Jwt-Assertion,JWKS 從 team domain 取,aud 比對);register-draft 另收 CI token(D1 ci_tokens 表,hash 存)且只能打這一支。withdraw、internal-targets(指紋清單)、denylist 增刪、GET /admin/keys。public/admin.html 純 HTML+fetch,照雛形 ⑦。沒過 Access 的請求 403;CI token 打 register-draft 成功、打 publish 403;指定 STG 指紋先裝後,用 STG 授權檔打 check 看得到草稿、用別家看不到;撤回後 check 不再回
對照雛形:~/Projects/Billows/Audit-Manager/compliance-manager-be/docs/features/FR-167-2610-online-update-channel/prototype/index.html(上方「跟著走」)。
docs/claude/domain-capabilities.md。三擇一、預設不新增:reuse → extend 加參數 → 都沒有才新增。回寫列出 reuse 了哪些、新增了哪些、為什麼不能 reuse。