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>
7.4 KiB
7.4 KiB
🚀 HR Portal 部署就緒總結
狀態: ✅ 準備完成,可立即部署 日期: 2026-02-09 版本: v1.0.0
📦 部署包資訊
構建產物
- 位置:
W:\DevOps-Workspace\hr-portal\frontend\dist\ - 大小: ~460 KB (未壓縮)
- 檔案:
index.html(770 bytes)assets/index-B6AIDaLe.css(22.40 KB)assets/index-C5znSMh-.js(440.49 KB)silent-check-sso.htmltest-login.html
部署包
- 檔案:
hr-portal-frontend-deploy.zip - 大小: 139 KB
- 位置:
W:\DevOps-Workspace\hr-portal\frontend\ - 包含: dist/, Dockerfile, docker-compose.yml
✅ 環境配置確認
Keycloak 配置
URL: https://auth.ease.taipei
Realm: porscheworld
Client ID: hr-portal-web
Client Type: OpenID Connect (公開客戶端)
後端 API
URL: https://hr-api.ease.taipei
健康檢查: /health
狀態: ✅ 運行中
API 文檔: /docs
前端配置 (.env)
VITE_API_BASE_URL=https://hr-api.ease.taipei
VITE_KEYCLOAK_URL=https://auth.ease.taipei
VITE_KEYCLOAK_REALM=porscheworld
VITE_KEYCLOAK_CLIENT_ID=hr-portal-web
部署目標
主機: 10.1.0.254 (Ubuntu Server)
用戶: user
路徑: /home/user/hr-portal/frontend/
網域: https://hr.ease.taipei
🎯 功能完成度
已完成功能 (95%)
UI 組件庫 (9個)
- Input - 文字輸入框
- Select - 下拉選單
- Textarea - 多行輸入
- Modal - 對話框
- Table - 資料表格
- Pagination - 分頁器
- Loading - 載入動畫
- EmptyState - 空狀態
- ConfirmDialog - 確認對話框
員工管理
- 員工列表 (搜尋、篩選、分頁)
- 員工詳情 (Tab 切換)
- 新增員工 (表單驗證)
- 編輯員工
- 密碼重設 (自動生成/手動)
- 離職處理 (確認流程)
- 自動創建帳號 (create_full)
- Keycloak SSO 帳號
- 郵件帳號
- NAS 網路硬碟
組織管理
- 事業部 CRUD
- 部門 CRUD
- 經理指派
- 動態員工篩選
資源管理
- 郵件帳號列表 (配額視覺化)
- 網路硬碟列表 (配額視覺化)
系統整合
- Keycloak SSO 登入
- Token 自動刷新
- API 錯誤處理
- CORS 配置
- 表單驗證 (Zod)
📋 部署步驟快速參考
🔥 最快速部署 (3 步驟)
1. 上傳 ZIP 包
使用 WinSCP:
本地: W:\DevOps-Workspace\hr-portal\frontend\hr-portal-frontend-deploy.zip
遠端: /home/user/hr-portal-frontend-deploy.zip
2. SSH 解壓並部署
cd /home/user
unzip -o hr-portal-frontend-deploy.zip -d hr-portal/frontend/
cd hr-portal/frontend
docker-compose down && docker-compose build && docker-compose up -d
3. 驗證
docker-compose ps
curl -k https://hr.ease.taipei
瀏覽器訪問: https://hr.ease.taipei
📚 部署文檔索引
核心文檔
- README.md - 專案總覽
- FEATURES_COMPLETE.md - 功能完成清單
部署文檔
- DEPLOY_NOW.md - 立即部署指南 ⭐
- QUICK_DEPLOY.md - 快速部署指令
- DEPLOYMENT.md - 完整部署手冊
- DEPLOY_CHECKLIST.md - 部署檢查清單
配置文檔
- KEYCLOAK_SETUP.md - Keycloak 配置指南
驗證工具
- verify-deployment.sh - 部署驗證腳本
🛠️ 部署工具
Windows 工具
- 部署包:
hr-portal-frontend-deploy.zip(139 KB) - 檔案傳輸: WinSCP (推薦) 或 FileZilla
- SSH 客戶端: PuTTY 或 Windows Terminal
Ubuntu 腳本
- 驗證腳本:
verify-deployment.sh# 上傳並執行 chmod +x verify-deployment.sh ./verify-deployment.sh
✅ 部署前檢查清單
環境檢查
- 後端 API 運行: https://hr-api.ease.taipei/health
- Keycloak 運行: https://auth.ease.taipei
- Keycloak Client
hr-portal-web已創建 - Ubuntu 主機可連接: 10.1.0.254
- Traefik 容器運行中
- traefik-public 網路存在
構建檢查
- 前端構建成功 (440.49 KB)
- TypeScript 編譯無錯誤
- 環境變數正確配置
- Keycloak Client ID:
hr-portal-web
檔案檢查
- Dockerfile 存在
- docker-compose.yml 存在
- dist/ 目錄完整
- 部署 ZIP 包已創建
🎯 部署後驗證清單
容器驗證
- 容器運行:
docker-compose ps - 無錯誤日誌:
docker-compose logs - 在 traefik-public 網路中
- Traefik 標籤正確
HTTP 驗證
- HTTP 200:
curl http://localhost:80 - HTTPS 200:
curl -k https://hr.ease.taipei - HTTPS 證書有效
- 可獲取 index.html
應用驗證
- 瀏覽器可訪問 https://hr.ease.taipei
- 重定向到 Keycloak 登入
- SSO 登入成功
- 顯示 HR Portal 首頁
- 右上角顯示用戶姓名
功能驗證
- 員工列表載入成功
- 搜尋功能正常
- 篩選功能正常
- 分頁功能正常
- 可點擊「新增員工」
- API 調用無 CORS 錯誤
核心功能測試
- 新增員工測試
- 填寫表單
- 勾選「自動創建帳號」
- 提交成功
- 檢查 Keycloak 用戶已創建
- 檢查郵件帳號已創建
- 檢查 NAS 硬碟已創建
📊 預期結果
成功指標
容器層
$ docker-compose ps
NAME STATUS
hr-portal-frontend Up
HTTP 層
$ curl -I http://localhost:80
HTTP/1.1 200 OK
$ curl -k -I https://hr.ease.taipei
HTTP/2 200
應用層
- ✅ 瀏覽器顯示 HR Portal 登入重定向
- ✅ Keycloak 登入頁面載入
- ✅ 登入後跳轉回 HR Portal
- ✅ 首頁載入成功
- ✅ 員工列表載入成功
🐛 常見問題快速參考
容器無法啟動
docker-compose logs hr-portal-frontend
docker-compose build --no-cache
docker-compose up -d
無法訪問網站
# 檢查 Traefik
docker ps | grep traefik
docker logs traefik | grep hr-portal
# 檢查網路
docker network inspect traefik-public | grep hr-portal
Keycloak 登入失敗
- 檢查 Client ID: 應為
hr-portal-web - 檢查 Redirect URIs: 應包含
https://hr.ease.taipei/* - 檢查 Web Origins: 應包含
https://hr.ease.taipei
API CORS 錯誤
- 確認後端 CORS 配置包含
https://hr.ease.taipei - 檢查後端日誌
🎊 部署成功後
立即測試
- 登入測試: 使用測試帳號登入
- 列表測試: 查看員工列表
- 搜尋測試: 測試搜尋功能
- 新增測試: 創建測試員工 (不勾選 create_full)
- 自動創建測試: 創建員工並勾選 create_full
後續優化 (建議順序)
- Toast 通知 (替換 alert)
- 審計日誌 UI
- 權限管理 UI
- 批量匯入功能
- 報表功能
📞 支持資源
技術文檔
- API 文檔: https://hr-api.ease.taipei/docs
- Keycloak Admin: https://auth.ease.taipei
聯絡方式
- 技術支持: porsche.chen@gmail.com
🚀 準備就緒!
所有準備工作已完成,可以立即開始部署!
推薦部署方式: 使用 DEPLOY_NOW.md 方式 1 (ZIP 部署包),只需 3 個步驟即可完成。
部署文檔: frontend/DEPLOY_NOW.md
Good Luck! 🎉