Skip to content

Thuật Toán Tính Điểm (Scoring Formula)

Đây là tài liệu chỉ đạo mô hình ngôn ngữ hoặc đoạn mã kịch bản để tự động tính điểm từ các câu hỏi sau khi parse.

1. Xử lý Dữ liệu thô (Trích xuất Health Rank)

  • Bước 1: Ánh xạ đáp án Likert (1-5) hoặc Frequency sang thang điểm 0-100 (Sử dụng cấu hình cfg_scoringcfg_frequency).
  • Bước 2: Xử lý cơ chế reverse. Những câu có reverse=true sẽ bị đảo ngược giá trị (Ví dụ: Trả lời 5 (Tệ nhất) -> Quy đổi thành 0 điểm phần trăm).
  • Lưu ý: Điểm thu được sau Bước 2 được gọi là Health Rank (HR) của câu hỏi đó. Quy tắc cốt lõi: HR càng gần 100 thì sức khoẻ của yếu tố đó càng tốt.

(Ví dụ: CQ02 "Phải OT liên tục" (reverse=true). Nếu user chọn mức 4 (Thường xuyên), điểm HR sẽ là 25/100. Chứng tỏ môi trường làm việc đang ở trạng thái xấu).

2. Công thức tính Điểm Trụ Cột Tổng Quan (IMOI Internal Scores)

Engine sẽ tổng hợp HR từ tất cả các câu hỏi Core + Module được kích hoạt.

  • Input Health Score (Khung Đầu Vào): I_Score = Avg(HR của tất cả câu hỏi có imoi_bucket = 'input')
  • Mediator Health Score (Khung Môi trường): M_Score = Avg(HR của tất cả câu hỏi có imoi_bucket = 'mediator')
  • Output Health Score (Khung Đầu Ra): O_Score = Avg(HR của tất cả câu hỏi có imoi_bucket = 'output' hoặc 'input_v2')

Tính toán Điểm Tối thượng LCN-Effective (TEI Overall): Sử dụng trọng số cấu hình từ config/03_weights.yaml (Input: 20%, Mediator: 40%, Output: 40%). TEI Score = (I_Score * 0.20) + (M_Score * 0.40) + (O_Score * 0.40)

[NEW] Định Danh TEI (TEI Label - Dynamic by Industry): Thay vì dùng chung một thang xếp loại khô khan, LLM phải gán tei_label dựa trên điểm TEI Score và tham chiếu chéo với biến Loại Hình (Module_Type) của nhóm (ví dụ: Marketing, Sales, Tech) từ YAML đầu vào. * Nguồn từ vựng: Tra cứu mục tei_labels trong file config/02_thresholds.yaml. * Cách thức: Map dải điểm TEI vào đúng cột ngữ cảnh ngành nghề (Hoặc dùng General nếu không xác định được ngành). * Cấu trúc hiển thị Label trong output: [Nhãn Tra Cứu] / [Khuyến nghị ngắn]. Mẫu: "Cạn Kiệt Cảm Hứng / Cần đại tu Mediator".

3. Công thức tính Các Chỉ Số Chuyên Sâu (Diagnostic Indices)

Để kích hoạt Red Flags và Pattern, Engine tính toán lại mức độ nghiêm trọng (Severity) của từng mô hình thay vì chỉ nhìn vào điểm Health Rank tổng thể.

3.1. Phân tích JD-R (Job Demands-Resources)

  • Mức độ Nguồn Lực (Job Resources Level): Khả năng cung ứng trang bị, tự chủ. Resources_Level = Avg(HR của các câu có method_tags chứa 'jdr' VÀ reverse=false)
  • Mức độ Áp Lực (Job Demands Level): Do HR là độ "Tốt", ta lấy phần nghịch đảo để định lượng độ "Nặng nề" của áp lực. Demands_Level = 100 - Avg(HR của các câu có method_tags chứa 'jdr' VÀ reverse=true)
  • Chỉ số JD-R Ratio: Resources_Level / Demands_Level. (Nếu Demands_Level < 1, gán bằng 1). Luật: Ratio > 1.2 là khoẻ mạnh; Ratio < 0.8 là cỗ máy vắt kiệt.

3.2. Phân tích Tâm Lý & Xung Đột (Psych Safety & Conflict)

  • Psychological Safety Score: (Điểm An toàn tâm lý - Giữ nguyên nghĩa tốt). Psych_Safety = Avg(HR của các câu có method_tags chứa 'psych_safety')
  • Relationship Conflict Level (Cấp độ Xung đột cá nhân): Nghịch đảo HR để lấy mức độ độc hại. Rel_Conflict_Level = 100 - Avg(HR của các câu CQ07, MS01, MM03... có method_tags chứa 'conflict' VÀ reverse=true)
  • Task Conflict Level (Cấp độ Xung đột nhiệm vụ): Do CQ06 không reverse, HR chính là độ thường xuyên của xung đột công việc. Task_Conflict_Level = HR của CQ06 (Mức tối ưu nằm ở khoảng 40-70).

3.3. Phân tích Kiệt Sức / Duy Trì (Burnout & Viability)

  • Burnout Proxy Level (Báo động Kiệt sức): Nghịch đảo HR để xem "bệnh" nặng thế nào. Burnout_Level = 100 - Avg(HR của câu CQ11 và các câu có subfactor chứa 'burnout_proxy')
  • Team Viability (Năng lực duy trì): Viability_Score = HR của CQ12