- 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>
257 lines
6.1 KiB
Markdown
257 lines
6.1 KiB
Markdown
# 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
|