refactor: rebuild backend around role-site authorization model

This commit is contained in:
Chris
2026-04-02 23:58:13 +08:00
parent e2dd3ce106
commit 1e1d913103
46 changed files with 1645 additions and 2289 deletions

View File

@@ -1,6 +1,13 @@
# Local Dev RunbookKeycloak
## 1) 啟動後端
## 1) 先重建 DB schema本次改版必做
```bash
cd backend
psql "$DATABASE_URL" -f scripts/init_schema.sql
```
- DB schema 檔案:[backend/scripts/init_schema.sql](../backend/scripts/init_schema.sql)
## 2) 啟動後端
```bash
cd backend
./scripts/start_dev.sh
@@ -8,7 +15,7 @@ cd backend
- 專案路徑:[backend](../backend)
- 啟動腳本:[backend/scripts/start_dev.sh](../backend/scripts/start_dev.sh)
## 2) 啟動前端
## 3) 啟動前端
```bash
cd frontend
npm install
@@ -16,7 +23,7 @@ npm run dev
```
- 專案路徑:[frontend](../frontend)
## 3) 必要環境變數([backend/.env.development](../backend/.env.development)
## 4) 必要環境變數([backend/.env.development](../backend/.env.development)
- `KEYCLOAK_BASE_URL`
- `KEYCLOAK_REALM`
- `KEYCLOAK_CLIENT_ID`
@@ -25,20 +32,20 @@ npm run dev
- `KEYCLOAK_ADMIN_CLIENT_SECRET`
- `ADMIN_REQUIRED_GROUPS`
## 4) 基本檢查
## 5) 基本檢查
1. `GET http://127.0.0.1:8000/healthz` 應為 200。
2. 前端按「前往 Keycloak 登入」應可成功導轉與回跳。
3. `GET /me` 登入後應有資料。
4. 非 admin 群組帳號打 `/admin/*` 應為 403。
## 5) 新模型驗收路徑
## 6) 新模型驗收路徑
1. 新增 Company、Site。
2. 新增 System、Role。
3. 對 Site 指派 Role。
4. 新增 User加入 Site。
5. 驗證 User 的角色是由 Site 推導,不是 direct assign。
## 6) API 白名單驗收
## 7) API 白名單驗收
1. 建立 `api_client`
2.`X-Client-Key` + `X-API-Key` 呼叫 `/internal/*`
3. 驗證未授權 key 會被拒絕。