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:
@@ -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 本 session(portal-auth P3:Portal UI+查詢 enforce——本 SDD 最大件,PR 待總管審不 merge)**:
|
||||
> - **實作(分支 `portal-auth-p3-portal-ui`)**:① `routes/portal-data.ts`(安全核心)——`/portal/data/*`
|
||||
> server-side enforce:session→回讀 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` slot+ensurePortalTemplates 冪等 grow 舊 template 缺 slot+
|
||||
> admin libraries PATCH 可標記。
|
||||
> - **UI 重用取捨**:複製 console 樣式子集(紙感/明體/琥珀/深淺主題)而非抽共用模組——抽共用要動
|
||||
> console.ts(違「console 現狀不動」鐵律);代價=樣式雙份、改版要兩邊同步(誠實記)。
|
||||
> - **驗證**:cypher 154/155(唯一失敗=executor「不存在的零件」pre-existing,stash 複驗)+新增
|
||||
> `tests/portal-data.test.ts` 21 項;kbdb 20/20;兩包 tsc 0;`wrangler deploy --dry-run` 打包過。
|
||||
> **端到端隔離雙 worker(9790/9791,demo 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/零 Mira+inline JS node --check、semantic 誠實降級仍 enforce、改密碼全鏈。
|
||||
> - **不 merge 待總管審**(B 類流程);部署後 leo21c 線上驗(semantic 線上路徑仍依 P1 部署清單
|
||||
> Vectorize `library` index+reindex backfill)。下一棒 P4(admin 帳號管理頁)。
|
||||
> - **附帶**:P2 舊 session 測試補 P3 能力欄位 mock;wrangler.test.toml 補 ANALYTICS_KV+KBDB_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=A(graph 粗閘)/D-8=admin(工作流頁)。
|
||||
> - **PR #50**(commit 7f40964):portal-auth **P1**——KBDB「庫」filter 地基(`metadata_json.$.library`,D1 COALESCE→general fallback+Vectorize `$in` 主路徑、寫入端正規化;kbdb 17/17 測試綠)。
|
||||
> - **PR #51**(commit 1260d8c):portal-auth **P2**——portal_user 模型+認證 API(KBDB 萬用表零新表、`{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 本 session(Mira Console 完整版 UI,Arcrun#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-plugin,token 只在 server 側;plugin base = `KBDB_GRAPH_URL` 或 `kbdb-graph-plugin.<subdomain>.workers.dev` 現算)④ types 加 `KBDB_GRAPH_URL?`。
|
||||
|
||||
Reference in New Issue
Block a user