portal-auth P3(#24 #25):Portal UI+/portal/data/* server-side enforce(不 merge,待總管審) (#52)

This commit was merged in pull request #52.
This commit is contained in:
Leo
2026-07-14 07:19:01 +00:00
parent 1260d8cffb
commit 3577e9255c
13 changed files with 1481 additions and 29 deletions
+34 -1
View File
@@ -3,7 +3,7 @@ name: status
description: 當前進度、進行中 Phase、已知問題、下一步(動態文件,每 session 更新)
metadata:
type: project
last_updated: 2026-07-02
last_updated: 2026-07-14
---
# 當前進度(動態)
@@ -15,6 +15,39 @@ metadata:
## 📍 當前位置
> **2026-07-14 本 sessionportal-auth P3Portal UI+查詢 enforce——本 SDD 最大件,PR 待總管審不 merge)**:
> - **實作(分支 `portal-auth-p3-portal-ui`**:① `routes/portal-data.ts`(安全核心)——`/portal/data/*`
> server-side enforcesession→回讀 user record→server 注入 `owner_id=CONSOLE_TENANT``library=<集合>`
> 轉發 KBDB;**前端絕不下發租戶字串**vs console 把 tenant 交給前端直打 /kbdb/*);caller 自帶
> owner_id/library 被靜默覆蓋;entries/:id 逐筆驗租戶+庫(越庫/跨租戶/不存在同一句 404 不洩存在性);
> graph D-4 粗閘(來源庫=portal_library `graph_source` 標記、無標記預設 general;無權 403);workflows
> D-8`PORTAL_SHOW_WORKFLOWS` 預設 admin;唯讀+最近執行,無 webhook_url/trigger 把手)。
> ② `routes/portal-ui.ts`——`/portal` 單檔 HTML 殼(登入/搜尋三模式+source 溯源+卡片詳頁/設定改
> 密碼看權限主題;graph 模式與工作流頁按 `/portal/session` 新能力欄位 `graph_allowed`/`workflows_visible`
> 顯示,真閘在路由層)。③ P1 順延項補上:kbdb-proxy `/kbdb/search``/kbdb/entries` 透傳 `library`。
> ④ portal_library seed 加 `graph_source` slotensurePortalTemplates 冪等 grow 舊 template 缺 slot
> admin libraries PATCH 可標記。
> - **UI 重用取捨**:複製 console 樣式子集(紙感/明體/琥珀/深淺主題)而非抽共用模組——抽共用要動
> console.ts(違「console 現狀不動」鐵律);代價=樣式雙份、改版要兩邊同步(誠實記)。
> - **驗證**cypher 154/155(唯一失敗=executor「不存在的零件」pre-existingstash 複驗)+新增
> `tests/portal-data.test.ts` 21 項;kbdb 20/20;兩包 tsc 0`wrangler deploy --dry-run` 打包過。
> **端到端隔離雙 worker9790/9791demo 8787/8788 不碰)47/47 全綠**:越庫 id 直讀 404(含跨租戶
> id)、攻擊參數 `library=hr&owner_id=other-tenant` 被 server 覆蓋、graph 無權 403→授 general 後放行、
> admin 全庫 3 筆+跨租戶第 4 筆不可見、權限 PATCH 即時生效(同一 session)、HTML 殼零租戶字串/零
> X-Arcrun-API-Key/零 Mirainline JS node --check、semantic 誠實降級仍 enforce、改密碼全鏈。
> - **不 merge 待總管審**B 類流程);部署後 leo21c 線上驗(semantic 線上路徑仍依 P1 部署清單
> Vectorize `library` indexreindex backfill)。下一棒 P4admin 帳號管理頁)。
> - **附帶**P2 舊 session 測試補 P3 能力欄位 mockwrangler.test.toml 補 ANALYTICS_KVKBDB_GRAPH_URL
> 假 host。本 session 同時補記 #47-#51 五件的 wiki 斷層(見下段)。
>
> **2026-07-13/14 補記(RAG Portal 線五連發——前五個改動當時漏寫 wiki,leo 點破接關斷層,此段補上)**:
> - **PR #47**commit 2e1005e):console rebrand Mira→Arcrun`CONSOLE_BRAND` var 可覆蓋品牌字樣(Gitea #21)——console 是引擎共用件不寫死產品名。
> - **PR #48**commit cbebb36):`CONSOLE_PROFILE=rag` 頁面裁剪(企業產品樣:搜尋落地、只留搜尋/工作流/設定;未設=full,Mira 實例零影響)——是 config 裁剪不是 auth。
> - **PR #49**commit 18c0846):**portal-auth SDD 立卷**`system-dev/docs/3-specs/portal-auth/`Gitea #24 Portal 拆分+#25 多用戶登入);純設計文件。總管審過+leo 裁 D-4=Agraph 粗閘)/D-8=admin(工作流頁)。
> - **PR #50**commit 7f40964):portal-auth **P1**——KBDB「庫」filter 地基(`metadata_json.$.library`D1 COALESCE→general fallbackVectorize `$in` 主路徑、寫入端正規化;kbdb 17/17 測試綠)。
> - **PR #51**commit 1260d8c):portal-auth **P2**——portal_user 模型+認證 APIKBDB 萬用表零新表、`{tenant}::portal` 子 namespace、PBKDF2-SHA256 600k、bootstrap 走 console owner session、admin CRUD+節流;cypher 20 項單元+雙 worker e2e 33/33)。
> - 以上均**不 merge 待總管審**的 PR 正規流程(#47/#48 已 merge 進 main#49/#50/#51 已 merge——見 git log——部署另走 gated leo21c wrangler 直推)。下一棒=P3 Portal UI+查詢 enforce(本 SDD 最大件)、P4 admin 頁。
> **2026-07-04 本 sessionMira Console 完整版 UIArcrun#3 console 系,總管派工)**
> - **實作(commit f9e44ab**`/console` 依 claude design 定稿(紙感暖黑「2a」,`system-dev/docs/6-user/Mira Console 設計規劃/` 於頂層 repo)+ brief 8 頁資訊架構全面重寫成單檔 SPA(hash routing、零外部資源、手機優先+≥1024px 側欄+底部五 tab)。`/console/dashboard` 免登入獨立頁同步換視覺(呼吸球「安/趕/滯」)。
> - **後端小補(全唯讀/薄殼)**:① `GET /credentials/catalog`D1 目錄 metadata list,絕不回密文,D19)② `GET /console/inbox-data`inbox 清單,session 鎖——訊息原文屬機敏,計數才免登入)③ `GET /kbdb/graph/neighbors/:name`cypher 代轉 kbdb-graph-plugintoken 只在 server 側;plugin base = `KBDB_GRAPH_URL` 或 `kbdb-graph-plugin.<subdomain>.workers.dev` 現算)④ types 加 `KBDB_GRAPH_URL?`。