portal-auth P3(#24 #25):Portal UI+/portal/data/* server-side enforce(不 merge,待總管審) #52
Reference in New Issue
Block a user
Delete Branch "portal-auth-p3-portal-ui"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
portal-auth P3:Portal UI+查詢 enforce(design §1/§3.3/§3.4/§5/§6;Gitea #24/#25)
不 merge,待總管審(B 類流程)。P1(#50)/P2(#51)之後的第三棒,本 SDD 最大件。順帶補上 P1 順延的 kbdb-proxy
library透傳一行,並補記 #47-#51 的 wiki 接關斷層(步驟 0)。改動
cypher-executor/src/routes/portal-data.ts(新)/portal/data/*server-side enforce(search/entries/:id 逐筆驗庫/graph D-4 粗閘/workflows D-8 唯讀)cypher-executor/src/routes/portal-ui.ts(新)GET /portal單檔 HTML 殼:登入+搜尋(keyword/semantic/graph 三模式+source 溯源+卡片詳頁)+設定(改密碼/看權限/主題)+工作流(admin)cypher-executor/src/routes/portal.tsgraphSourceLibraries/hasGraphAccess/workflowsVisible;/portal/session補graph_allowed/workflows_visible;libraries PATCH 收graph_sourcecypher-executor/src/lib/portal-seeds.tsgraph_sourceslot;ensurePortalTemplates冪等 grow 舊 template 缺的 slotscypher-executor/src/routes/kbdb-proxy.ts/kbdb/search+/kbdb/entries透傳library(owner/admin 面自選庫;portal 面不經這)cypher-executor/wrangler.toml/types.tsPORTAL_SHOW_WORKFLOWS(預設 admin)tests/portal-data.test.ts(新 21 項)+ P2 session 測試補欄位+wrangler.test.toml補 mocksystem-dev/:wiki status(含 #47-#51 補記)+ portal-auth tasks.md 勾項安全模型(vs console 的關鍵差異,design §3.3)
CONSOLE_TENANT下發前端直打/kbdb/*。portal:前端只持 session token,server 從 session→回讀 user record→注入owner_id+library後轉發 KBDB。owner_id/library參數一律被 server 值靜默覆蓋(不回錯——回錯會變參數名 oracle)。graph_allowed/workflows_visible只是顯示提示。webhook_url/trigger 把手。驗收證據表(本機端到端,隔離雙 worker 9790/9791,demo 8787/8788 未碰;47/47 全綠)
grep '"tenant"'/grep "'leo'"0 命中)?library=hr&owner_id=other-tenant→ 仍只 finance 1 筆(參數被 server 覆蓋)/portal/data/entries/:id→ 404["*"]/授 general 後 → 放行轉發(upstream 404=閘已過)read_only:true、無 webhook_url/trigger)["*"]搜尋見本租戶全部 3 筆;跨租戶第 4 筆不可見GET /portal只回登入殼Arcrun Portal(brand var)、零X-Arcrun-API-Key、不打/kbdb/*、零 Mira;inline JSnode --check過單元:cypher 154/155(唯一失敗=executor「不存在的零件」pre-existing,git stash 複驗)+新增 portal-data 21 項;kbdb 20/20;兩包 tsc exit 0;
wrangler deploy --dry-run打包過。UI 重用取捨(一句話)
複製 console 樣式子集(紙感/明體/琥珀/深淺主題)而非抽共用模組——抽共用要動 console.ts(違「console 現狀不動」鐵律),代價=樣式雙份、改版要兩邊同步。
部署注意(merge 後,gated leo21c wrangler 直推)
PORTAL_SHOW_WORKFLOWS(預設 admin,可不設)。librarymetadata index+POST /embed/backfill {"reindex":true}。/init/seed(或任一次 bootstrap/登記庫)即冪等補graph_sourceslot。下一棒:P4(admin 帳號管理頁+庫目錄管理 UI)。
🤖 Generated with Claude Code