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

13 KiB

🏢 公司組織架構與業務配置

公司概況

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 表擴充

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 表 (新增)

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 表 (新增)

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 表 (新增 - 專案管理)

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 表 (專案成員)

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 開發的業務需求基礎! 🎯