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>
4.3 KiB
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 端點
- API 文件: http://localhost:10181/docs
- ReDoc: http://localhost:10181/redoc
- 健康檢查: http://localhost:10181/health
⏳ 前端驗證 (待執行)
前端配置
- Port: 10180 (固定,不可變更)
- API URL: http://localhost:10181
- Keycloak URL: https://auth.ease.taipei
- Realm: porscheworld
- Client ID: hr-portal-web
啟動命令
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 操作
- 權限控制
🎯 下一步行動
- 安裝前端依賴:
cd frontend && npm install - 啟動後端:
START_BACKEND.bat - 啟動前端:
START_FRONTEND.bat - 測試 Keycloak 登入
- 驗證 API 功能
- 測試員工管理流程
驗證人員: Claude AI 完成度: 70% (後端驗證完成,前端待測試)