KPI — Base dữ liệu¶
Vị trí trên portal: Nhân sự (hr) › KPI; TT nhân sự › KPI cá nhân
Module dùng Base KPI (Ay2ZbkoAHaxExpsxnK3lW9dAgQh). Bảng 1.3 là bảng làm việc chính: mỗi dòng là một tiêu chí KPI của một nhân sự trong một tháng; job runKpiMonthlySeed (02:00 VN, chỉ chạy ngày 1) tạo dòng tháng mới từ 0.1 (đối tượng) × 0.2 (tiêu chí). KPI_SEED_DRY_RUN = "0" → đang ghi thật. Bảng HRIS 4.4.2 - Bảng tổng hợp KPI nằm ở Base HRIS (xem Trung tâm nhân sự); quan hệ với Base KPI: cần xác nhận.
Cách đọc bảng cột¶
| Cột | Ý nghĩa |
|---|---|
| Cột | Tên cột trên Lark Base (🔑 = cột chính / primary field) |
| Kiểu | Kiểu dữ liệu Lark Base |
| Nguồn giá trị | Nhập liệu (người hoặc automation điền), Tự tính (công thức), Tự lấy (tra cứu) từ bảng khác, Liên kết bản ghi, Hệ thống (ngày tạo, người tạo…) |
| Chi tiết / công thức | Công thức (đã đổi mã cột/bảng sang tên), bảng tra cứu, bảng liên kết, danh sách lựa chọn (ẩn nếu > 20 lựa chọn hoặc chứa tên người) |
| Mô tả trên Base | Mô tả do người tạo Base ghi. Ô để trống = Base chưa có mô tả; ý nghĩa hiểu theo tên cột, cần xác nhận khi dùng cho nghiệp vụ quan trọng |
Cấu trúc đọc qua Lark API (chỉ đọc) ngày 22/10/2026. Bảng/cột có thể đã thay đổi sau ngày này.
Base KPI — Ay2ZbkoAHaxExpsxnK3lW9dAgQh¶
Danh sách bảng mô tả bên dưới:
| Bảng | Số cột | Code tham chiếu |
|---|---|---|
| 1.1 - Bảng đánh giá KPI - Tổng hợp | 5 | có |
| 1.2 - Bảng đánh giá KPI - Theo hạng mục | 7 | có |
| 1.3 - Bảng đánh giá chi tiết KPI Hàng tháng | 24 | có |
| 0.1 - QL Thông tin nhân sự | 21 | có |
| 0.2 - QL Tiêu chí KPI | 13 | có |
1.1 - Bảng đánh giá KPI - Tổng hợp¶
- Table ID:
tblCsCnhL7Z8AYoJ· Base: Base KPI · Số cột: 5 · Cột chính: NHÂN SỰ - Khoá trong
config/lark-tables.mjs:KPI.TONG_HOP - Code ONE-ANNA tham chiếu:
apps/api/src/portal/kpi-monthly-seed.js - Cơ cấu cột: 1 công thức · 1 tra cứu · 0 liên kết · 3 cột nhập/hệ thống
| # | Cột | Kiểu | Nguồn giá trị | Chi tiết / công thức | Mô tả trên Base |
|---|---|---|---|---|---|
| 1 | NHÂN SỰ 🔑 | Người (User) | Nhập liệu | Một người | |
| 2 | TỔNG ĐIỂM KPI | Công thức | Tự tính (công thức) | Công thức: IF( [Phòng/Ban] = "Phòng Trải nghiệm khách hàng", MIN( '1.2 - Bảng đánh giá KPI - Theo hạng mục' .FILTER( CurrentValue.[NHÂN SỰ] = [NHÂN SỰ] && CurrentValue.[THÁNG/NĂM] = [THÁNG/NĂM] ) .[ĐIỂM ĐÁNH GIÁ - QUẢN LÝ] .SUM(), 1.05 ), '1.2 - Bảng đánh giá KPI - Theo hạng mục' .FILTER( CurrentValue.[NHÂN SỰ] = [NHÂN SỰ] && CurrentValue.[THÁNG/NĂM] = [THÁNG/NĂM] ) .[ĐIỂM ĐÁNH GIÁ - QUẢN LÝ] .SUM() ) |
|
| 3 | THÁNG/NĂM | Ngày giờ | Nhập liệu | Định dạng dd/MM/yyyy | |
| 4 | Khoá dữ liệu | Chọn một | Nhập liệu | Lựa chọn: Khoá dữ liệu | |
| 5 | Phòng/Ban | Tra cứu (Lookup) | Tự lấy (tra cứu) | Tra cứu, cột [Ban]. Biểu thức: '0.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user]=[NHÂN SỰ]&&CurrentValue.[user]!="").[Ban].LISTCOMBINE() |
1.2 - Bảng đánh giá KPI - Theo hạng mục¶
- Table ID:
tblXcgfL9qutnfK2· Base: Base KPI · Số cột: 7 · Cột chính: NHÂN SỰ - Khoá trong
config/lark-tables.mjs:KPI.THEO_HANG_MUC - Code ONE-ANNA tham chiếu:
apps/api/src/portal/kpi-monthly-seed.js - Cơ cấu cột: 2 công thức · 1 tra cứu · 0 liên kết · 4 cột nhập/hệ thống
| # | Cột | Kiểu | Nguồn giá trị | Chi tiết / công thức | Mô tả trên Base |
|---|---|---|---|---|---|
| 1 | NHÂN SỰ 🔑 | Người (User) | Nhập liệu | Một người | |
| 2 | HẠNG MỤC | Văn bản | Nhập liệu | ||
| 3 | ĐIỂM ĐÁNH GIÁ - NHÂN VIÊN | Công thức | Tự tính (công thức) | Công thức: '1.3 - Bảng đánh giá chi tiết KPI Hàng tháng'.FILTER(CurrentValue.[NHÂN SỰ]=[NHÂN SỰ]&&CurrentValue.[THÁNG/NĂM]=[THÁNG/NĂM]&&CurrentValue.[HẠNG MỤC]=[HẠNG MỤC]).[ĐIỂM ĐÁNH GIÁ - NHÂN VIÊN].SUM() |
|
| 4 | ĐIỂM ĐÁNH GIÁ - QUẢN LÝ | Công thức | Tự tính (công thức) | Công thức: '1.3 - Bảng đánh giá chi tiết KPI Hàng tháng'.FILTER(CurrentValue.[NHÂN SỰ]=[NHÂN SỰ]&&CurrentValue.[THÁNG/NĂM]=[THÁNG/NĂM]&&CurrentValue.[HẠNG MỤC]=[HẠNG MỤC]).[ĐIỂM ĐÁNH GIÁ - QUẢN LÝ].SUM() |
|
| 5 | THÁNG/NĂM | Ngày giờ | Nhập liệu | Định dạng dd/MM/yyyy | |
| 6 | Khoá dữ liệu | Chọn một | Nhập liệu | Lựa chọn: Khoá dữ liệu | |
| 7 | Phòng/Ban | Tra cứu (Lookup) | Tự lấy (tra cứu) | Tra cứu, cột [Ban]. Biểu thức: '0.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user]=[NHÂN SỰ]&&CurrentValue.[user]!="").[Ban].LISTCOMBINE() |
1.3 - Bảng đánh giá chi tiết KPI Hàng tháng¶
- Table ID:
tblcVe8MV2V3lrJD· Base: Base KPI · Số cột: 24 · Cột chính: NHÂN SỰ - Khoá trong
config/lark-tables.mjs:KPI.CHI_TIET_THANG - Code ONE-ANNA tham chiếu:
apps/api/src/portal/kpi-monthly-seed.js - Cơ cấu cột: 7 công thức · 1 tra cứu · 0 liên kết · 16 cột nhập/hệ thống
Ghi chú nghiệp vụ: nhân viên ghi cột tự đánh giá/tài liệu (saveKpiEmployeeRows), quản lý ghi cột chấm (saveKpiManagerRows); nộp/thu hồi qua submitKpiReport, recallKpiReport, submitKpiManagerReport. Thông báo khi nộp: KpiSubmitNotify.js.
| # | Cột | Kiểu | Nguồn giá trị | Chi tiết / công thức | Mô tả trên Base |
|---|---|---|---|---|---|
| 1 | NHÂN SỰ 🔑 | Người (User) | Nhập liệu | Một người | |
| 2 | HẠNG MỤC | Văn bản | Nhập liệu | ||
| 3 | CÔNG VIỆC CHÍNH/KPI | Văn bản | Nhập liệu | ||
| 4 | TRỌNG SỐ | Số | Nhập liệu | Định dạng 0.00% | |
| 5 | ĐƠN VỊ TÍNH | Văn bản | Nhập liệu | ||
| 6 | CÁCH ĐO LƯỜNG | Văn bản | Nhập liệu | ||
| 7 | Quy tắc đánh giá | Chọn một | Nhập liệu | Lựa chọn: Xuôi - Có vượt, Ngược - Có vượt, Xuôi - Không vượt, Ngược - Không vượt | |
| 8 | MỤC TIÊU | Số | Nhập liệu | Định dạng 0.00 | |
| 9 | KẾT QUẢ THỰC ĐẠT - NHÂN VIÊN | Số | Nhập liệu | Định dạng 0.00 | |
| 10 | MỨC ĐỘ HOÀN THÀNH (%) - NHÂN VIÊN | Công thức | Tự tính (công thức) | Công thức: IF( [MỤC TIÊU] = "", "", IF( [MỤC TIÊU] = 0, IF( AND( [Quy tắc đánh giá] = "Ngược - Không vượt", [KẾT QUẢ THỰC ĐẠT - NHÂN VIÊN] = 0 ), 1, "" ), IF( [KẾT QUẢ THỰC ĐẠT - NHÂN VIÊN] = "", 0, IF( AND( [Quy tắc đánh giá] = "Ngược - Có vượt", [Vị trí].CONTAINTEXT("Trực page") ), 2 - ( [KẾT QUẢ THỰC ĐẠT - NHÂN VIÊN] / [MỤC TIÊU] ), IF( [Quy tắc đánh giá] = "Xuôi - Có vượt", [KẾT QUẢ THỰC ĐẠT - NHÂN VIÊN] / [MỤC TIÊU], IF( [Quy tắc đánh giá] = "Xuôi - Không vượt", MIN( 1, [KẾT QUẢ THỰC ĐẠT - NHÂN VIÊN] / [MỤC TIÊU] ), "" ) ) ) ) ) ) |
|
| 11 | ĐIỂM ĐÁNH GIÁ - NHÂN VIÊN | Công thức | Tự tính (công thức) | Công thức: [TRỌNG SỐ]*[MỨC ĐỘ HOÀN THÀNH (%) - NHÂN VIÊN] |
|
| 12 | TÀI LIỆU THAM CHIẾU | Văn bản | Nhập liệu | Đính kèm link kết quả | |
| 13 | KẾT QUẢ THỰC ĐẠT - QUẢN LÝ | Số | Nhập liệu | Định dạng 0.00 | |
| 14 | MỨC ĐỘ HOÀN THÀNH (%) - QUẢN LÝ | Công thức | Tự tính (công thức) | Công thức: IF( [MỤC TIÊU] = "", "", IF( [MỤC TIÊU] = 0, IF( AND( [Quy tắc đánh giá] = "Ngược - Không vượt", [KẾT QUẢ THỰC ĐẠT - QUẢN LÝ] = 0 ), 1, "" ), IF( [KẾT QUẢ THỰC ĐẠT - QUẢN LÝ] = "", 0, IF( AND( [Quy tắc đánh giá] = "Ngược - Có vượt", [Vị trí].CONTAINTEXT("Trực page") ), 2 - ( [KẾT QUẢ THỰC ĐẠT - QUẢN LÝ] / [MỤC TIÊU] ), IF( [Quy tắc đánh giá] = "Xuôi - Có vượt", [KẾT QUẢ THỰC ĐẠT - QUẢN LÝ] / [MỤC TIÊU], IF( [Quy tắc đánh giá] = "Xuôi - Không vượt", MIN( 1, [KẾT QUẢ THỰC ĐẠT - QUẢN LÝ] / [MỤC TIÊU] ), "" ) ) ) ) ) ) |
|
| 15 | ĐIỂM ĐÁNH GIÁ - QUẢN LÝ | Công thức | Tự tính (công thức) | Công thức: [MỨC ĐỘ HOÀN THÀNH (%) - QUẢN LÝ]*[TRỌNG SỐ] |
|
| 16 | DIỄN GIẢI GHI CHÚ | Văn bản | Nhập liệu | ||
| 17 | QUẢN LÝ | Tra cứu (Lookup) | Tự lấy (tra cứu) | Tra cứu, cột [Leader]. Biểu thức: '0.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user]=[NHÂN SỰ]).[Leader].LISTCOMBINE() |
|
| 18 | THÁNG/NĂM | Ngày giờ | Nhập liệu | Định dạng dd/MM/yyyy | |
| 19 | Khoá dữ liệu | Chọn một | Nhập liệu | Lựa chọn: Khoá dữ liệu | |
| 20 | Phòng/Ban | Công thức | Tự tính (công thức) | Công thức: '0.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user]=[NHÂN SỰ]&&[NHÂN SỰ]!="").[Ban].LISTCOMBINE() |
|
| 21 | Vị trí | Công thức | Tự tính (công thức) | Công thức: '0.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user]=[NHÂN SỰ]&&[NHÂN SỰ]!="").[Vị trí].LISTCOMBINE() |
|
| 22 | user_id | Công thức | Tự tính (công thức) | Công thức: '0.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user]=[NHÂN SỰ]&&[NHÂN SỰ]!="").[user_id].LISTCOMBINE() |
|
| 23 | Mức tối đa | Số | Nhập liệu | Định dạng 0.0 | |
| 24 | USER_ID | Văn bản | Nhập liệu |
0.1 - QL Thông tin nhân sự¶
- Table ID:
tbl8GbiNCT1zbGNR· Base: Base KPI · Số cột: 21 · Cột chính: user_id - Khoá trong
config/lark-tables.mjs:KPI.NHAN_SU - Code ONE-ANNA tham chiếu:
apps/api/src/portal/kpi-monthly-seed.js - Liên kết tới: 0.2 - QL Tiêu chí KPI
- Cơ cấu cột: 1 công thức · 0 tra cứu · 1 liên kết · 19 cột nhập/hệ thống
Ghi chú nghiệp vụ: danh sách nhân sự thuộc đối tượng KPI; HR đặt đối tượng áp dụng qua saveKpiEligibility.
| # | Cột | Kiểu | Nguồn giá trị | Chi tiết / công thức | Mô tả trên Base |
|---|---|---|---|---|---|
| 1 | user_id 🔑 | Văn bản | Nhập liệu | ||
| 2 | user | Người (User) | Nhập liệu | Một người | |
| 3 | Leader | Người (User) | Nhập liệu | Nhiều người | |
| 4 | Họ và tên | Văn bản | Nhập liệu | ||
| 5 | Ngày sinh | Ngày giờ | Nhập liệu | Định dạng dd/MM/yyyy | |
| 6 | Ngày hết hạn | Ngày giờ | Nhập liệu | Định dạng dd/MM/yyyy | |
| 7 | Ngày thay đổi vị trí gần nhất | Ngày giờ | Nhập liệu | Định dạng yyyy/MM/dd HH:mm | |
| 8 | Ban | Chọn nhiều | Nhập liệu | Lựa chọn: Ban Giám Đốc, Ban Hành chính Nhân sự, Phòng Công nghệ thông tin, Phòng Kho vận, Phòng Kiểm soát nội bộ, Ban Tài chính - Kế toán, Khối Mua hàng - Cung ứng, Phòng Mua hàng, Phòng Phát triển Dự án, Ban Marketing, Phòng Trải nghiệm khách hàng, Khối Vận Hành - Kinh Doanh, Phòng Marketing miền Nam, Phòng chuyển đổi số và ERP | |
| 9 | Đơn vị | Chọn nhiều | Nhập liệu | 125 lựa chọn (không liệt kê) | |
| 10 | Vị trí | Chọn nhiều | Nhập liệu | 123 lựa chọn (không liệt kê) | |
| 11 | Phân loại | Chọn nhiều | Nhập liệu | Lựa chọn: Cửa hàng, CSKH, Văn phòng, Trực page, Kho vận, Full công, AM, BP Design & Media, Phòng bán hàng (RSM-AM) | |
| 12 | Ngày thay đổi trạng thái làm việc gần nhất | Ngày giờ | Nhập liệu | Định dạng yyyy/MM/dd HH:mm | |
| 13 | Trạng thái làm việc | Chọn nhiều | Nhập liệu | Lựa chọn: Thực tập sinh, Thử việc, Chính thức, Nghỉ thai sản, Nghỉ dài ngày, Nghỉ việc, Chuẩn bị nghỉ việc | |
| 14 | Trạng thái hoạt động | Văn bản | Nhập liệu | ||
| 15 | Ngày bắt đầu làm việc | Ngày giờ | Nhập liệu | Định dạng yyyy/MM/dd HH:mm | |
| 16 | SourceID | Văn bản | Nhập liệu | ||
| 17 | 0.2 - QL Tiêu chí KPI | Liên kết hai chiều | Liên kết bản ghi | Liên kết tới 0.2 - QL Tiêu chí KPI (một bản ghi); cột đối ứng: [USER_ID] | |
| 18 | Đánh giá KPI | Chọn một | Nhập liệu | Lựa chọn: Có, Không | |
| 19 | Trạng thái đánh giá KPI | Công thức | Tự tính (công thức) | Công thức: IF( [Đánh giá KPI] = "", "", IF( OR( [Đánh giá KPI] = "Không", [Trạng thái làm việc].CONTAINTEXT("Nghỉ việc") ), "Hết hiệu lực", "Còn hiệu lực" ) ) |
|
| 20 | Tạo bảng KPI | Checkbox | Nhập liệu | ||
| 21 | Thâm niên | Số | Nhập liệu | Định dạng 0.00 |
0.2 - QL Tiêu chí KPI¶
- Table ID:
tblZpPWzkC0BDaKw· Base: Base KPI · Số cột: 13 · Cột chính: HẠNG MỤC - Khoá trong
config/lark-tables.mjs:KPI.TIEU_CHI - Code ONE-ANNA tham chiếu:
apps/api/src/portal/kpi-monthly-seed.js - Liên kết tới: 0.1 - QL Thông tin nhân sự
- Cơ cấu cột: 1 công thức · 1 tra cứu · 1 liên kết · 10 cột nhập/hệ thống
Ghi chú nghiệp vụ: danh mục tiêu chí KPI; HR sửa qua saveKpiCriteria (màn Cài đặt KPI).
| # | Cột | Kiểu | Nguồn giá trị | Chi tiết / công thức | Mô tả trên Base |
|---|---|---|---|---|---|
| 1 | HẠNG MỤC 🔑 | Văn bản | Nhập liệu | ||
| 2 | CÔNG VIỆC CHÍNH/KPI | Văn bản | Nhập liệu | ||
| 3 | TRỌNG SỐ | Số | Nhập liệu | Định dạng 0.00% | |
| 4 | ĐƠN VỊ TÍNH | Văn bản | Nhập liệu | ||
| 5 | CÁCH ĐO LƯỜNG | Văn bản | Nhập liệu | ||
| 6 | Quy tắc đánh giá | Chọn một | Nhập liệu | Lựa chọn: Xuôi - Có vượt, Ngược - Có vượt, Xuôi - Không vượt, Ngược - Không vượt | |
| 7 | MỤC TIÊU | Số | Nhập liệu | Định dạng 0.0 | |
| 8 | USER_ID | Liên kết hai chiều | Liên kết bản ghi | Liên kết tới 0.1 - QL Thông tin nhân sự (một bản ghi); cột đối ứng: [0.2 - QL Tiêu chí KPI] | |
| 9 | NHÂN SỰ | Tra cứu (Lookup) | Tự lấy (tra cứu) | Tra cứu, cột [user]. Biểu thức: '0.1 - QL Thông tin nhân sự'.FILTER(CurrentValue.[user_id]=[USER_ID]).[user].LISTCOMBINE() |
|
| 10 | NGÀY ÁP DỤNG | Ngày giờ | Nhập liệu | Định dạng yyyy/MM/dd HH:mm | |
| 11 | NGÀY KẾT THÚC | Ngày giờ | Nhập liệu | Định dạng yyyy/MM/dd HH:mm | |
| 12 | TRẠNG THÁI | Công thức | Tự tính (công thức) | Công thức: IF(AND([NGÀY ÁP DỤNG]!="",[NGÀY KẾT THÚC]!=""),IF([NGÀY KẾT THÚC]<=TODAY(),"Hết hiệu lực","Còn hiệu lực"),IF(AND([NGÀY ÁP DỤNG]!="",[NGÀY KẾT THÚC]=""),"Còn hiệu lực","")) |
|
| 13 | Mức tối đa | Số | Nhập liệu | Định dạng 0.0 |