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>
544 lines
13 KiB
Markdown
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 開發的業務需求基礎!** 🎯
|