Files
member-platform/docs/LOCAL_DEV_RUNBOOK.md

2.2 KiB
Raw Blame History

Local Dev RunbookKeycloak

1) 先重建 DB schema本次改版必做

cd backend
psql "$DATABASE_URL" -f scripts/init_schema.sql

如果你是 macOS 本機沒裝 psql,改用:

cd backend
./.venv/bin/python - <<'PY'
import psycopg
from pathlib import Path
sql = Path('scripts/migrate_provider_columns.sql').read_text()
with psycopg.connect(
    host='127.0.0.1',
    port=54321,
    dbname='member.ose.tw',
    user='member_ose',
    password='你的DB密碼'
) as conn:
    with conn.cursor() as cur:
        cur.execute(sql)
print('provider column migration done')
PY

2) 啟動後端

cd backend
./scripts/start_dev.sh

3) 啟動前端

cd frontend
npm install
npm run dev

4) 必要環境變數(backend/.env.development

  • KEYCLOAK_BASE_URL
  • KEYCLOAK_REALM
  • KEYCLOAK_CLIENT_ID
  • KEYCLOAK_CLIENT_SECRET
  • KEYCLOAK_ADMIN_CLIENT_ID
  • KEYCLOAK_ADMIN_CLIENT_SECRET
  • ADMIN_REQUIRED_GROUPS

5) 基本檢查

  1. GET http://127.0.0.1:8000/healthz 應為 200。
  2. 前端按「前往 Keycloak 登入」應可成功導轉與回跳。
  3. GET /me 登入後應有資料。
  4. 非 admin 群組帳號打 /admin/* 應為 403。
  5. POST /admin/sync/from-provider?force=true 可手動觸發全量補齊同步。
  6. 列表 API 不會自動同步 IdP避免高負載需手動按同步按鈕或呼叫同步 API。

6) 新模型驗收路徑

  1. 新增 Company、Site。
  2. 在 Keycloak 建立 SystemClient與 RoleClient Role
  3. 在後台按「同步 Keycloak」確認 DB 補齊 System/Role。
  4. 對 Site 指派 Role。
  5. 新增 User加入 Site。
  6. 驗證 User 的角色是由 Site 推導,不是 direct assign。

7) API 白名單驗收

  1. 建立 api_client
  2. X-Client-Key + X-API-Key 呼叫 /internal/*
  3. 驗證未授權 key 會被拒絕。