Lưu trữ & Tính toán KPI
Đặc tả Lưu trữ và Tính toán Dữ liệu KPI
1. Tổng quan
Tài liệu này mô tả chi tiết cách thức dữ liệu KPI được thu thập sẽ được lưu trữ trong cơ sở dữ liệu ABMS và các quy trình, công thức cụ thể để tính toán các chỉ số KPI.
2. Đặc tả Lưu trữ Dữ liệu KPI
2.1. Mô hình Dữ liệu (Chi tiết hóa từ abms_implementation_design.md)
Các bảng chính liên quan đến lưu trữ dữ liệu KPI:
2.1.1. Bảng KPI_Data_Collection
Lưu trữ dữ liệu thô được thu thập từ các nguồn khác nhau.
| Trường | Kiểu dữ liệu | Khóa | Ràng buộc | Chỉ mục | Mô tả |
|---|---|---|---|---|---|
collection_id |
INT | PK | NOT NULL, AUTO_INCREMENT | YES | ID duy nhất của bản ghi thu thập |
kpi_id |
INT | FK (KPI_Definition) |
NOT NULL | YES | ID của KPI liên quan |
employee_id |
INT | FK (Employees) |
NULL | YES | ID của nhân viên (nếu là KPI cá nhân) |
department_id |
INT | FK (Departments) |
NULL | YES | ID của bộ phận (nếu là KPI bộ phận) |
project_id |
INT | FK (Projects) |
NULL | YES | ID của dự án (nếu liên quan) |
value |
DECIMAL(18,4) | NOT NULL | Giá trị dữ liệu thô thu thập được | ||
collection_date |
DATE | NOT NULL | YES | Ngày dữ liệu được thu thập/ghi nhận | |
period |
VARCHAR(10) | NOT NULL | YES | Kỳ đánh giá (e.g., ‘2025-04’, ‘2025-Q2’) | |
source_id |
INT | FK (KPI_Data_Source) |
NOT NULL | YES | ID của nguồn dữ liệu |
collection_method |
VARCHAR(50) | NOT NULL | Phương pháp thu thập (e.g., ‘API_Sync’, ‘Manual_Input’, ‘Survey’) | ||
collected_by |
INT | FK (Users) |
NULL | ID người nhập liệu (nếu thủ công) | |
verified_by |
INT | FK (Users) |
NULL | ID người xác minh | |
approved_by |
INT | FK (Users) |
NULL | ID người phê duyệt | |
status |
VARCHAR(20) | NOT NULL, DEFAULT ‘Draft’ | YES | Trạng thái (Draft, Verified, Approved, Rejected) | |
notes |
TEXT | NULL | Ghi chú | ||
created_at |
DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP | Thời gian tạo bản ghi | ||
updated_at |
DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | Thời gian cập nhật bản ghi |
2.1.2. Bảng KPI_Evaluation
Lưu trữ kết quả đánh giá KPI sau khi tính toán.
| Trường | Kiểu dữ liệu | Khóa | Ràng buộc | Chỉ mục | Mô tả |
|---|---|---|---|---|---|
evaluation_id |
INT | PK | NOT NULL, AUTO_INCREMENT | YES | ID duy nhất của bản ghi đánh giá |
template_id |
INT | FK (KPI_Template) |
NOT NULL | YES | ID của mẫu KPI được áp dụng |
employee_id |
INT | FK (Employees) |
NOT NULL | YES | ID của nhân viên được đánh giá |
period |
VARCHAR(10) | NOT NULL | YES | Kỳ đánh giá (e.g., ‘2025-04’, ‘2025-Q2’) | |
kpi_id |
INT | FK (KPI_Definition) |
NOT NULL | YES | ID của KPI được đánh giá |
target |
DECIMAL(18,4) | NOT NULL | Mục tiêu của KPI trong kỳ | ||
actual |
DECIMAL(18,4) | NOT NULL | Giá trị thực tế đạt được | ||
achievement_rate |
DECIMAL(7,4) | NOT NULL | Tỷ lệ hoàn thành (Actual / Target) | ||
score |
DECIMAL(7,4) | NOT NULL | Điểm số KPI (sau khi áp dụng trọng số và thang điểm) | ||
weighted_score |
DECIMAL(7,4) | NOT NULL | Điểm số KPI đã nhân trọng số | ||
comments |
TEXT | NULL | Nhận xét của người đánh giá | ||
evaluation_date |
DATE | NOT NULL | YES | Ngày thực hiện đánh giá | |
evaluator_id |
INT | FK (Users) |
NOT NULL | ID của người thực hiện đánh giá | |
status |
VARCHAR(20) | NOT NULL, DEFAULT ‘Pending’ | YES | Trạng thái đánh giá (Pending, Reviewed, Finalized) | |
created_at |
DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP | Thời gian tạo bản ghi | ||
updated_at |
DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | Thời gian cập nhật bản ghi |
2.1.3. Bảng KPI_Summary
Lưu trữ điểm KPI tổng hợp cho từng nhân viên theo kỳ.
| Trường | Kiểu dữ liệu | Khóa | Ràng buộc | Chỉ mục | Mô tả |
|---|---|---|---|---|---|
summary_id |
INT | PK | NOT NULL, AUTO_INCREMENT | YES | ID duy nhất của bản ghi tổng hợp |
employee_id |
INT | FK (Employees) |
NOT NULL | YES | ID của nhân viên |
period |
VARCHAR(10) | NOT NULL | YES | Kỳ đánh giá (e.g., ‘2025-04’, ‘2025-Q2’) | |
total_personal_score |
DECIMAL(7,4) | NULL | Tổng điểm KPI cá nhân | ||
total_team_score |
DECIMAL(7,4) | NULL | Tổng điểm KPI nhóm (nếu có) | ||
total_dept_score |
DECIMAL(7,4) | NULL | Tổng điểm KPI bộ phận | ||
total_company_score |
DECIMAL(7,4) | NULL | Tổng điểm KPI công ty | ||
final_kpi_score |
DECIMAL(7,4) | NOT NULL | Điểm KPI cuối cùng (dùng tính P3) | ||
p3_amount |
DECIMAL(18,2) | NULL | Số tiền lương P3 tương ứng | ||
summary_date |
DATE | NOT NULL | YES | Ngày tổng hợp | |
status |
VARCHAR(20) | NOT NULL, DEFAULT ‘Calculated’ | YES | Trạng thái (Calculated, Paid) | |
created_at |
DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP | Thời gian tạo bản ghi | ||
updated_at |
DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | Thời gian cập nhật bản ghi |
2.2. Quy ước Lưu trữ
- Kỳ đánh giá (
period): Sử dụng định dạngYYYY-MMcho kỳ tháng vàYYYY-Qncho kỳ quý (e.g., ‘2025-04’, ‘2025-Q2’). - Trạng thái (
status): Sử dụng các giá trị được định nghĩa trước để quản lý quy trình (e.g., Draft, Verified, Approved, Rejected, Pending, Reviewed, Finalized, Calculated, Paid). - Chỉ mục (Indexing): Tạo chỉ mục trên các trường thường xuyên được sử dụng trong truy vấn (FKs,
period,status,employee_id,kpi_id) để tối ưu hiệu suất. - Kiểu dữ liệu: Sử dụng
DECIMALcho các giá trị số để đảm bảo độ chính xác.
3. Đặc tả Tính toán KPI
3.1. Quy trình Tính toán Tổng quát
- Thu thập Dữ liệu Thô: Dữ liệu được thu thập vào bảng
KPI_Data_Collectionvà trải qua quá trình xác minh, phê duyệt. - Tổng hợp Dữ liệu Thực tế (
actual): Dựa trênkpi_idvàperiod, tổng hợp dữ liệu từKPI_Data_Collection(đã được ‘Approved’) để có giá trịactualcho mỗi KPI trong kỳ.- Ví dụ: KPI “Doanh thu bộ phận” sẽ tổng hợp tất cả các bản ghi doanh thu đã được phê duyệt trong kỳ.
- So sánh với Mục tiêu (
target): Lấy giá trịtargettừKPI_Templatevà tính toán tỷ lệ hoàn thành (achievement_rate). - Tính điểm KPI (
score): Áp dụng thang điểm và trọng số để tính điểm KPI. - Tổng hợp Điểm KPI: Tổng hợp điểm KPI theo các cấp độ (cá nhân, nhóm, bộ phận, công ty) và lưu vào
KPI_Summary. - Tính toán P3: Dựa trên điểm KPI cuối cùng, tính toán lương hiệu suất (P3).
3.2. Công thức Tính toán Chi tiết
3.2.1. Tính Tỷ lệ Hoàn thành (achievement_rate)
Tùy thuộc vào loại KPI, công thức tính tỷ lệ hoàn thành sẽ khác nhau:
KPI Tăng (càng cao càng tốt):
achievement_rate = actual / targetVí dụ: KPI “Doanh thu” với target = 100 triệu, actual = 120 triệu → achievement_rate = 120 / 100 = 1.2 (120%)
KPI Giảm (càng thấp càng tốt):
achievement_rate = (2 - actual / target) nếu actual <= target * 2 achievement_rate = 0 nếu actual > target * 2Ví dụ: KPI “Thời gian phản hồi” với target = 4 giờ, actual = 3 giờ → achievement_rate = (2 - 3/4) = 1.25 (125%)
KPI Đạt/Không đạt:
achievement_rate = 1 nếu actual >= target achievement_rate = 0 nếu actual < targetVí dụ: KPI “Tuân thủ quy trình” với target = 100%, actual = 100% → achievement_rate = 1 (100%)
3.2.2. Tính Điểm KPI (score)
Điểm KPI được tính dựa trên tỷ lệ hoàn thành và thang điểm:
Thang điểm cơ bản (0-10):
score = min(10, achievement_rate * 10)Ví dụ: achievement_rate = 1.2 → score = min(10, 1.2 * 10) = 10
Thang điểm có giới hạn trên:
score = min(max_score, achievement_rate * 10)Ví dụ: achievement_rate = 1.2, max_score = 12 → score = min(12, 1.2 * 10) = 12
Thang điểm có thưởng vượt trội:
score = 10 nếu achievement_rate <= 1 score = 10 + (achievement_rate - 1) * bonus_factor * 10 nếu achievement_rate > 1Ví dụ: achievement_rate = 1.2, bonus_factor = 1.5 → score = 10 + (1.2 - 1) * 1.5 * 10 = 10 + 3 = 13
3.2.3. Tính Điểm KPI có Trọng số (weighted_score)
weighted_score = score * weight
Ví dụ: score = 9, weight = 0.25 → weighted_score = 9 * 0.25 = 2.25
3.2.4. Tính Tổng Điểm KPI theo Cấp độ
Tổng điểm KPI cá nhân:
total_personal_score = SUM(weighted_score) cho tất cả KPI cá nhânTổng điểm KPI nhóm:
total_team_score = SUM(weighted_score) cho tất cả KPI nhómTổng điểm KPI bộ phận:
total_dept_score = SUM(weighted_score) cho tất cả KPI bộ phậnTổng điểm KPI công ty:
total_company_score = SUM(weighted_score) cho tất cả KPI công ty
3.2.5. Tính Điểm KPI Cuối cùng (final_kpi_score)
Điểm KPI cuối cùng là tổng có trọng số của các cấp độ KPI:
final_kpi_score = (total_personal_score * personal_weight) +
(total_team_score * team_weight) +
(total_dept_score * dept_weight) +
(total_company_score * company_weight)
Ví dụ: - total_personal_score = 8.5, personal_weight = 0.6 - total_team_score = 9.0, team_weight = 0.1 - total_dept_score = 7.5, dept_weight = 0.2 - total_company_score = 8.0, company_weight = 0.1
→ final_kpi_score = (8.5 * 0.6) + (9.0 * 0.1) + (7.5 * 0.2) + (8.0 * 0.1) = 5.1 + 0.9 + 1.5 + 0.8 = 8.3
3.2.6. Tính Lương Hiệu suất (P3)
p3_amount = base_p3 * (final_kpi_score / 10)
Ví dụ: base_p3 = 5,000,000 VND, final_kpi_score = 8.3 → p3_amount = 5,000,000 * (8.3 / 10) = 4,150,000 VND
3.3. Quy trình Tính toán Theo Chu kỳ
3.3.1. Tính toán KPI Hàng tháng
- Ngày 1-3 của tháng tiếp theo:
- Thu thập và xác minh dữ liệu KPI tháng trước
- Phê duyệt dữ liệu KPI
- Ngày 4-5 của tháng tiếp theo:
- Tính toán tỷ lệ hoàn thành và điểm KPI
- Lưu kết quả vào
KPI_Evaluation
- Ngày 6-7 của tháng tiếp theo:
- Tổng hợp điểm KPI theo các cấp độ
- Tính điểm KPI cuối cùng và lương P3
- Lưu kết quả vào
KPI_Summary
- Ngày 8-10 của tháng tiếp theo:
- Xem xét và phê duyệt kết quả KPI
- Cập nhật trạng thái thành ‘Finalized’
3.3.2. Tính toán KPI Hàng quý
- Ngày 1-5 của tháng đầu tiên quý tiếp theo:
- Thu thập và xác minh dữ liệu KPI quý trước
- Phê duyệt dữ liệu KPI
- Ngày 6-10 của tháng đầu tiên quý tiếp theo:
- Tính toán tỷ lệ hoàn thành và điểm KPI
- Lưu kết quả vào
KPI_Evaluation
- Ngày 11-15 của tháng đầu tiên quý tiếp theo:
- Tổng hợp điểm KPI theo các cấp độ
- Tính điểm KPI cuối cùng và lương P3
- Lưu kết quả vào
KPI_Summary
- Ngày 16-20 của tháng đầu tiên quý tiếp theo:
- Xem xét và phê duyệt kết quả KPI
- Cập nhật trạng thái thành ‘Finalized’
4. Triển khai Tính toán KPI trên ABMS
4.1. Stored Procedures
Các stored procedures sẽ được tạo để tự động hóa quá trình tính toán KPI:
4.1.1. sp_CalculateKPIActual
Tổng hợp dữ liệu thực tế từ KPI_Data_Collection cho mỗi KPI trong kỳ.
CREATE PROCEDURE sp_CalculateKPIActual(IN p_period VARCHAR(10))
BEGIN
-- Tổng hợp dữ liệu thực tế cho mỗi KPI trong kỳ
-- Kết quả được lưu vào bảng tạm thời hoặc trả về trực tiếp
END;4.1.2. sp_CalculateKPIScore
Tính toán điểm KPI dựa trên giá trị thực tế và mục tiêu.
CREATE PROCEDURE sp_CalculateKPIScore(IN p_period VARCHAR(10))
BEGIN
-- Lấy giá trị thực tế và mục tiêu
-- Tính toán tỷ lệ hoàn thành và điểm KPI
-- Lưu kết quả vào KPI_Evaluation
END;4.1.3. sp_CalculateKPISummary
Tổng hợp điểm KPI theo các cấp độ và tính điểm KPI cuối cùng.
CREATE PROCEDURE sp_CalculateKPISummary(IN p_period VARCHAR(10))
BEGIN
-- Tổng hợp điểm KPI theo các cấp độ
-- Tính điểm KPI cuối cùng và lương P3
-- Lưu kết quả vào KPI_Summary
END;4.2. Triggers
Các triggers sẽ được tạo để đảm bảo tính toàn vẹn dữ liệu và tự động cập nhật khi có thay đổi:
4.2.1. trg_KPI_Data_Collection_After_Update
Tự động cập nhật trạng thái và thông báo khi dữ liệu được xác minh hoặc phê duyệt.
CREATE TRIGGER trg_KPI_Data_Collection_After_Update
AFTER UPDATE ON KPI_Data_Collection
FOR EACH ROW
BEGIN
-- Kiểm tra nếu trạng thái thay đổi thành 'Approved'
-- Gửi thông báo cho người liên quan
END;4.2.2. trg_KPI_Evaluation_After_Insert
Tự động cập nhật dashboard khi có đánh giá KPI mới.
CREATE TRIGGER trg_KPI_Evaluation_After_Insert
AFTER INSERT ON KPI_Evaluation
FOR EACH ROW
BEGIN
-- Cập nhật dashboard
END;4.3. Scheduled Jobs
Các scheduled jobs sẽ được thiết lập để tự động tính toán KPI theo lịch trình:
4.3.1. job_CalculateMonthlyKPI
Tự động tính toán KPI hàng tháng vào ngày 5 của tháng tiếp theo.
-- Tạo scheduled job để chạy vào ngày 5 hàng tháng
-- Gọi các stored procedures: sp_CalculateKPIActual, sp_CalculateKPIScore, sp_CalculateKPISummary4.3.2. job_CalculateQuarterlyKPI
Tự động tính toán KPI hàng quý vào ngày 10 của tháng đầu tiên quý tiếp theo.
-- Tạo scheduled job để chạy vào ngày 10 của tháng đầu tiên mỗi quý
-- Gọi các stored procedures: sp_CalculateKPIActual, sp_CalculateKPIScore, sp_CalculateKPISummary5. Ví dụ Tính toán KPI Cụ thể
5.1. Ví dụ 1: KPI Doanh thu Bộ phận Phát triển Kinh doanh
5.1.1. Dữ liệu Thu thập
| Ngày | Giá trị (VND) | Nguồn | Trạng thái |
|---|---|---|---|
| 2025-04-01 | 50,000,000 | ABMS CRM | Approved |
| 2025-04-10 | 75,000,000 | ABMS CRM | Approved |
| 2025-04-20 | 60,000,000 | ABMS CRM | Approved |
| 2025-04-30 | 45,000,000 | ABMS CRM | Approved |
5.1.2. Tính toán
Tổng hợp Dữ liệu Thực tế:
actual = 50,000,000 + 75,000,000 + 60,000,000 + 45,000,000 = 230,000,000 VNDSo sánh với Mục tiêu:
target = 200,000,000 VND achievement_rate = 230,000,000 / 200,000,000 = 1.15 (115%)Tính Điểm KPI:
score = min(10, 1.15 * 10) = 10Tính Điểm KPI có Trọng số:
weight = 0.3 weighted_score = 10 * 0.3 = 3
5.2. Ví dụ 2: KPI Thời gian Phản hồi Khách hàng
5.2.1. Dữ liệu Thu thập
| Ngày | Giá trị (giờ) | Nguồn | Trạng thái |
|---|---|---|---|
| 2025-04-05 | 3.5 | ABMS CRM | Approved |
| 2025-04-12 | 2.8 | ABMS CRM | Approved |
| 2025-04-19 | 4.2 | ABMS CRM | Approved |
| 2025-04-26 | 3.1 | ABMS CRM | Approved |
5.2.2. Tính toán
Tổng hợp Dữ liệu Thực tế:
actual = (3.5 + 2.8 + 4.2 + 3.1) / 4 = 3.4 giờSo sánh với Mục tiêu:
target = 4 giờ achievement_rate = (2 - 3.4/4) = 1.15 (115%)Tính Điểm KPI:
score = min(10, 1.15 * 10) = 10Tính Điểm KPI có Trọng số:
weight = 0.15 weighted_score = 10 * 0.15 = 1.5
5.3. Ví dụ 3: Tính Điểm KPI Cuối cùng và Lương P3
5.3.1. Tổng hợp Điểm KPI theo Cấp độ
| Cấp độ | Tổng điểm | Trọng số |
|---|---|---|
| Cá nhân | 8.5 | 0.6 |
| Nhóm | 9.0 | 0.1 |
| Bộ phận | 7.5 | 0.2 |
| Công ty | 8.0 | 0.1 |
5.3.2. Tính Điểm KPI Cuối cùng
final_kpi_score = (8.5 * 0.6) + (9.0 * 0.1) + (7.5 * 0.2) + (8.0 * 0.1)
= 5.1 + 0.9 + 1.5 + 0.8
= 8.3
5.3.3. Tính Lương P3
base_p3 = 5,000,000 VND
p3_amount = 5,000,000 * (8.3 / 10) = 4,150,000 VND
6. Báo cáo và Trực quan hóa
6.1. Báo cáo KPI
6.1.1. Báo cáo KPI Cá nhân
- Hiển thị tất cả KPI của nhân viên, giá trị thực tế, mục tiêu, tỷ lệ hoàn thành, điểm số
- Hiển thị điểm KPI cuối cùng và lương P3
- Hiển thị biểu đồ so sánh giữa các kỳ
6.1.2. Báo cáo KPI Bộ phận
- Hiển thị tất cả KPI của bộ phận, giá trị thực tế, mục tiêu, tỷ lệ hoàn thành, điểm số
- Hiển thị bảng xếp hạng nhân viên trong bộ phận
- Hiển thị biểu đồ so sánh giữa các kỳ
6.1.3. Báo cáo KPI Công ty
- Hiển thị tất cả KPI của công ty, giá trị thực tế, mục tiêu, tỷ lệ hoàn thành, điểm số
- Hiển thị bảng xếp hạng bộ phận
- Hiển thị biểu đồ so sánh giữa các kỳ
6.2. Dashboard KPI
6.2.1. Dashboard KPI Cá nhân
- Hiển thị điểm KPI cuối cùng dưới dạng đồng hồ đo (gauge)
- Hiển thị biểu đồ radar cho các KPI cá nhân
- Hiển thị biểu đồ đường cho điểm KPI theo thời gian
- Hiển thị lương P3 và so sánh với các kỳ trước
6.2.2. Dashboard KPI Quản lý
- Hiển thị bảng xếp hạng nhân viên
- Hiển thị biểu đồ nhiệt (heatmap) cho hiệu suất nhóm
- Hiển thị biểu đồ cột cho các KPI bộ phận
- Hiển thị biểu đồ đường cho điểm KPI bộ phận theo thời gian
7. Quy trình Kiểm tra và Xác minh
7.1. Kiểm tra Tính toán
- Kiểm tra thủ công các tính toán KPI để đảm bảo độ chính xác
- So sánh kết quả tính toán tự động với tính toán thủ công
- Kiểm tra tính nhất quán của dữ liệu giữa các bảng
7.2. Xác minh Kết quả
- Xác minh kết quả KPI với người quản lý
- Xác minh lương P3 với bộ phận nhân sự
- Xác minh tính nhất quán của dữ liệu giữa các kỳ
7.3. Quy trình Điều chỉnh
- Quy trình điều chỉnh mục tiêu KPI nếu cần
- Quy trình điều chỉnh trọng số KPI nếu cần
- Quy trình điều chỉnh công thức tính toán nếu cần