1. Mục tiêu khi đưa AI vào HRM
Với hệ thống HRM lớn, AI không nên triển khai kiểu “cho đẹp”, mà phải phục vụ đúng bài toán vận hành. Nên chia làm 4 nhóm use case:
Nhóm 1: AI hỗ trợ nghiệp vụ HR
- Gợi ý trả lời ticket / câu hỏi nội bộ
- Tóm tắt đơn từ, lịch sử trao đổi, ghi chú nhân sự
- Gợi ý phân loại yêu cầu HR
Nhóm 2: AI phân tích dữ liệu nhân sự
- Phát hiện bất thường chấm công / OT / nghỉ phép
- Dự báo nghỉ việc
- Dự báo thiếu hụt nhân sự theo phòng ban
Nhóm 3: AI cho tuyển dụng
- Matching CV với job
- Tóm tắt hồ sơ ứng viên
- Ranking candidate
Nhóm 4: AI cho self-service
- Chatbot nội bộ cho nhân viên:
- tra cứu policy
- tra cứu quy trình
- giải thích đơn nghỉ phép / công / lương
2. Nguyên tắc kiến trúc cho hệ thống 7000 user
Với quy mô 7000 user, nguyên tắc quan trọng nhất là:
2.1. AI không được nằm trực tiếp trong request chính
Không để:
- form open
- onchange
- create/write
- approve action
gọi AI trực tiếp.
Vì sẽ gây:
- chậm giao diện
- timeout
- tăng tải worker Odoo
- khó kiểm soát lỗi provider AI
👉 AI chỉ nên chạy theo 3 kiểu:
- async job
- cron batch
- background compute theo event
2.2. AI là lớp phụ trợ, không phải source of truth
Source of truth vẫn là:
- dữ liệu HRM trong Odoo
- rule nghiệp vụ
- workflow approval hiện có
AI chỉ:
- gợi ý
- chấm điểm
- cảnh báo
- tóm tắt
Không để AI:
- tự approve lương
- tự approve nghỉ phép
- tự chốt điều chuyển
- tự sửa dữ liệu nhân sự quan trọng
2.3. Tách riêng AI service layer
Không gọi provider AI rải rác trong module HR, payroll, attendance.
Phải có 1 lớp trung gian chuẩn hóa:
- prompt builder
- retry
- timeout
- logging
- cache
- security masking
3. Kiến trúc tổng thể đề xuất
3.1. High-level architecture
[User/UI Odoo]
|
v
[HRM Modules]
(hr.employee, attendance, leave, payroll, recruitment, helpdesk)
|
v
[AI Orchestrator Layer]
– AI Gateway
– Prompt Builder
– Policy / Masking
– Queue Dispatcher
– Result Parser
– Cache
|
+———————+
| |
v v
[LLM Provider] [ML / Rule Engine]
(OpenAI/Azure/local) (anomaly, scoring, forecast)
|
v
[AI Result Storage]
– ai.job
– ai.result
– ai.audit.log
– score fields on business models
3.2. Các thành phần chính
A. Odoo business modules
Ví dụ:
- hr.employee
- hr.attendance
- hr.leave
- hr.contract
- hr.payslip
- hr.applicant
- helpdesk.ticket hoặc module nội bộ hỏi đáp HR
Đây là nơi phát sinh event nghiệp vụ.
B. AI Gateway module
Tạo 1 module nền kiểu:
- vti_ai_base
- hoặc hr_ai_core
Module này chịu trách nhiệm:
- kết nối provider AI
- timeout
- retry
- log request/response
- routing model
- cost tracking
Ví dụ abstract service:
from odoo import models, api
import logging
_logger = logging.getLogger(__name__)
class AiGateway(models.AbstractModel):
_name = ‘ai.gateway’
_description = ‘AI Gateway’
def call_llm(self, task_type, payload, config=None):
config = config or {}
provider = self._get_provider(task_type)
prompt = self._build_prompt(task_type, payload)
prompt = self._mask_sensitive_data(prompt)
try:
result = provider.execute(prompt, config=config)
self._log_success(task_type, payload, result)
return result
except Exception as e:
self._log_error(task_type, payload, e)
return False
C. Queue / async processing
Khuyến nghị:
- dùng cron + bảng queue riêng
- hoặc queue_job nếu hệ thống đang dùng tốt
- hoặc job table custom nếu muốn kiểm soát sâu
Ví dụ model queue:
- ai.job
- ai.result
ai.job lưu:
- model
- record_id
- task_type
- payload
- priority
- state
- retry_count
- requested_by
- started_at
- finished_at
- error_message
D. Rule Engine / ML Engine
Không phải bài nào cũng cần LLM.
Nên tách 2 hướng:
LLM use case
Phù hợp cho:
- tóm tắt
- chatbot
- generate nội dung
- giải thích policy
- CV summary
Rule / ML use case
Phù hợp cho:
- anomaly attendance
- OT abnormal detection
- attrition scoring
- leave abuse detection
- candidate ranking theo structured data
Tức là:
- cái gì có cấu trúc rõ, nên dùng rule/ML trước
- cái gì là ngôn ngữ tự nhiên, mới dùng LLM
4. Kiến trúc dữ liệu đề xuất
4.1. Model nền cho AI
ai.job
Quản lý hàng đợi AI
Field gợi ý:
- name
- task_type
- model_name
- record_id
- payload_json
- state (draft, queued, processing, done, failed)
- priority
- retry_count
- requested_by
- result_id
- error_message
- started_at
- finished_at
ai.result
Lưu kết quả AI
Field gợi ý:
- job_id
- task_type
- model_name
- record_id
- response_text
- response_json
- score
- confidence
- provider
- token_usage
- cost_estimate
- approved_by_user
- is_applied
ai.audit.log
Lưu audit để debug và compliance
Field gợi ý:
- job_id
- request_summary
- masked_fields
- provider_status
- latency_ms
- error_trace
4.2. Gắn score vào model nghiệp vụ
Ví dụ:
hr.employee
- ai_attrition_score
- ai_attrition_note
- ai_last_analyzed_at
hr.attendance
- ai_anomaly_score
- ai_anomaly_reason
- ai_review_state
hr.applicant
- ai_match_score
- ai_resume_summary
- ai_rank
hr.leave
- ai_risk_flag
- ai_risk_note
5. Các use case quan trọng cho HRM 7000 user
5.1. Attendance anomaly detection
Mục tiêu
Phát hiện:
- check-in/out bất thường
- OT bất thường
- chấm công lệch pattern
- nhân viên có xu hướng vi phạm
Flow đề xuất
attendance imported / synced
->
rule engine check
->
if suspicious -> create ai.job
->
AI summarize abnormal pattern
->
show to HR approver
Tại sao phải rule trước, AI sau
Vì 7000 user tạo rất nhiều log chấm công. Nếu record nào cũng gọi AI thì quá nặng.
Nên pipeline là:
Bước 1: filter bằng SQL/rule
Ví dụ:
- đi muộn > 3 lần / tuần
- OT > 40h / tháng
- check-in ngoài khung giờ thường
- device/location mismatch
Bước 2: chỉ record nghi ngờ mới tạo AI job
AI sẽ:
- tóm tắt pattern
- giải thích mức độ rủi ro
- gợi ý cần HR review hay không
5.2. Leave request risk scoring
Mục tiêu
Khi nhân viên tạo đơn nghỉ:
- không dùng AI để approve
- chỉ đánh dấu risk
Risk factors
- nghỉ sát ngày
- nghỉ trùng nhiều người cùng team
- lịch sử nghỉ bất thường
- nghỉ nhiều quanh ngày lễ
- nhân viên đang ở giai đoạn critical project
Kiến trúc
- rule engine tính base score
- AI chỉ tạo summary cho manager/HR
Ví dụ note:
- “Nhân viên đã có 4 đơn nghỉ đột xuất trong 60 ngày gần nhất”
- “Bộ phận hiện có 3 người nghỉ cùng ngày”
- “Nghỉ vào giai đoạn chốt payroll”
5.3. Attrition prediction
Mục tiêu
Dự báo nhân viên có nguy cơ nghỉ việc.
Nguồn dữ liệu
- attendance trend
- OT trend
- leave pattern
- performance history
- internal transfer
- manager change
- compensation movement
- survey / feedback nếu có
Kiến trúc phù hợp
Bài này không nên dùng LLM làm lõi.
Nên dùng:
- rule-based scoring trước
- sau đó nếu cần thì ML model riêng
- LLM chỉ để giải thích score thành ngôn ngữ dễ hiểu
Ví dụ:
- ML output: 0.78
- LLM chuyển thành:
- “Nguy cơ nghỉ việc ở mức cao do OT kéo dài, tần suất nghỉ đột xuất tăng và thay đổi quản lý gần đây.”
5.4. Recruitment AI
Chức năng nên có
- CV parsing
- CV summary
- Job matching
- candidate ranking
- question suggestion cho interviewer
Pipeline
CV upload
->
extract text
->
structured parsing
->
match with job requirement
->
store score + summary
->
recruiter review
Gợi ý kỹ thuật
- text extraction tách riêng khỏi LLM
- match score nên có rule + keyword + embedding, không chỉ prompt text đơn thuần
- summary có thể dùng LLM
5.5. HR chatbot nội bộ
Mục tiêu
Cho nhân viên hỏi:
- còn bao nhiêu phép
- quy định OT là gì
- nghỉ cưới được mấy ngày
- khi nào nhận lương
- hồ sơ bảo hiểm cần gì
Kiến trúc chuẩn
Không để chatbot chỉ gọi LLM “hỏi gì trả lời nấy”.
Phải theo kiểu RAG nội bộ:
User question
->
Intent detection
->
If structured data question:
query Odoo directly
If policy question:
retrieve docs / knowledge base
->
LLM generate answer from retrieved context
Ví dụ
Câu hỏi structured
“Tôi còn bao nhiêu ngày phép?”
- không cần LLM
- query trực tiếp Odoo
Câu hỏi policy
“Nghỉ thai sản cần hồ sơ gì?”
- retrieve policy doc
- LLM chỉ rephrase / summarize
6. Phân lớp kỹ thuật chi tiết
6.1. Layer 1 – Trigger layer
Phát sinh từ:
- cron
- button action
- create/write event
- import/sync complete
- user manual request
Nhưng trigger chỉ nên tạo job, không gọi AI ngay.
Ví dụ:
def action_queue_ai_analysis(self):
for rec in self:
self.env[‘ai.job’].create({
‘task_type’: ‘attendance_anomaly’,
‘model_name’: rec._name,
‘record_id’: rec.id,
‘payload_json’: rec._prepare_ai_payload(),
‘state’: ‘queued’,
‘priority’: 50,
})
6.2. Layer 2 – Dispatcher layer
Cron xử lý queue theo batch nhỏ.
Ví dụ:
- mỗi 1 phút lấy 20 job
- chia theo priority
- lock record để tránh double process
6.3. Layer 3 – AI execution layer
Chịu trách nhiệm:
- build prompt
- gọi provider
- parse response
- validate output schema
Không được write business data ngay nếu chưa qua validation.
6.4. Layer 4 – Result application layer
Chỉ apply những field an toàn:
- summary
- score
- flag
- suggested_action
Các field nhạy cảm:
- lương
- trạng thái hợp đồng
- trạng thái đơn phê duyệt
thì chỉ để user xác nhận.
7. Thiết kế hạ tầng để không làm chậm Odoo
7.1. Tách Odoo worker và AI worker
Nếu AI job chạy chung worker web:
- user mở form sẽ chậm
- approve payroll dễ lag
Nên tách:
Web workers
Phục vụ người dùng
Background workers
Phục vụ:
- cron AI
- queue AI
- batch scoring
7.2. Không xử lý real-time cho mọi thứ
Với 7000 user:
Nên near real-time
- chatbot
- generate summary theo nút bấm
- candidate summary
Nên batch
- attrition score
- attendance anomaly daily
- leave risk nightly
- OT trend weekly
7.3. Cache kết quả
Ví dụ:
- policy answer
- candidate summary
- employee risk summary
Không nên hỏi lại AI nếu dữ liệu gốc chưa đổi.
Cần có cache key kiểu:
- task_type
- model
- record_id
- version_hash
8. Bảo mật dữ liệu
HRM là vùng cực nhạy cảm.
8.1. Không gửi raw dữ liệu nhạy cảm lên external LLM
Cần mask:
- lương thực nhận
- số tài khoản
- CCCD
- địa chỉ
- số điện thoại
- thông tin y tế
- đánh giá nhạy cảm
8.2. Phân loại dữ liệu trước khi gửi AI
Có thể gửi
- policy text
- JD
- CV đã được consent
- attendance pattern đã ẩn danh một phần
- leave trend dạng tổng hợp
Không nên gửi
- payroll detail đầy đủ
- personal document scan
- disciplinary record nguyên bản
- dữ liệu bảo hiểm chi tiết
8.3. Phân quyền xem kết quả AI
Ví dụ:
- line manager chỉ xem summary thuộc team mình
- HRBP xem score theo phòng ban phụ trách
- HR admin xem full AI log
- end user không xem nội dung risk scoring nội bộ
9. Monitoring và vận hành
9.1. Dashboard cần có
Cho admin / dev:
- số AI job theo trạng thái
- latency trung bình
- fail rate
- token usage
- cost theo ngày
- top task type
- cache hit rate
9.2. Cảnh báo
Cần alert khi:
- fail rate tăng cao
- queue backlog lớn
- provider timeout
- cost vượt ngưỡng
- cron bị treo
10. Kiến trúc module Odoo đề xuất
Có thể tách thành các module sau:
hr_ai_core
Module nền:
- gateway
- queue
- result
- audit
- provider config
hr_ai_attendance
- anomaly detection
- attendance summary
- OT risk summary
hr_ai_leave
- leave risk score
- leave trend analysis
hr_ai_recruitment
- CV summary
- job matching
- interview question suggestion
hr_ai_chatbot
- employee self-service chatbot
- policy RAG
- structured HR query router
hr_ai_retention
- attrition score
- retention summary
- churn trend dashboard
11. Kiến trúc theo giai đoạn triển khai
Giai đoạn 1: low-risk, high-value
Nên làm trước:
- HR chatbot policy
- CV summary
- candidate matching
- attendance anomaly summary
- leave risk flag
Vì:
- dễ thấy hiệu quả
- ít rủi ro nghiệp vụ
- không can thiệp trực tiếp approval
Giai đoạn 2: analytics
- attrition scoring
- manpower forecast
- OT trend prediction
- department risk dashboard
Giai đoạn 3: advanced workflow assist
- manager recommendation
- auto-draft HR response
- smart case routing
- internal knowledge assistant
12. Đề xuất luồng kỹ thuật thực tế cho hệ thống
Nếu áp vào HRM factory 7000 nhân sự, mình sẽ khuyến nghị như sau:
Ưu tiên 1: Attendance + OT anomaly
Vì dữ liệu lớn, có giá trị vận hành cao, dễ thấy bất thường.
Ưu tiên 2: Recruitment AI
Vì tác động trực tiếp tới thời gian xử lý tuyển dụng.
Ưu tiên 3: HR policy chatbot
Giảm tải HR support.
Ưu tiên 4: Attrition dashboard
Dành cho HRBP / manager cấp cao.
13. Mẫu flow cụ thể: Attendance anomaly
[Device/Import/Cron sync attendance]
->
[Rule engine filter suspicious records]
->
[Create ai.job]
->
[Background worker calls AI]
->
[Store ai.result]
->
[Write score + summary to hr.attendance]
->
[HR dashboard shows abnormal cases]
->
[HR confirms / dismisses]
14. Mẫu flow cụ thể: HR chatbot
[Employee asks question]
->
[Intent router]
-> structured data ? -> query Odoo
-> policy question ? -> retrieve policy docs
->
[LLM answer builder]
->
[Return answer + source reference]
15. Kết luận
Với hệ thống HRM 7000 user, kiến trúc AI tốt không nằm ở chỗ “gọi được AI”, mà ở chỗ:
- không làm chậm Odoo
- không phá workflow hiện tại
- không đẩy dữ liệu nhạy cảm ra ngoài bừa bãi
- chỉ dùng AI ở nơi thực sự tạo giá trị
- luôn có lớp rule + review của con người
Nếu làm đúng, AI trong HRM sẽ hữu ích nhất ở 3 vai trò:
- assistant
- analyzer
- warning engine
chứ không phải decision maker.
Vui lòng đăng nhập để bình luận.