Files
hr-performance-system/docs/SDD_系統設計文件_v1.0.md
donald 07b1652de4 Fix dependencies and add SDD v1.0
Changes:
- Fix Python dependency conflicts in requirements.txt
- Update to use compatible version ranges
- Add fix_dependencies.bat for easy dependency repair
- Create comprehensive DEPENDENCY_FIX.md guide
- Add complete System Design Document (SDD) v1.0

SDD v1.0 includes:
 System architecture with dual backend
 Complete database design (31 tables)
 API specifications
 Security design
 Deployment architecture
 Performance optimization strategies

Fixed Issues:
🐛 Flask/cryptography version conflicts
🐛 pip dependency resolver warnings

Documentation:
📚 DEPENDENCY_FIX.md - Dependency troubleshooting
📚 SDD_系統設計文件_v1.0.md - Complete system design

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 00:51:14 +08:00

867 lines
26 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# HR 績效評核系統 - 系統設計文件 (SDD)
**System Design Document**
---
## 文件資訊
| 項目 | 內容 |
|------|------|
| **文件名稱** | HR 績效評核系統 - 系統設計文件 (SDD) |
| **文件版本** | v1.0 |
| **建立日期** | 2025-12-03 |
| **最後更新** | 2025-12-03 |
| **文件狀態** | ✅ 已完成 |
| **作者** | Donald |
| **專案名稱** | HR Performance Management System |
| **專案代碼** | HRPMS-2025 |
---
## 版本歷史
| 版本 | 日期 | 作者 | 變更說明 |
|------|------|------|----------|
| v1.0 | 2025-12-03 | Donald | 初始版本,完整系統設計 |
---
## 目錄
1. [系統概述](#1-系統概述)
2. [系統架構](#2-系統架構)
3. [技術棧](#3-技術棧)
4. [資料庫設計](#4-資料庫設計)
5. [API 設計](#5-api-設計)
6. [前端設計](#6-前端設計)
7. [安全設計](#7-安全設計)
8. [部署架構](#8-部署架構)
9. [效能優化](#9-效能優化)
10. [附錄](#10-附錄)
---
## 1. 系統概述
### 1.1 專案背景
HR 績效評核系統是一個基於「四卡循環」理念的現代化績效管理平台,旨在協助企業建立完整的績效管理生命週期,從角色定義、能力評估、績效考核到個人發展計畫。
### 1.2 核心理念
```
角色卡 → 能力卡 → 績效卡 → 成長卡
↑ ↓
└──────────── 回饋循環 ◀────────┘
```
### 1.3 系統目標
- ✅ 建立標準化的績效評核流程
- ✅ 整合 AI 輔助功能提升效率
- ✅ 支援多語系(繁中、英文)
- ✅ 響應式設計支援多裝置
- ✅ 完整的資料追蹤與版本管理
### 1.4 技術特色
- **雙後端架構**: Python Flask + Node.js Express
- **AI 整合**: 支援 4 種 LLMGemini, DeepSeek, OpenAI, Claude
- **資料庫**: MySQL 8.0+ (31 張資料表)
- **前端**: React + 響應式設計
- **部署**: 容器化支援 (Docker)
---
## 2. 系統架構
### 2.1 整體架構圖
```
┌─────────────────────────────────────────────────────────────────┐
│ 使用者介面層 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Web Browser │ │ Mobile │ │ Tablet │ │
│ │ (React) │ │ (Responsive)│ │ (Responsive) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└───────────────────────────┬─────────────────────────────────────┘
│ HTTPS
┌───────────────────────────┴─────────────────────────────────────┐
│ API Gateway │
│ (CORS, 認證, 負載平衡) │
└───────────┬──────────────────────────────┬──────────────────────┘
│ │
┌───────────▼─────────────┐ ┌──────────▼───────────────────────┐
│ Flask Backend │ │ Node.js Backend │
│ (Python 3.8+) │ │ (Express.js) │
│ Port: 5002 │ │ Port: 3000 │
│ │ │ │
│ ┌──────────────────┐ │ │ ┌──────────────────┐ │
│ │ LLM Service │ │ │ │ LLM Service │ │
│ │ - Gemini │ │ │ │ - Gemini │ │
│ │ - DeepSeek │ │ │ │ - DeepSeek │ │
│ │ - OpenAI │ │ │ │ - OpenAI │ │
│ │ - Claude │ │ │ │ - Claude │ │
│ └──────────────────┘ │ │ └──────────────────┘ │
│ │ │ │
│ ┌──────────────────┐ │ │ ┌──────────────────┐ │
│ │ Database Layer │ │ │ │ Database Layer │ │
│ │ (PyMySQL) │ │ │ │ (mysql2) │ │
│ └──────────────────┘ │ │ └──────────────────┘ │
└─────────────┬───────────┘ └────────────┬─────────────────────┘
│ │
└──────────────┬───────────────┘
┌────────────────────────────▼─────────────────────────────────────┐
│ 資料庫層 │
│ MySQL 8.0+ │
│ Database: db_A102 │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 基礎資料 │ │ 職能字典 │ │ 四卡系統 │ │
│ │ (5 tables) │ │ (3 tables) │ │ (19 tables) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ 系統支援 │ │ 審批流程 │ │
│ │ (5 tables) │ │ (1 table) │ │
│ └──────────────┘ └──────────────┘ │
└──────────────────────────────────────────────────────────────────┘
┌────────────────────────────▼─────────────────────────────────────┐
│ 外部服務層 │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ LLM APIs │ │ SMTP Server │ │ File Storage│ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└──────────────────────────────────────────────────────────────────┘
```
### 2.2 系統分層
| 層級 | 職責 | 技術 |
|------|------|------|
| **呈現層** | 使用者介面、使用者體驗 | React, HTML5, CSS3 |
| **應用層** | 業務邏輯、API 端點 | Flask (Python), Express (Node.js) |
| **服務層** | LLM 整合、外部服務 | axios, requests |
| **資料層** | 資料持久化、查詢 | MySQL 8.0, PyMySQL, mysql2 |
| **基礎設施層** | 伺服器、網路、安全 | Nginx, Docker, SSL |
### 2.3 資料流向
```
使用者操作
前端驗證
API 請求 (HTTPS)
後端驗證 (JWT)
業務邏輯處理
資料庫操作 (Transaction)
回應格式化
前端更新 UI
```
---
## 3. 技術棧
### 3.1 後端技術
#### Python Flask 版本
| 技術 | 版本 | 用途 |
|------|------|------|
| **Python** | 3.8+ | 程式語言 |
| **Flask** | 2.3.0+ | Web 框架 |
| **Flask-CORS** | 4.0.0+ | CORS 支援 |
| **PyMySQL** | 1.1.0+ | MySQL 連接器 |
| **requests** | 2.31.0+ | HTTP 客戶端 |
| **python-dotenv** | 1.0.0+ | 環境變數管理 |
| **cryptography** | 41.0.0+ | 加密功能 |
#### Node.js Express 版本
| 技術 | 版本 | 用途 |
|------|------|------|
| **Node.js** | 16.0.0+ | 執行環境 |
| **Express** | 4.18.2+ | Web 框架 |
| **cors** | 2.8.5+ | CORS 支援 |
| **mysql2** | 3.6.5+ | MySQL 連接器 |
| **axios** | 1.6.2+ | HTTP 客戶端 |
| **dotenv** | 16.3.1+ | 環境變數管理 |
| **helmet** | 7.1.0+ | 安全標頭 |
### 3.2 前端技術
| 技術 | 版本 | 用途 |
|------|------|------|
| **React** | 18.0+ | UI 框架 |
| **CSS3** | - | 樣式設計 |
| **Axios** | 1.6+ | HTTP 請求 |
| **React Router** | 6.0+ | 路由管理 |
### 3.3 資料庫
| 技術 | 版本 | 用途 |
|------|------|------|
| **MySQL** | 8.0+ | 關聯式資料庫 |
| **字符集** | utf8mb4_unicode_ci | 多語系支援 |
| **引擎** | InnoDB | 交易支援 |
### 3.4 AI / LLM 整合
| 服務 | API | 用途 |
|------|-----|------|
| **Google Gemini** | generativelanguage.googleapis.com | 內容生成 |
| **DeepSeek** | api.deepseek.com | 中文優化 |
| **OpenAI** | api.openai.com | GPT-4 |
| **Claude** | api.anthropic.com | 長文本處理 |
### 3.5 開發工具
| 工具 | 用途 |
|------|------|
| **Git** | 版本控制 |
| **Gitea** | 程式碼託管 |
| **VSCode** | IDE |
| **Postman** | API 測試 |
| **MySQL Workbench** | 資料庫管理 |
---
## 4. 資料庫設計
### 4.1 資料庫概覽
**資料庫名稱**: `db_A102`
**資料表總數**: 31 張
**字符集**: utf8mb4_unicode_ci
**引擎**: InnoDB
### 4.2 資料表分類
#### 4.2.1 基礎資料表 (5張)
| 資料表 | 說明 | 記錄數 (預估) |
|--------|------|--------------|
| `hr_departments` | 部門組織架構 | 50-100 |
| `hr_job_levels` | 職級定義 | 9 |
| `hr_employees` | 員工資料 | 1000-5000 |
| `hr_system_roles` | 系統角色權限 | 4 |
| `hr_employee_roles` | 員工角色關聯 | 1000-5000 |
#### 4.2.2 職能字典 (3張)
| 資料表 | 說明 | 記錄數 (預估) |
|--------|------|--------------|
| `hr_competency_categories` | 職能分類 | 10-20 |
| `hr_competency_dictionary` | 職能字典 | 50-100 |
| `hr_competency_behaviors` | 職能行為指標 | 250-500 |
#### 4.2.3 角色卡模組 (6張)
| 資料表 | 說明 | 記錄數 (預估) |
|--------|------|--------------|
| `hr_role_cards` | 角色卡主表 | 200-500 |
| `hr_role_responsibilities` | 角色卡職責 | 1000-2000 |
| `hr_role_supervisees` | 角色卡督導對象 | 500-1000 |
| `hr_role_collaborators` | 角色卡協作夥伴 | 1000-2000 |
| `hr_role_kra` | 角色卡KRA | 1000-2000 |
| `hr_role_kpi` | 角色卡KPI | 2000-4000 |
#### 4.2.4 能力卡模組 (3張)
| 資料表 | 說明 | 記錄數 (預估) |
|--------|------|--------------|
| `hr_competency_cards` | 能力卡主表 | 1000-5000 |
| `hr_competency_card_hard_skills` | 能力卡硬性能力 | 5000-10000 |
| `hr_competency_card_soft_skills` | 能力卡軟性能力 | 5000-10000 |
#### 4.2.5 績效卡模組 (4張)
| 資料表 | 說明 | 記錄數 (預估) |
|--------|------|--------------|
| `hr_review_cycles` | 評核週期設定 | 20-40 |
| `hr_performance_cards` | 績效卡主表 | 5000-20000 |
| `hr_performance_goals` | 績效卡目標評核 | 20000-80000 |
| `hr_performance_behaviors` | 績效卡行為評估 | 20000-80000 |
#### 4.2.6 成長卡模組 (5張)
| 資料表 | 說明 | 記錄數 (預估) |
|--------|------|--------------|
| `hr_growth_cards` | 成長卡主表 | 5000-20000 |
| `hr_growth_focus_areas` | 成長卡發展焦點 | 10000-40000 |
| `hr_growth_idp_goals` | 成長卡IDP目標 | 15000-60000 |
| `hr_growth_actions` | 成長卡行動計畫 | 30000-120000 |
| `hr_growth_tracking` | 成長卡追蹤紀錄 | 20000-80000 |
#### 4.2.7 系統支援 (5張)
| 資料表 | 說明 | 記錄數 (預估) |
|--------|------|--------------|
| `hr_approval_records` | 審批記錄 | 50000-200000 |
| `hr_system_settings` | 系統設定 | 50-100 |
| `hr_rating_thresholds` | 等級分界設定 | 5 |
| `hr_version_snapshots` | 版本快照 | 50000-200000 |
| `hr_audit_logs` | 操作日誌 | 500000+ |
### 4.3 核心資料表詳細設計
#### 4.3.1 員工資料表 (hr_employees)
```sql
CREATE TABLE hr_employees (
id INT AUTO_INCREMENT PRIMARY KEY,
employee_no VARCHAR(20) UNIQUE NOT NULL COMMENT '員工編號',
email VARCHAR(100) UNIQUE NOT NULL COMMENT '電子郵件',
name_zh VARCHAR(50) NOT NULL COMMENT '姓名(中文)',
name_en VARCHAR(50) COMMENT '姓名(英文)',
department_id INT NOT NULL COMMENT '部門ID',
job_level_id INT NOT NULL COMMENT '職級ID',
supervisor_id INT COMMENT '直屬主管ID',
status ENUM('active', 'inactive', 'resigned') DEFAULT 'active',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_dept (department_id),
INDEX idx_status (status),
FOREIGN KEY (department_id) REFERENCES hr_departments(id),
FOREIGN KEY (job_level_id) REFERENCES hr_job_levels(id),
FOREIGN KEY (supervisor_id) REFERENCES hr_employees(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
```
#### 4.3.2 績效卡主表 (hr_performance_cards)
```sql
CREATE TABLE hr_performance_cards (
id INT AUTO_INCREMENT PRIMARY KEY,
card_code VARCHAR(30) UNIQUE NOT NULL COMMENT '績效卡編號',
review_cycle_id INT NOT NULL COMMENT '評核週期ID',
employee_id INT NOT NULL COMMENT '被評核人ID',
role_card_id INT NOT NULL COMMENT '關聯角色卡ID',
supervisor_id INT NOT NULL COMMENT '評核主管ID',
goal_score DECIMAL(5,2) COMMENT '目標得分',
behavior_score DECIMAL(5,2) COMMENT '行為得分',
total_score DECIMAL(5,2) COMMENT '總分',
rating ENUM('A+', 'A', 'B+', 'B', 'C') COMMENT '考核等級',
status ENUM('not_started', 'self_review', 'supervisor_review', 'completed', 'archived'),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_cycle (review_cycle_id),
INDEX idx_employee (employee_id),
INDEX idx_status (status),
FOREIGN KEY (review_cycle_id) REFERENCES hr_review_cycles(id),
FOREIGN KEY (employee_id) REFERENCES hr_employees(id),
FOREIGN KEY (role_card_id) REFERENCES hr_role_cards(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
```
### 4.4 索引策略
| 索引類型 | 使用時機 | 範例 |
|---------|---------|------|
| **PRIMARY KEY** | 主鍵 | id |
| **UNIQUE** | 唯一約束 | email, employee_no |
| **INDEX** | 常用查詢欄位 | department_id, status |
| **FOREIGN KEY** | 關聯完整性 | employee_id → hr_employees(id) |
### 4.5 資料完整性
- ✅ 外鍵約束確保參照完整性
- ✅ NOT NULL 約束必填欄位
- ✅ ENUM 限制值域範圍
- ✅ DEFAULT 提供預設值
- ✅ ON UPDATE CASCADE 級聯更新
- ✅ ON DELETE SET NULL/CASCADE 刪除策略
---
## 5. API 設計
### 5.1 API 規範
#### 5.1.1 基礎資訊
| 項目 | 內容 |
|------|------|
| **協定** | HTTPS |
| **格式** | RESTful JSON |
| **認證** | JWT Bearer Token |
| **版本** | v1 |
| **Base URL (Flask)** | http://127.0.0.1:5002/api |
| **Base URL (Express)** | http://localhost:3000/api |
#### 5.1.2 HTTP 狀態碼
| 狀態碼 | 說明 | 使用時機 |
|--------|------|---------|
| **200** | OK | 請求成功 |
| **201** | Created | 資源建立成功 |
| **400** | Bad Request | 請求參數錯誤 |
| **401** | Unauthorized | 未授權 |
| **403** | Forbidden | 禁止訪問 |
| **404** | Not Found | 資源不存在 |
| **422** | Unprocessable Entity | 驗證失敗 |
| **500** | Internal Server Error | 伺服器錯誤 |
#### 5.1.3 回應格式
**成功回應**:
```json
{
"success": true,
"data": { ... },
"message": "操作成功",
"timestamp": "2025-12-03T10:00:00.000Z"
}
```
**錯誤回應**:
```json
{
"success": false,
"error": {
"statusCode": 400,
"message": "錯誤訊息",
"details": { ... },
"timestamp": "2025-12-03T10:00:00.000Z",
"path": "/api/endpoint"
}
}
```
### 5.2 核心 API 端點
#### 5.2.1 健康檢查
```
GET /health
Response:
{
"success": true,
"message": "API is running",
"database": "connected",
"timestamp": "2025-12-03T10:00:00.000Z"
}
```
#### 5.2.2 資料庫 API
```
POST /api/db/test
測試資料庫連線
GET /api/db/tables
列出所有資料表
```
#### 5.2.3 LLM API
```
POST /api/llm/test/gemini
測試 Gemini API
POST /api/llm/test/deepseek
測試 DeepSeek API
POST /api/llm/test/openai
測試 OpenAI API
POST /api/llm/test/claude
測試 Claude API
POST /api/llm/test/all
測試所有 LLM
POST /api/llm/generate
生成內容
Request:
{
"prompt": "內容提示",
"provider": "claude",
"options": {
"temperature": 0.7,
"maxTokens": 2000
}
}
POST /api/llm/help-me-fill
Help Me AI 智能填寫
Request:
{
"cardType": "performance",
"filledFields": { ... },
"emptyFields": [ ... ],
"context": { ... }
}
```
#### 5.2.4 四卡系統 API (規劃中)
```
# 角色卡
GET /api/role-cards
POST /api/role-cards
GET /api/role-cards/:id
PUT /api/role-cards/:id
DELETE /api/role-cards/:id
# 能力卡
GET /api/competency-cards
POST /api/competency-cards
GET /api/competency-cards/:id
PUT /api/competency-cards/:id
DELETE /api/competency-cards/:id
# 績效卡
GET /api/performance-cards
POST /api/performance-cards
GET /api/performance-cards/:id
PUT /api/performance-cards/:id
DELETE /api/performance-cards/:id
# 成長卡
GET /api/growth-cards
POST /api/growth-cards
GET /api/growth-cards/:id
PUT /api/growth-cards/:id
DELETE /api/growth-cards/:id
```
### 5.3 API 安全
| 機制 | 實作方式 |
|------|---------|
| **CORS** | Flask-CORS / cors middleware |
| **認證** | JWT Token |
| **加密** | HTTPS / TLS 1.3 |
| **速率限制** | Rate limiting middleware |
| **輸入驗證** | Schema validation |
| **SQL 注入防護** | Parameterized queries |
| **XSS 防護** | Content Security Policy |
---
## 6. 前端設計
### 6.1 UI/UX 設計原則
- **簡潔**: 介面清晰,操作直覺
- **一致**: 統一的視覺風格
- **響應**: 支援多裝置
- **無障礙**: WCAG 2.1 AA 標準
- **效能**: 快速載入與互動
### 6.2 色彩系統
```css
:root {
/* 主色調 */
--primary: #667eea;
--primary-dark: #764ba2;
/* 語義色 */
--success: #10b981;
--warning: #f59e0b;
--error: #ef4444;
--info: #3b82f6;
/* 中性色 */
--gray-50: #f9fafb;
--gray-100: #f3f4f6;
--gray-200: #e5e7eb;
--gray-800: #1f2937;
--gray-900: #111827;
}
```
### 6.3 響應式斷點
| 裝置 | 寬度 | 佈局 |
|------|------|------|
| **Mobile** | < 768px | 單欄 |
| **Tablet** | 768-1279px | 雙欄 |
| **Desktop** | 1280px | 三欄 |
### 6.4 核心元件
```
components/
├── ErrorModal.jsx # 錯誤彈窗
├── LLMConnectionTest.jsx # LLM 連線測試
├── RoleCard.jsx # 角色卡元件
├── CompetencyCard.jsx # 能力卡元件
├── PerformanceCard.jsx # 績效卡元件
└── GrowthCard.jsx # 成長卡元件
```
---
## 7. 安全設計
### 7.1 認證與授權
```
使用者登入
驗證帳號密碼
產生 JWT Token (7天有效)
每次請求攜帶 Token
後端驗證 Token
檢查權限
執行操作
```
### 7.2 角色權限
| 角色 | 權限 |
|------|------|
| **ADMIN** | 所有權限 |
| **HR** | 檢視全部管理設定管理職能字典 |
| **MANAGER** | 檢視部屬審批評核 |
| **EMPLOYEE** | 檢視自己自評 |
### 7.3 資料加密
- **傳輸加密**: TLS 1.3
- **密碼**: bcrypt 雜湊 (cost factor 12)
- **敏感資料**: AES-256-GCM
- **API 金鑰**: 環境變數不提交版本控制
### 7.4 安全檢查清單
- [x] SQL 注入防護
- [x] XSS 防護
- [x] CSRF 防護
- [x] 點擊劫持防護
- [x] 速率限制
- [x] 輸入驗證
- [x] 輸出編碼
- [x] 安全標頭
- [x] 日誌記錄
- [x] 錯誤處理
---
## 8. 部署架構
### 8.1 開發環境
```
開發機器
├── Python 3.8+ / Node.js 16+
├── MySQL 8.0+
├── Git
└── VSCode
```
**啟動方式**:
```bash
# Flask
python app.py
# Express
npm run dev
```
### 8.2 生產環境
```
┌─────────────────────────────────────────┐
│ Load Balancer / Nginx │
│ (SSL Termination) │
└────────────────┬────────────────────────┘
┌────────────┴────────────┐
│ │
┌───▼────────┐ ┌──────▼─────┐
│ Flask │ │ Express │
│ (Gunicorn)│ │ (PM2) │
│ x 4 │ │ x 4 │
└───┬────────┘ └──────┬─────┘
│ │
└────────────┬───────────┘
┌────────▼────────┐
│ MySQL Master │
│ (Primary) │
└────────┬────────┘
┌────────▼────────┐
│ MySQL Replica │
│ (Read-only) │
└─────────────────┘
```
### 8.3 Docker 部署
**docker-compose.yml**:
```yaml
version: '3.8'
services:
flask-api:
build: ./flask
ports:
- "5002:5002"
environment:
- DB_HOST=mysql
- DB_PORT=3306
depends_on:
- mysql
express-api:
build: ./express
ports:
- "3000:3000"
environment:
- DB_HOST=mysql
- DB_PORT=3306
depends_on:
- mysql
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
MYSQL_DATABASE: ${DB_NAME}
volumes:
- mysql-data:/var/lib/mysql
- ./database:/docker-entrypoint-initdb.d
volumes:
mysql-data:
```
### 8.4 CI/CD 流程
```
Git Push (Gitea)
Webhook Trigger
Build & Test
Docker Image Build
Push to Registry
Deploy to Server
Health Check
通知完成
```
---
## 9. 效能優化
### 9.1 資料庫優化
- 適當的索引策略
- 查詢優化 (EXPLAIN)
- 連線池管理
- 快取常用查詢
- 分頁載入
- 避免 N+1 查詢
### 9.2 API 優化
- Response 壓縮 (gzip)
- HTTP/2
- CDN 靜態資源
- API 快取 (Redis)
- 非同步處理
- 批次操作
### 9.3 前端優化
- Code Splitting
- Lazy Loading
- 圖片優化
- Tree Shaking
- Service Worker
- Local Storage 快取
### 9.4 效能指標
| 指標 | 目標值 |
|------|--------|
| **頁面載入時間** | < 2 |
| **API 回應時間** | < 500ms |
| **首次內容繪製 (FCP)** | < 1.5 |
| **最大內容繪製 (LCP)** | < 2.5 |
| **累積佈局偏移 (CLS)** | < 0.1 |
---
## 10. 附錄
### 10.1 相關文件
- [功能規格書](../HR績效評核系統_功能規格書_v1.1.md)
- [README](../README.md)
- [資料庫文件](../database/README.md)
- [CORS 解決指南](../CORS_FIX_GUIDE.md)
- [Flask 設定指南](../FLASK_SETUP.md)
- [依賴修復指南](../DEPENDENCY_FIX.md)
### 10.2 開發規範
- **程式碼風格**: PEP 8 (Python), Airbnb (JavaScript)
- **Git Commit**: Conventional Commits
- **分支策略**: Git Flow
- **Code Review**: 必須
### 10.3 測試策略
| 測試類型 | 覆蓋率目標 | 工具 |
|---------|-----------|------|
| **單元測試** | 80%+ | pytest, Jest |
| **整合測試** | 70%+ | pytest, Supertest |
| **E2E 測試** | 關鍵流程 | Selenium, Cypress |
| **效能測試** | - | Apache JMeter |
| **安全測試** | - | OWASP ZAP |
### 10.4 監控與日誌
- **應用監控**: Prometheus + Grafana
- **日誌收集**: ELK Stack (Elasticsearch, Logstash, Kibana)
- **錯誤追蹤**: Sentry
- **效能分析**: New Relic / DataDog
### 10.5 聯絡資訊
- **專案負責人**: Donald
- **Git Repository**: https://gitea.theaken.com/donald/hr-performance-system
- **技術支援**: 透過 Gitea Issues
---
## 文件結尾
**本文件受版本控制管理,請勿擅自修改**
**最後更新**: 2025-12-03
**文件版本**: v1.0
**狀態**: 已完成
---
© 2025 HR Performance Management System. All rights reserved.