Initial commit: HR Performance System

- Database schema with 31 tables for 4-card system
- LLM API integration (Gemini, DeepSeek, OpenAI)
- Error handling system with modal component
- Connection test UI for LLM services
- Environment configuration files
- Complete database documentation

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
donald
2025-12-03 23:34:13 +08:00
commit c24634f4b7
18 changed files with 8179 additions and 0 deletions

256
database/README.md Normal file
View File

@@ -0,0 +1,256 @@
# HR 績效評核系統 - 資料庫說明
## 資料庫連線資訊
```
DB_HOST: mysql.theaken.com
DB_PORT: 33306
DB_NAME: db_A102
DB_USER: A102
DB_PASSWORD: Bb123456
```
## 資料庫結構
本系統使用 MySQL 資料庫,包含以下主要模組:
### 一、基礎資料表 (5張)
- `hr_departments` - 部門組織架構
- `hr_job_levels` - 職級定義
- `hr_employees` - 員工資料
- `hr_system_roles` - 系統角色權限
- `hr_employee_roles` - 員工角色關聯
### 二、職能字典 (3張)
- `hr_competency_categories` - 職能分類
- `hr_competency_dictionary` - 職能字典
- `hr_competency_behaviors` - 職能行為指標
### 三、角色卡模組 (6張)
- `hr_role_cards` - 角色卡主表
- `hr_role_responsibilities` - 角色卡職責
- `hr_role_supervisees` - 角色卡督導對象
- `hr_role_collaborators` - 角色卡協作夥伴
- `hr_role_kra` - 角色卡KRA
- `hr_role_kpi` - 角色卡KPI
### 四、能力卡模組 (3張)
- `hr_competency_cards` - 能力卡主表
- `hr_competency_card_hard_skills` - 能力卡硬性能力
- `hr_competency_card_soft_skills` - 能力卡軟性能力
### 五、績效卡模組 (4張)
- `hr_review_cycles` - 評核週期設定
- `hr_performance_cards` - 績效卡主表
- `hr_performance_goals` - 績效卡目標評核
- `hr_performance_behaviors` - 績效卡行為評估
### 六、成長卡模組 (5張)
- `hr_growth_cards` - 成長卡主表
- `hr_growth_focus_areas` - 成長卡發展焦點
- `hr_growth_idp_goals` - 成長卡IDP目標
- `hr_growth_actions` - 成長卡行動計畫
- `hr_growth_tracking` - 成長卡追蹤紀錄
### 七、系統支援 (5張)
- `hr_approval_records` - 審批記錄
- `hr_system_settings` - 系統設定
- `hr_rating_thresholds` - 等級分界設定
- `hr_version_snapshots` - 版本快照
- `hr_audit_logs` - 操作日誌
**總計31張資料表**
## 安裝步驟
### 1. 建立資料庫結構
連線到 MySQL 伺服器後,執行以下命令:
```bash
mysql -h mysql.theaken.com -P 33306 -u A102 -p db_A102 < schema.sql
```
或使用 MySQL Workbench / phpMyAdmin 等工具匯入 [schema.sql](schema.sql)
### 2. 匯入初始資料
```bash
mysql -h mysql.theaken.com -P 33306 -u A102 -p db_A102 < seed_data.sql
```
或使用 MySQL Workbench / phpMyAdmin 等工具匯入 [seed_data.sql](seed_data.sql)
## 初始資料內容
執行 `seed_data.sql` 後會建立以下初始資料:
### 系統角色 (4個)
- ADMIN - 系統管理員
- HR - 人力資源
- MANAGER - 部門主管
- EMPLOYEE - 一般員工
### 職級 (9個)
- L1 助理專員 → L9 總經理
### 職能字典 (10個核心職能)
**通用職能 (5個)**
- CORE-001: 溝通協調
- CORE-002: 團隊合作
- CORE-003: 問題解決
- CORE-004: 執行力
- CORE-005: 學習成長
**管理職能 (5個)**
- MGMT-001: 策略思維
- MGMT-002: 團隊領導
- MGMT-003: 橫向整合力
- MGMT-004: 決策判斷
- MGMT-005: 人才培育
### 職能行為指標
每個職能都包含 L1-L5 共5個等級的行為指標描述
### 系統設定
- 目標權重70%
- 行為權重30%
- 預設語言:繁體中文
- 啟用季度評核
- IDP最大目標數4
### 等級分界
- A+: 90-100分 (建議10%)
- A: 80-89.99分 (建議22.5%)
- B+: 70-79.99分 (建議35%)
- B: 60-69.99分 (建議22.5%)
- C: 0-59.99分 (建議10%)
## 資料庫特性
### 字符集
- 使用 `utf8mb4_unicode_ci` 支援多語系與特殊字符
### 引擎
- 使用 `InnoDB` 引擎支援交易與外鍵約束
### 索引優化
- 已在常用查詢欄位建立索引
- 外鍵關聯已建立索引
### 資料完整性
- 使用外鍵約束確保資料關聯正確
- 設定適當的 `ON DELETE` 策略
## 開發建議
### 連線測試
```javascript
// Node.js 範例
const mysql = require('mysql2');
const connection = mysql.createConnection({
host: 'mysql.theaken.com',
port: 33306,
user: 'A102',
password: 'Bb123456',
database: 'db_A102'
});
connection.connect((err) => {
if (err) {
console.error('連線失敗:', err);
return;
}
console.log('資料庫連線成功!');
});
```
### 常用查詢範例
#### 查詢員工及其部門資訊
```sql
SELECT
e.employee_no,
e.name_zh,
d.dept_name_zh,
l.level_name_zh
FROM hr_employees e
JOIN hr_departments d ON e.department_id = d.id
JOIN hr_job_levels l ON e.job_level_id = l.id
WHERE e.status = 'active';
```
#### 查詢職能字典完整資訊
```sql
SELECT
cd.competency_code,
cd.competency_name_zh,
cc.category_name_zh,
cb.level_num,
cb.behavior_description_zh
FROM hr_competency_dictionary cd
JOIN hr_competency_categories cc ON cd.category_id = cc.id
LEFT JOIN hr_competency_behaviors cb ON cd.id = cb.competency_id
WHERE cd.is_active = TRUE
ORDER BY cd.id, cb.level_num;
```
#### 查詢員工的角色卡資訊
```sql
SELECT
rc.card_code,
rc.role_name_zh,
e.name_zh AS employee_name,
d.dept_name_zh,
GROUP_CONCAT(rr.responsibility_zh SEPARATOR '; ') AS responsibilities
FROM hr_role_cards rc
JOIN hr_employees e ON rc.employee_id = e.id
JOIN hr_departments d ON rc.department_id = d.id
LEFT JOIN hr_role_responsibilities rr ON rc.id = rr.role_card_id
WHERE rc.status = 'approved'
GROUP BY rc.id;
```
## 維護建議
### 定期備份
```bash
# 完整備份
mysqldump -h mysql.theaken.com -P 33306 -u A102 -p db_A102 > backup_$(date +%Y%m%d).sql
# 僅備份結構
mysqldump -h mysql.theaken.com -P 33306 -u A102 -p --no-data db_A102 > schema_backup.sql
# 僅備份資料
mysqldump -h mysql.theaken.com -P 33306 -u A102 -p --no-create-info db_A102 > data_backup.sql
```
### 效能監控
- 定期檢查慢查詢日誌
- 監控資料表大小成長
- 定期執行 `OPTIMIZE TABLE` 優化資料表
### 擴充建議
- 職能字典可依需求新增專業職能
- 部門結構可依組織調整
- 評核週期需每年設定
## 注意事項
1. **密碼安全**: 請定期更換資料庫密碼
2. **權限管理**: 建議為不同環境建立不同的資料庫使用者
3. **資料保護**: 員工個資需遵守相關法規保護
4. **版本控制**: 資料庫結構變更需建立遷移腳本
5. **測試環境**: 建議另建測試資料庫進行開發測試
## 技術支援
如有任何資料庫相關問題,請聯繫系統管理員。
---
**最後更新**: 2025-12-03
**版本**: 1.0