portal-auth P4 收尾:tasks.md 全 [x]+wiki status P4 段(SDD P1-P4 全完成,待 T6-cloud 排練)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
uncle6me-web
2026-07-14 15:38:46 +08:00
parent 605204511f
commit fd94340eba
2 changed files with 42 additions and 4 deletions
+19 -1
View File
@@ -15,7 +15,25 @@ metadata:
## 📍 當前位置
> **2026-07-14 本 sessionportal-auth P3Portal UI+查詢 enforce——本 SDD 最大件PR 待總管審不 merge**
> **2026-07-14 本 sessionportal-auth P4admin 帳號+庫管理頁——本 SDD 最後一棒PR 待總管審不 merge**
> - **實作(分支 `portal-auth-p4-admin-ui`3+1 小步 commit**:① `portal.ts` 補 **last-admin
> 鎖死保護**(總管派工明定、design 未明寫)——PATCH 停用/降級「最後一個 active admin」→ 409
> (另一 admin 是 disabled 不算數;只在目標是 active admin 且會失格時才多打一次 list,平時零成本)。
> admin API 其餘 P2 已交付(users CRUD/reset-password/libraries 含 graph_source**不重做**。
> ② `portal-ui.ts` 加「管理」頁(admin-only nav,前端藏=UX、真閘=/portal/admin/* role 403):
> 帳號管理(列表/新增/停用啟用/重設密碼+每帳號勾選可查庫含 `["*"]` 全庫連動)+庫目錄管理
> (登記/停用/graph_source 標記)。**一次性密碼只在畫面顯示一次**(otpbox 關閉即逝,server 只存
> hash、明碼不落庫不進 log)。③ 工作流頁 P4 項=P3 已交付,零改動沿用。
> - **驗證**:新增 `tests/portal-admin.test.ts` 14 項;cypher 168/169(唯一失敗=executor「不存在的
> 零件」pre-existing);kbdb 20/20;兩包 tsc 0dry-run 打包過;inline JS node --check 過。
> **端到端隔離雙 worker9790/9791demo 8787/8788 不碰)41/41 全綠**bootstrap→建帳號拿一次性
> 密碼→新 user 登入→勾庫**同一 session 搜尋即時變化**(1→2 筆、越庫 404→200)→停用 session 立即
> 失效→重設密碼舊密 401 新密 200→last-admin 409+降級即時生效(原 admin session 變 403)→一般
> user 打 admin API 403→HTML 殼加 admin 頁後仍零租戶字串/零 /kbdb//零 API key/零 Mira。
> - **portal-auth SDD P1-P4 全完成,待 T6-cloud 排練上真環境**(部署清單沿 P1Vectorize `library`
> metadata indexreindex backfillgated leo21c wrangler 直推,B 類流程)。不 merge 待總管審。
>
> **2026-07-14 上一輪(portal-auth P3Portal UI+查詢 enforce——本 SDD 最大件,PR #52 待總管審不 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 自帶