portal-auth SDD 定案:D-4=A graph 粗閘、D-8=工作流頁 admin(leo 2026-07-14 裁)(#24 #25)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
uncle6me-web
2026-07-14 11:31:57 +08:00
parent 28152aa14f
commit 18d6742177
@@ -1,7 +1,7 @@
# portal-auth — DesignRAG Portal 多人授權)
> 狀態:草稿(待總管/leo 審
> 建立:2026-07-13 | 最後更新:2026-07-13
> 狀態:**定案**2026-07-14 總管審過+leo 裁 D-4=A/D-8=adminPR #49
> 建立:2026-07-13 | 最後更新:2026-07-14
> 對應:Gitea #24T1 Portal 拆分)+ #25T2 多用戶登入);rag-wave1 design §2/§3/§8
> 姊妹檔:requirements.md(範圍與驗收)、tasks.md(實作切分)
@@ -91,7 +91,7 @@ record 本身沒有可索引的 head——另建一筆 head entry`entry_type=
### 3.4 graph 模式的庫權限(已知薄弱點,明寫)
kbdb-graph-plugin 的 `/graph/neighbors/:name` 只吃節點名,**無 owner/庫概念**(proxy 也只驗有 key)。三元組是跨文件萃取的衍生物,逐邊回查來源 entry 的 library=N+1 且語意模糊(一條邊可能來自多庫文件)。
- **決策 D-4第一波,建議**:graph 模式=**粗閘**——只對「擁有 graph 來源庫權限」的用戶開放(portal_library 標記哪個庫是圖譜來源,預設 `general`;無權者搜尋頁不顯示 graph 模式、`/portal/data/graph/*` 回 403)。逐節點/逐邊細粒度過濾列第二波。**待裁**(涉及「機密庫內容會不會經圖譜洩漏」的品味判斷:若客戶把機密文件餵進圖萃取,粗閘擋不住節點名本身;第一波可再收緊成「graph 模式只給 admin」)
- **決策 D-4定案:A 粗閘,leo 2026-07-14**:graph 模式=**粗閘**——只對「擁有 graph 來源庫權限」的用戶開放(portal_library 標記哪個庫是圖譜來源,預設 `general`;無權者搜尋頁不顯示 graph 模式、`/portal/data/graph/*` 回 403)。逐節點/逐邊細粒度過濾列第二波。已知殘餘(誠實記):客戶把機密文件餵進圖萃取,粗閘擋不住節點名本身——導入文件要寫明「機密庫預設不進圖萃取來源」
## 4. 密碼與登入
@@ -139,7 +139,7 @@ kbdb-graph-plugin 的 `/graph/neighbors/:name` 只吃節點名,**無 owner/庫
- **一般用戶=兩頁**:搜尋頁(三模式切換+結果 source 溯源+卡片詳頁)+設定頁(改密碼、看自己的角色與可查庫、主題切換)。
- **admin 多一頁**:帳號管理(同仁列表/新增/停用/重設密碼+每帳號勾選可查庫)+庫目錄管理。掛 Portal 內 admin-only nav 項(**非** console settings 擴充——console 不動鐵律;且受眾不同:console 是 owner、這頁是 portal admin)。
- **決策 D-8:工作流頁預設 admin 可見、一般用戶不顯示**【待裁,輕】——leo 拍板「工作流頁可以顯示(誠實系統狀態)」但同句拍板「一般用戶只要兩頁」。兩者取交集=admin 見(admin 的第四頁)、一般用戶不見;若 leo 意在全員可見,改 config `PORTAL_SHOW_WORKFLOWS=all` 一行的事。唯讀、不開 triggertrigger 是 owner/console 的事)。
- **決策 D-8(定案:adminleo 2026-07-14:工作流頁 admin 可見、一般用戶不顯示**——「工作流頁可以顯示(誠實系統狀態)」「一般用戶只要兩頁」取交集;要改全員可見config `PORTAL_SHOW_WORKFLOWS=all` 一行。唯讀、不開 triggertrigger 是 owner/console 的事)。
- Mira 專屬頁(駕駛艙/分流台/專案管理/自動開發)**一律不進**。
## 7. 設定與部署