Files
hr-portal/BUSINESS-STRUCTURE.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

544 lines
13 KiB
Markdown

# 🏢 公司組織架構與業務配置
## 公司概況
**Porsche World** - 智慧能源與碳權管理解決方案提供商
---
## 🎯 業務部門
### 1. 玄鐵風能授權服務事業部
**Business Unit**: Wind Energy Licensing
#### 業務內容
- 風力發電技術授權
- 風能系統設計與諮詢
- 風場評估與規劃
- 技術培訓服務
#### 組織架構
```
玄鐵風能授權服務事業部
├── 技術授權部
│ ├── 授權商務組
│ └── 技術支援組
├── 風場評估部
│ ├── 資源評估組
│ └── 場域規劃組
└── 客戶服務部
├── 技術培訓組
└── 售後服務組
```
#### 主要客戶類型
- 風電開發商
- 能源公司
- 政府機構
- 研究機構
---
### 2. 國際碳權申請服務事業部
**Business Unit**: Carbon Credit Services
#### 業務內容
- 碳權申請諮詢
- 碳足跡盤查
- 碳減排專案開發
- 碳權交易媒合
- 國際碳權認證 (CDM, VCS, Gold Standard)
#### 組織架構
```
國際碳權申請服務事業部
├── 碳權申請部
│ ├── 專案開發組
│ └── 文件審查組
├── 碳盤查部
│ ├── 盤查執行組
│ └── 數據分析組
└── 碳交易部
├── 市場分析組
└── 交易媒合組
```
#### 主要服務
- ISO 14064 碳盤查
- PAS 2060 碳中和認證
- 碳權專案開發
- 碳權買賣仲介
---
### 3. 智能研發服務事業部
**Business Unit**: Smart R&D Services
#### 業務內容
- AI/ML 解決方案開發
- IoT 智能監控系統
- 能源管理系統 (EMS)
- 數據分析平台
- 系統整合服務
#### 組織架構
```
智能研發服務事業部
├── 軟體研發部
│ ├── 前端開發組
│ ├── 後端開發組
│ └── AI/ML 組
├── 硬體研發部
│ ├── IoT 設備組
│ └── 系統整合組
└── 產品管理部
├── 產品企劃組
└── 專案管理組
```
#### 技術領域
- Python, FastAPI, React
- TensorFlow, PyTorch
- LoRaWAN, MQTT
- Time-series Database
- Edge Computing
---
## 🏗️ 公司組織架構
### 完整組織圖
```
Porsche World
├── 執行長室
│ └── 特助
├── 管理部門
│ ├── 人力資源部
│ │ ├── 招募組
│ │ ├── 訓練發展組
│ │ └── 薪酬福利組
│ ├── 財務部
│ │ ├── 會計組
│ │ └── 財務分析組
│ ├── 行政部
│ │ ├── 總務組
│ │ └── 採購組
│ └── 資訊部 (IT)
│ ├── 系統維運組
│ ├── 資安組
│ └── 開發支援組
├── 業務部門
│ ├── 玄鐵風能授權服務事業部
│ │ ├── 技術授權部
│ │ ├── 風場評估部
│ │ └── 客戶服務部
│ │
│ ├── 國際碳權申請服務事業部
│ │ ├── 碳權申請部
│ │ ├── 碳盤查部
│ │ └── 碳交易部
│ │
│ └── 智能研發服務事業部
│ ├── 軟體研發部
│ ├── 硬體研發部
│ └── 產品管理部
└── 營運支援
├── 法務部
├── 品質管理部
└── 業務發展部
```
---
## 👥 職位體系
### 管理職
- **C-Level**: CEO, CTO, CFO, COO
- **VP**: 副總經理
- **Director**: 部門總監
- **Manager**: 經理
- **Supervisor**: 主管
### 專業職
- **Principal**: 首席專家
- **Senior**: 資深專員
- **Staff**: 專員
- **Associate**: 助理專員
- **Junior**: 初階專員
### 技術職 (研發部門)
- **Architect**: 架構師
- **Tech Lead**: 技術主管
- **Senior Engineer**: 資深工程師
- **Engineer**: 工程師
- **Junior Engineer**: 初階工程師
---
## 📧 電子郵件命名規則
### 網域配置
- **porscheworld.tw**: 對外官方信箱
- **ease.taipei**: 業務與專案使用
- **lab.taipei**: 技術研發使用
### 部門郵箱
#### 管理部門 (@porscheworld.tw)
```
admin@porscheworld.tw - 管理部
hr@porscheworld.tw - 人資部
finance@porscheworld.tw - 財務部
it@porscheworld.tw - 資訊部
legal@porscheworld.tw - 法務部
```
#### 玄鐵風能授權服務 (@ease.taipei)
```
wind@ease.taipei - 部門總信箱
wind-licensing@ease.taipei - 技術授權部
wind-assessment@ease.taipei - 風場評估部
wind-service@ease.taipei - 客戶服務部
```
#### 國際碳權申請服務 (@ease.taipei)
```
carbon@ease.taipei - 部門總信箱
carbon-apply@ease.taipei - 碳權申請部
carbon-audit@ease.taipei - 碳盤查部
carbon-trade@ease.taipei - 碳交易部
```
#### 智能研發服務 (@lab.taipei)
```
dev@lab.taipei - 研發部總信箱
software@lab.taipei - 軟體研發部
hardware@lab.taipei - 硬體研發部
product@lab.taipei - 產品管理部
git@lab.taipei - Gitea 通知
ci@lab.taipei - CI/CD 通知
```
### 個人郵箱規則
```
格式: 名.姓@網域
範例:
john.doe@ease.taipei - 業務人員
jane.smith@lab.taipei - 研發人員
michael.chen@porscheworld.tw - 管理人員
```
---
## 💾 網路硬碟配置
### 部門共享空間
#### 玄鐵風能授權服務 (NAS)
```
/volume1/departments/wind-energy/
├── /projects/ - 專案資料
├── /technical-docs/ - 技術文件
├── /contracts/ - 合約文件
└── /training-materials/ - 培訓教材
```
#### 國際碳權申請服務 (NAS)
```
/volume1/departments/carbon-credit/
├── /applications/ - 申請文件
├── /audits/ - 盤查報告
├── /certifications/ - 認證文件
└── /trading-records/ - 交易記錄
```
#### 智能研發服務 (NAS)
```
/volume1/departments/smart-rd/
├── /source-code/ - 原始碼 (輔助備份)
├── /documentation/ - 技術文件
├── /design-files/ - 設計檔案
└── /test-data/ - 測試資料
```
### 個人空間配額
| 職級 | 配額 | 說明 |
|------|------|------|
| C-Level | 50 GB | 高階主管 |
| VP/Director | 30 GB | 中階主管 |
| Manager | 20 GB | 經理級 |
| 一般員工 | 10 GB | 專員、工程師 |
| 約聘/臨時 | 5 GB | 約聘人員 |
---
## 🔐 系統權限配置
### 基本權限 (所有員工)
- ✅ Keycloak SSO 帳號
- ✅ 電子郵件
- ✅ 網路硬碟 (個人空間)
- ✅ HR Portal (個人資訊)
- ✅ Webmail 訪問
### 部門權限
#### 玄鐵風能授權服務
- ✅ 專案管理系統
- ✅ 客戶關係管理 (CRM)
- ✅ 文件管理系統
- ✅ 部門共享硬碟
#### 國際碳權申請服務
- ✅ 碳權管理平台
- ✅ 盤查數據系統
- ✅ 認證文件庫
- ✅ 部門共享硬碟
#### 智能研發服務
- ✅ Gitea (代碼管理)
- ✅ Drone CI/CD
- ✅ Portainer (容器管理)
- ✅ 開發工具授權
- ✅ 部門共享硬碟
### 管理權限
#### 人資部
- ✅ HR Portal (管理端)
- ✅ 薪資系統
- ✅ 考勤系統
- ✅ 所有員工資料
#### 資訊部
- ✅ Keycloak 管理
- ✅ Traefik 管理
- ✅ 伺服器管理
- ✅ 所有系統管理權限
#### 財務部
- ✅ ERP 系統
- ✅ 財務報表系統
- ✅ 發票系統
---
## 📊 HR Portal 資料庫擴充
### 新增欄位設計
#### employees 表擴充
```sql
ALTER TABLE employees ADD COLUMN IF NOT EXISTS
business_unit VARCHAR(50), -- 事業部: wind-energy, carbon-credit, smart-rd
division VARCHAR(100), -- 部門: 技術授權部, 軟體研發部 等
team VARCHAR(100), -- 組別: 授權商務組, 前端開發組 等
job_level VARCHAR(20), -- 職級: C-Level, VP, Director, Manager 等
employee_type VARCHAR(20); -- 員工類型: full-time, part-time, contractor, intern
-- 索引
CREATE INDEX idx_employees_business_unit ON employees(business_unit);
CREATE INDEX idx_employees_division ON employees(division);
```
#### business_units 表 (新增)
```sql
CREATE TABLE business_units (
id SERIAL PRIMARY KEY,
code VARCHAR(50) UNIQUE NOT NULL,
name VARCHAR(100) NOT NULL,
name_en VARCHAR(100),
description TEXT,
manager_id INTEGER REFERENCES employees(id),
email_domain VARCHAR(50), -- 主要使用的郵件網域
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 初始資料
INSERT INTO business_units (code, name, name_en, email_domain) VALUES
('wind-energy', '玄鐵風能授權服務事業部', 'Wind Energy Licensing', 'ease.taipei'),
('carbon-credit', '國際碳權申請服務事業部', 'Carbon Credit Services', 'ease.taipei'),
('smart-rd', '智能研發服務事業部', 'Smart R&D Services', 'lab.taipei'),
('management', '管理部門', 'Management', 'porscheworld.tw');
```
#### divisions 表 (新增)
```sql
CREATE TABLE divisions (
id SERIAL PRIMARY KEY,
business_unit_id INTEGER REFERENCES business_units(id),
code VARCHAR(50) UNIQUE NOT NULL,
name VARCHAR(100) NOT NULL,
name_en VARCHAR(100),
manager_id INTEGER REFERENCES employees(id),
email VARCHAR(100), -- 部門信箱
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 範例資料
INSERT INTO divisions (business_unit_id, code, name, name_en, email) VALUES
-- 玄鐵風能
(1, 'wind-licensing', '技術授權部', 'Technical Licensing', 'wind-licensing@ease.taipei'),
(1, 'wind-assessment', '風場評估部', 'Wind Assessment', 'wind-assessment@ease.taipei'),
(1, 'wind-service', '客戶服務部', 'Customer Service', 'wind-service@ease.taipei'),
-- 國際碳權
(2, 'carbon-apply', '碳權申請部', 'Carbon Application', 'carbon-apply@ease.taipei'),
(2, 'carbon-audit', '碳盤查部', 'Carbon Audit', 'carbon-audit@ease.taipei'),
(2, 'carbon-trade', '碳交易部', 'Carbon Trading', 'carbon-trade@ease.taipei'),
-- 智能研發
(3, 'software-dev', '軟體研發部', 'Software Development', 'software@lab.taipei'),
(3, 'hardware-dev', '硬體研發部', 'Hardware Development', 'hardware@lab.taipei'),
(3, 'product-mgmt', '產品管理部', 'Product Management', 'product@lab.taipei');
```
#### projects 表 (新增 - 專案管理)
```sql
CREATE TABLE projects (
id SERIAL PRIMARY KEY,
business_unit_id INTEGER REFERENCES business_units(id),
project_code VARCHAR(50) UNIQUE NOT NULL,
project_name VARCHAR(200) NOT NULL,
description TEXT,
client_name VARCHAR(200),
-- 專案狀態
status VARCHAR(20) DEFAULT 'planning', -- planning, active, on-hold, completed, cancelled
-- 專案經理與團隊
project_manager_id INTEGER REFERENCES employees(id),
-- 時間
start_date DATE,
end_date DATE,
-- 預算 (可選)
budget_amount DECIMAL(15,2),
budget_currency VARCHAR(10) DEFAULT 'TWD',
-- 專案空間
nas_path VARCHAR(500), -- NAS 專案資料夾路徑
git_repo VARCHAR(200), -- Gitea repository
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX idx_projects_business_unit ON projects(business_unit_id);
CREATE INDEX idx_projects_status ON projects(status);
```
#### project_members 表 (專案成員)
```sql
CREATE TABLE project_members (
id SERIAL PRIMARY KEY,
project_id INTEGER REFERENCES projects(id) ON DELETE CASCADE,
employee_id INTEGER REFERENCES employees(id) ON DELETE CASCADE,
role VARCHAR(50), -- project-manager, developer, consultant, support
allocation_percentage INTEGER DEFAULT 100, -- 投入比例 0-100%
joined_date DATE DEFAULT CURRENT_DATE,
left_date DATE,
UNIQUE(project_id, employee_id)
);
CREATE INDEX idx_project_members_project ON project_members(project_id);
CREATE INDEX idx_project_members_employee ON project_members(employee_id);
```
---
## 🎨 HR Portal 功能擴充
### 新增管理功能
#### 1. 組織架構管理
- 事業部管理
- 部門管理
- 團隊管理
- 組織圖視覺化
#### 2. 專案管理
- 專案建立與追蹤
- 專案成員分配
- 專案資源配置
- 專案儀表板
#### 3. 權限模板
- 依事業部設定預設權限
- 依職級設定資源配額
- 批量權限調整
#### 4. 報表功能
- 部門人力統計
- 專案人力分布
- 資源使用報表
- 離職率分析
---
## 📋 入職流程範例
### 案例: 智能研發服務事業部 - 前端工程師
```
1. HR 在系統建立員工
- 姓名: Alice Wang
- 事業部: 智能研發服務
- 部門: 軟體研發部
- 團隊: 前端開發組
- 職級: Engineer
- 郵箱: alice.wang@lab.taipei
2. 系統自動執行
✓ Keycloak 創建帳號: alice.wang
✓ 郵箱: alice.wang@lab.taipei (1GB)
✓ 個人硬碟: 10GB
✓ 授予權限:
- Gitea (developer role)
- Drone CI (view access)
- 軟體研發部共享硬碟 (讀寫)
- 智能研發服務共享硬碟 (唯讀)
3. 發送歡迎郵件
- 登入資訊
- 部門介紹
- 相關系統連結
- IT 支援聯絡方式
```
---
## 🔄 調動/轉調流程
### 案例: 從碳權申請部 → 碳交易部
```
系統處理:
1. 更新員工部門資訊
2. 調整郵件群組
3. 移除碳權申請部共享硬碟權限
4. 授予碳交易部共享硬碟權限
5. 保留個人資料與郵箱
6. 記錄異動日誌
```
---
**這份文件將作為 HR Portal 開發的業務需求基礎!** 🎯