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:
256
database/README.md
Normal file
256
database/README.md
Normal 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
|
||||
Reference in New Issue
Block a user