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>
This commit is contained in:
2026-02-23 20:12:43 +08:00
commit 360533393f
386 changed files with 70353 additions and 0 deletions

25
update_function_icons.sql Normal file
View File

@@ -0,0 +1,25 @@
-- 更新系統功能 Emoji 圖示
-- 執行日期: 2026-02-23
-- 系統管理功能 (is_mana=true)
UPDATE system_functions SET function_icon = '⚙️' WHERE id = 10; -- system_managements (系統管理後台)
UPDATE system_functions SET function_icon = '🔧' WHERE id = 11; -- system_settings (系統參數設定)
UPDATE system_functions SET function_icon = '📋' WHERE id = 12; -- system_codes (系統代碼設定)
UPDATE system_functions SET function_icon = '🔔' WHERE id = 13; -- system_notifications (系統通知設定)
UPDATE system_functions SET function_icon = '📊' WHERE id = 14; -- system_logs (系統稽核查詢)
UPDATE system_functions SET function_icon = '🎯' WHERE id = 15; -- system_functions (系統功能設定)
UPDATE system_functions SET function_icon = '🏢' WHERE id = 16; -- init_tenants (公司初始資料建置)
-- 一般租戶功能 (is_mana=false)
UPDATE system_functions SET function_icon = '📊' WHERE id = 23; -- dashboard (系統首頁)
UPDATE system_functions SET function_icon = '🏢' WHERE id = 17; -- tenant (公司資料維護)
UPDATE system_functions SET function_icon = '🏛️' WHERE id = 18; -- tenant_departments (部門資料維護)
UPDATE system_functions SET function_icon = '👥' WHERE id = 19; -- tenant_user_roles (角色設定作業)
UPDATE system_functions SET function_icon = '🔐' WHERE id = 20; -- tenant_role_rights (角色權限設定作業)
UPDATE system_functions SET function_icon = '👤' WHERE id = 21; -- tenant_emp_resumes (人員檔歷維護)
UPDATE system_functions SET function_icon = '⚙️' WHERE id = 22; -- tenant_emp_settings (人員任用設定作業)
-- 驗證更新結果
SELECT id, code, name, function_icon
FROM system_functions
ORDER BY id;