2.6 KiB
2.6 KiB
Local Dev Runbook(Keycloak)
1) 先重建 DB schema(本次改版必做)
cd backend
psql "$DATABASE_URL" -f scripts/init_schema.sql
- DB schema 檔案:backend/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
- 欄位改名 migration:backend/scripts/migrate_provider_columns.sql
2) 啟動後端
cd backend
./scripts/start_dev.sh
- 專案路徑:backend
- 啟動腳本:backend/scripts/start_dev.sh
3) 啟動前端
cd frontend
npm install
npm run dev
- 專案路徑:frontend
4) 必要環境變數(backend/.env.development)
KEYCLOAK_BASE_URLKEYCLOAK_REALMKEYCLOAK_CLIENT_IDKEYCLOAK_CLIENT_SECRETKEYCLOAK_ADMIN_CLIENT_IDKEYCLOAK_ADMIN_CLIENT_SECRETMEMBER_REQUIRED_REALM_ROLESADMIN_REQUIRED_REALM_ROLESCACHE_BACKEND(memory或redis)CACHE_REDIS_URLCACHE_PREFIXCACHE_DEFAULT_TTL_SECONDS
Cache 切換範例
- 本地(預設):
CACHE_BACKEND=memory
- 切 Redis:
CACHE_BACKEND=redisCACHE_REDIS_URL=redis://127.0.0.1:6379/0
調整後重啟後端生效。
5) 基本檢查
GET http://127.0.0.1:8000/healthz應為 200。- 前端按「前往 Keycloak 登入」應可成功導轉與回跳。
GET /me登入後應有資料。- 非 admin 群組帳號打
/admin/*應為 403。 POST /admin/sync/from-provider?force=true可手動觸發全量補齊同步。- 列表 API 不會自動同步 IdP(避免高負載),需手動按同步按鈕或呼叫同步 API。
6) 新模型驗收路徑
- 新增 Company、Site。
- 在 Keycloak 建立 System(Client)與 Role(Client Role)。
- 在後台按「同步 Keycloak」,確認 DB 補齊 System/Role。
- 對 Site 指派 Role。
- 新增 User,加入 Site。
- 驗證 User 的角色是由 Site 推導,不是 direct assign。
7) API 白名單驗收
- 建立
api_client。 - 用
X-Client-Key+X-API-Key呼叫/internal/*。 - 驗證未授權 key 會被拒絕。