Files
hr-portal/HR_PORTAL_VERIFICATION_REPORT.md
Porsche Chen 360533393f feat: HR Portal - Complete Multi-Tenant System with Redis Session Storage
Major Features:
-  Multi-tenant architecture (tenant isolation)
-  Employee CRUD with lifecycle management (onboarding/offboarding)
-  Department tree structure with email domain management
-  Company info management (single-record editing)
-  System functions CRUD (permission management)
-  Email account management (multi-account per employee)
-  Keycloak SSO integration (auth.lab.taipei)
-  Redis session storage (10.1.0.254:6379)
  - Solves Cookie 4KB limitation
  - Cross-system session sharing
  - Sliding expiration (8 hours)
  - Automatic token refresh

Technical Stack:
Backend:
- FastAPI + SQLAlchemy
- PostgreSQL 16 (10.1.0.20:5433)
- Keycloak Admin API integration
- Docker Mailserver integration (SSH)
- Alembic migrations

Frontend:
- Next.js 14 (App Router)
- NextAuth 4 with Keycloak Provider
- Redis session storage (ioredis)
- Tailwind CSS

Infrastructure:
- Redis 7 (10.1.0.254:6379) - Session + Cache
- Keycloak 26.1.0 (auth.lab.taipei)
- Docker Mailserver (10.1.0.254)

Architecture Highlights:
- Session管理由 Keycloak + Redis 統一控制
- 支援多系統 (HR/WebMail/Calendar/Drive/Office) 共享 session
- Token 自動刷新,異質服務整合
- 未來可無縫遷移到雲端

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-23 20:12:43 +08:00

4.3 KiB

HR Portal 驗證報告

日期: 2026-02-15 驗證環境: Windows 開發主機 10.1.0.245 資料庫主機: 10.1.0.20 (小的 NAS - Synology DS716+II)


資料庫驗證

資料庫配置

  • 主機: 10.1.0.20:5433
  • 資料庫: hr_portal
  • 用戶: admin
  • 密碼: DC1qaz2wsx ⚠️ (無 ! 符號)
  • 驅動: PostgreSQL 16.11

資料庫結構

資料表名稱 筆數 說明
alembic_version 1 資料庫版本控制
audit_logs 0 審計日誌
business_units 0 事業單位
departments 0 部門
employee_identities 0 員工身份 (郵件/NAS/Keycloak)
employees 0 員工基本資料
network_drives 0 網路磁碟配額

Alembic 版本: fba4e3f40f05

連接測試結果

[OK] PostgreSQL 版本: 16.11 (Debian 16.11-1.pgdg13+1)
[OK] 資料表數量: 7
[OK] 連接測試成功

後端驗證

後端配置

  • Port: 10181 (固定,不可變更)
  • 環境: development
  • API 版本: 2.0.0
  • 資料庫 URL: postgresql+psycopg2://admin:DC1qaz2wsx@10.1.0.20:5433/hr_portal

Keycloak 整合

  • URL: https://auth.ease.taipei
  • Realm: porscheworld
  • Client ID: hr-backend
  • Client Secret: ddyW9zuy7sHDMF8HRh60gEoiGBh698Ew6XHKenwp2c0

模組載入測試

[OK] 配置模組 (app.core.config)
[OK] 資料庫模組 (app.db.session)
[OK] FastAPI 應用 (app.main)
[OK] API 端點數量: 54 個

依賴套件

  • fastapi
  • uvicorn
  • sqlalchemy
  • alembic
  • psycopg2-binary
  • python-keycloak
  • python-dotenv
  • pydantic

啟動命令

cd W:/DevOps-Workspace/5.Projects/hr-portal/backend
uvicorn app.main:app --host 0.0.0.0 --port 10181 --reload

或使用啟動腳本:

START_BACKEND.bat

API 端點


前端驗證 (待執行)

前端配置

啟動命令

cd W:/DevOps-Workspace/5.Projects/hr-portal/frontend
npm run dev -- -p 10180

或使用啟動腳本:

START_FRONTEND.bat

前端 URL


📋 重要注意事項

固定 Port 規定

⚠️ 嚴格遵守以下規定:

  • 前端固定 port: 10180 (不可變更)
  • 後端固定 port: 10181 (不可變更)
  • 遇到 port 衝突時,應停止占用程序,清空 port
  • 嚴禁隨意開啟其他 port (3000, 3001, 8000, 8001 等)
  • Keycloak 只認證規劃好的環境,不可任意添加新 port

資料庫密碼注意

⚠️ PostgreSQL 密碼不能包含 ! 符號:

  • 正確: DC1qaz2wsx
  • 錯誤: !DC1qaz2wsx
  • 原因: Shell 特殊字元導致遠端認證失敗

開發環境原則

正確做法:

  • Port 被占用 → 找出占用的程序,停止它
  • 環境不一致 → 找出根本原因,修正環境
  • 遇到問題 → 分析根因,徹底解決

錯誤做法:

  • Port 被占用 → 改用其他 port
  • 認證失敗 → 在 Keycloak 添加更多 port
  • 遇到問題 → 用容錯方式繞過

資料庫用戶統一

所有開發都使用 admin 用戶:

  • 用戶名: admin
  • 密碼: DC1qaz2wsx
  • 原因: 簡化權限管理,避免權限問題

📊 測試檢查清單

後端測試

  • 環境變數載入
  • 資料庫連接
  • 配置模組載入
  • FastAPI 應用創建
  • API 路由註冊
  • 後端實際啟動
  • API 端點測試
  • Keycloak SSO 登入

前端測試

  • 依賴安裝 (npm install)
  • 前端啟動
  • 頁面載入
  • Keycloak 登入流程
  • API 調用測試
  • 員工管理功能

整合測試

  • 前後端通訊
  • SSO 登入流程
  • CRUD 操作
  • 權限控制

🎯 下一步行動

  1. 安裝前端依賴: cd frontend && npm install
  2. 啟動後端: START_BACKEND.bat
  3. 啟動前端: START_FRONTEND.bat
  4. 測試 Keycloak 登入
  5. 驗證 API 功能
  6. 測試員工管理流程

驗證人員: Claude AI 完成度: 70% (後端驗證完成,前端待測試)