Phần I — Bắt đầu
1.Tổng quan hệ thống
SlimAI là hệ thống ATS mini: quản lý hồ sơ đa nguồn, tin tuyển dụng public, bài test online, lịch phỏng vấn và email gửi ứng viên.
Ứng viên test: https://slim.vn/tuyendung/phongvan/test/ma-bai-test?invite=token
Admin: https://slim.vn/tuyendung/phongvan/admin.php
Luồng chính: Tin tuyển dụng → Ứng viên nộp hồ sơ (form/email/API) → Bộ phận tuyển dụng xử lý hồ sơ → Gửi link bài test → Xem bài nộp → Lên lịch phỏng vấn → Gửi email cho ứng viên.
2.Đăng nhập & bảo mật
- Truy cập trang đăng nhập. Mặc định sau cài đặt:
admin/admin123— hãy đổi ngay sau lần đầu. - Cài đặt → Đổi mật khẩu: nhập mật khẩu cũ, mật khẩu mới (tối thiểu 6 ký tự) và xác nhận.
- Mỗi bài test có mật khẩu riêng cho ứng viên (mặc định
slimai), không liên quan mật khẩu admin.
Phần II — Tuyển dụng & hồ sơ
3.Tin tuyển dụng & Careers
- Tin tuyển dụng trong admin: tạo JD, gắn bài test, bật Bắt buộc làm test nếu muốn redirect sau ứng tuyển.
- Trang public careers.php liệt kê tin đang mở; chi tiết tại
job.php?slug=.... - Cấu hình logo & lời giới thiệu trang public tại Cài đặt → Trang tuyển dụng.
- Form ứng tuyển tạo hồ sơ nguồn application kèm upload CV.
4.Hồ sơ đa nguồn
Menu Hồ sơ là trung tâm ATS. Bốn nguồn hồ sơ:
- Form ứng tuyển — careers / job.php
- Email IMAP — quét hộp thư tuyển dụng
- Thủ công — nhân sự tạo từ trang quản trị
- API Agent — tích hợp AI/automation (xem mục 16)
Trang chi tiết hồ sơ gộp: thông tin, CV, link test, bài nộp, lịch phỏng vấn.
5.Link bài test cá nhân
- Tạo từ trang Hồ sơ → Sửa khi bài test đang mở.
- URL dạng
/test/{slug}?invite=TOKEN— ứng viên vào thẳng bài test, không cần nhập mật khẩu chung. - Prefill tên/SĐT/trường/CV/portfolio từ hồ sơ; khóa email theo hồ sơ.
- Hết hạn: sau ngày phỏng vấn + N ngày (Cài đặt) hoặc mặc định nếu chưa có lịch phỏng vấn.
6.Quét email IMAP
- Cấu hình tại Hồ sơ → Tích hợp email.
- Cần PHP extension
imapvà cron chạyphp cron/scan-email.phpmỗi X phút. - Tên ứng viên = tiêu đề email; email + file CV đính kèm; SĐT do bộ phận tuyển dụng nhập tay sau.
- Chống trùng qua
message_id.
7.Cấu hình trạng thái
Cài đặt → Trạng thái: thêm/sửa/xóa trạng thái pipeline và lịch PV; kéo thả đổi thứ tự; đổi mã sẽ cập nhật hồ sơ/bài nộp đang dùng. Workflow rules điều khiển trạng thái tự động khi gửi email mời phỏng vấn/từ chối hoặc lên lịch phỏng vấn.
Phần III — Bài test
8.Quản lý bài test
Vào Bài test → + Tạo bài test mới hoặc Sửa bài có sẵn.
| Trường | Mô tả |
|---|---|
| Tiêu đề | Tên hiển thị cho ứng viên và email |
| Slug (URL) | Mã trong link, VD: ai-developer-intern → https://slim.vn/tuyendung/phongvan/test/ai-developer-intern |
| Mật khẩu truy cập | Ứng viên phải nhập đúng mới vào làm bài |
| Email admin nhận kết quả | Nhận email khi có người nộp bài (có link xem bài mobile) |
| Bật / Mở / Đóng | Tắt bài test hoặc giới hạn khung thời gian mở |
Sau khi tạo, bấm Phần & câu hỏi để soạn đề.
9.Phần & câu hỏi
Mỗi bài test chia thành nhiều phần. Ứng viên làm theo wizard — mỗi lần chỉ thấy một phần (hiển thị «Phần X/Y», không lộ tên phần).
Thêm / sửa phần
- Tên phần: chỉ admin thấy (VD: «Kiến thức PHP»).
- Ghi chú nội bộ: hiện khi bộ phận tuyển dụng xem bài nộp, ứng viên không thấy.
Quản lý câu hỏi trong phần
- Sửa inline: chỉnh trực tiếp nội dung câu trên danh sách.
- Kéo thả: đổi thứ tự câu hỏi (SortableJS).
- Nhập hàng loạt: mỗi dòng một câu; có thể thay thế toàn bộ câu cũ.
- Đánh số câu liên tục xuyên suốt bài test (phần không đánh số riêng).
10.Luồng ứng viên làm bài
- Mở link bài test → nhập mật khẩu bài test.
- Điền thông tin: họ tên, ngày sinh, SĐT, email, trường, ngành, CV/portfolio (nếu có).
- Làm từng phần → TIẾP THEO / NỘP BÀI ở phần cuối.
- Trang cảm ơn sau khi nộp thành công.
Tính năng tự động phía ứng viên:
- Lưu nháp câu trả lời vào trình duyệt (localStorage) — refresh không mất bài.
- Tracking ngầm: đổi tab, copy/paste (bộ phận tuyển dụng xem trong chi tiết bài nộp).
- Mỗi email chỉ nộp một lần cho mỗi bài test.
- Email xác nhận tự gửi cho ứng viên (nếu bật trong Cài đặt).
11.Xem & xử lý bài nộp
Bài nộp — lọc theo bài test, trạng thái, ngày, từ khóa, thời gian làm bài.
Trạng thái hồ sơ
Mới nộp → Đang xem xét → Có tiềm năng → Đã lên lịch phỏng vấn → Đã phỏng vấn → Đạt / Không phù hợp / Lưu trữ. Đổi nhanh bằng dropdown trên danh sách hoặc trong chi tiết.
Chi tiết bài nộp
- Thông tin cá nhân, toàn bộ câu trả lời theo phần.
- Theo dõi hành vi: đổi tab, paste — mức rủi ro Thấp / Trung bình / Cao.
- Link xem nhanh: gửi trong email admin; mở trên điện thoại, không cần đăng nhập; tự đóng sau giới hạn lượt xem / thời gian.
- In / PDF, Copy bài làm, ghi chú tuyển dụng.
Email thông báo khi có bài mới
Admin nhận email kèm nút «Xem toàn bộ bài làm» → link view.php?token=... tối ưu mobile, hết hạn tự động để bảo mật đề bài.
Phần IV — Phỏng vấn & email
12.Quản lý lịch phỏng vấn
Vào Lịch phỏng vấn để xem, lọc và quản lý toàn bộ lịch phỏng vấn đã lên cho ứng viên.
Tạo lịch phỏng vấn
- Từ menu Lịch phỏng vấn → + Tạo lịch phỏng vấn, hoặc từ chi tiết bài nộp bấm Lên lịch phỏng vấn.
- Chọn hồ sơ ứng viên, nhập ngày giờ, địa điểm / link online, người phỏng vấn.
- Lưu & gửi email mời phỏng vấn để vừa lưu lịch vừa gửi email tự động.
- Khi lưu lịch ở trạng thái «Đã lên lịch», hồ sơ tự chuyển sang Đã lên lịch phỏng vấn.
Trạng thái lịch phỏng vấn
| Trạng thái | Ý nghĩa |
|---|---|
| Đã lên lịch | Buổi phỏng vấn sắp diễn ra |
| Đã hoàn thành | Phỏng vấn xong — hồ sơ chuyển «Đã phỏng vấn» |
| Đã hủy | Lịch bị hủy, không đổi trạng thái hồ sơ tự động |
| Không đến | Ứng viên vắng mặt |
Gửi email & Dashboard
- Trên danh sách lịch phỏng vấn hoặc chi tiết hồ sơ, bấm Gửi email — hệ thống tự điền ngày/giờ/địa điểm từ lịch đã lưu.
- Dashboard hiển thị Phỏng vấn hôm nay, Phỏng vấn tuần này và bảng lịch sắp tới.
- Một hồ sơ có thể có nhiều lịch phỏng vấn (ví dụ vòng 1, vòng 2).
13.Gửi email cho ứng viên
Trên trang Bài nộp hoặc chi tiết hồ sơ, bấm Email / Gửi email mời phỏng vấn để mở form gửi:
| Loại | Khi nào dùng | Trạng thái tự cập nhật |
|---|---|---|
| Mời phỏng vấn trực tiếp | Hẹn ngày, giờ, địa điểm / link online | Đã lên lịch phỏng vấn |
| Từ chối khéo | Cảm ơn và từ chối lịch sự | Không phù hợp |
| Hỏi thêm thông tin | Yêu cầu bổ sung hồ sơ / portfolio | Đang xem xét |
- Chọn loại → hệ thống tải mẫu đã điền sẵn tên, email, bài test… (nếu đã có lịch phỏng vấn, tự điền ngày/giờ/địa điểm).
- Chỉnh tiêu đề & nội dung bằng trình soạn HTML (Quill).
- Tải lại mẫu nếu muốn reset theo cài đặt gốc.
- Bỏ tick «Tự cập nhật trạng thái» nếu chỉ gửi email mà không đổi trạng thái.
14.Cài đặt Email / SMTP
Tab Email
- SMTP: chọn SMTP (khuyến nghị), nhập host/port/TLS, username/password, From email & tên. Gmail: dùng App Password, port 587 TLS.
- Gửi email test: lưu SMTP trước, nhập email nhận thử → Gửi test.
- Link xem bài: số giờ hết hạn và số lượt xem tối đa cho link trong email admin.
- Mẫu email: admin nhận bài mới, xác nhận ứng viên, mời phỏng vấn, từ chối, hỏi thêm — chỉnh bằng HTML editor.
- Nhật ký email: 50 email gần nhất, trạng thái OK/Lỗi.
Tab Đổi mật khẩu
Đổi mật khẩu đăng nhập admin (khác mật khẩu bài test của ứng viên).
15.Biến trong mẫu email
Chèn vào tiêu đề hoặc nội dung — hệ thống thay bằng dữ liệu thật khi gửi:
{full_name} — Họ tên{email} — Email ứng viên{phone} — Số điện thoại{university} — Trường{major} — Ngành{cv_link} — Link CV{portfolio_link} — Portfolio{test_title} — Tên bài test{duration} — Thời gian làm{submitted_at} — Thời điểm nộp{view_url} — Link xem bài (mobile){admin_url} — Link admin (cần đăng nhập){interview_date} — Ngày phỏng vấn{interview_time} — Giờ phỏng vấn{interview_location} — Địa điểm / link{hr_note} — Nội dung hỏi thêm{app_name} — SlimAIPhần V — Tích hợp & vận hành
16.API Agent & Skill AI
SlimATS có REST API để AI agent / automation điều khiển tin tuyển dụng, hồ sơ, bài test, lịch phỏng vấn, email… Lấy Bearer key tại Cài đặt → API Agent.
16.1 REST API chính
- Base URL:
https://slim.vn/tuyendung/phongvan/api/agent.php?path=... - Header bắt buộc:
Authorization: Bearer <agent_api_key> - Smoke test:
GET ?path=healthrồiGET ?path=meta
curl -H "Authorization: Bearer YOUR_API_KEY" \ "https://slim.vn/tuyendung/phongvan/api/agent.php?path=health"
Endpoint thường dùng:
profiles, profiles/search, profiles/bulkprofiles/{id}/email, profiles/{id}/test-invitejobs, tests, tests/{id}?expand=1interviews, submissions, settingsoperations/imap-scanAPI legacy vẫn hoạt động: POST https://slim.vn/tuyendung/phongvan/api/profiles.php với JSON {"full_name":"...","email":"...","job_posting_id":1,"create_test_invite":true}.
16.2 Skill slimats-agent (khuyến nghị)
Skill public trên GitHub giúp Cursor / Codex / Claude Code gọi SlimATS qua prompt thường — không cần cài MCP.
- Repo: github.com/slimsoftvietnam/slimats-agent
- Clone và copy skill vào project:
git clone https://github.com/slimsoftvietnam/slimats-agent.git cp -r slimats-agent/skills/slimats-agent .cursor/skills/
- Trong chat agent, ghi: Dùng skill slimats-agent kèm Base URL và API key.
- Prompt mẫu có sẵn trong repo:
examples.md, use case UC-01 → UC-13 trongusecases.md.
16.3 MCP (tùy chọn)
Nếu muốn dùng MCP trong Cursor, cấu hình tại Cài đặt → API Agent (thư mục mcp-server/, chạy npm install một lần). MCP có ~30 tools tương đương REST API.
Không bắt buộc MCP nếu đã dùng skill slimats-agent hoặc tự gọi REST/curl.
17.Agent cho HR — tác vụ thường gặp
Mục này dành cho HR không cần biết kỹ thuật: kết nối AI agent (Cursor, Codex, Claude Code, ChatGPT có gọi API…) với SlimATS một lần, sau đó ra lệnh bằng tiếng Việt tự nhiên.
17.1 Kết nối agent với SlimATS (làm một lần)
- Nhờ admin lấy API key tại Cài đặt → API Agent.
- Mở chat agent, dán đoạn thiết lập sau (thay key thật):
Bạn điều khiển SlimATS (phần mềm tuyển dụng) qua REST API. Base URL: https://slim.vn/tuyendung/phongvan/api/agent.php Authorization: Bearer YOUR_API_KEY Quy tắc: 1. Khi cần dữ liệu thật, gọi API — không suy đoán. 2. Gọi ?path=health rồi ?path=meta trước khi làm việc phức tạp. 3. Trước khi gửi email hàng loạt hoặc đổi trạng thái hàng loạt: liệt kê đối tượng và hỏi xác nhận. 4. Trả lời tiếng Việt, ngắn gọn.
Nếu dùng Cursor/Codex đã cài skill slimats-agent (mục 16.2), chỉ cần ghi: «Dùng skill slimats-agent» kèm Base URL + key.
Kiểm tra kết nối: nhắn «Test kết nối SlimATS, báo có bao nhiêu job và bài test» — agent phải trả về số liệu thật, không bịa.
17.2 Tác vụ thường gặp — nói với agent thế nào
| Việc cần làm | Ví dụ câu lệnh cho agent |
|---|---|
| Thêm ứng viên | «Thêm 3 ứng viên sau vào job Marketing: Nguyễn Văn A — a@gmail.com — 0901…, …» |
| Upload CV vào hồ sơ | «Upload file CV này vào profile #15, đặt làm CV chính» |
| Lọc ứng viên tiềm năng | «Cho tôi top 10 ứng viên tiềm năng nhất của job #2» |
| Xem chi tiết hồ sơ | «Xem hồ sơ #15 kèm lịch phỏng vấn và file đính kèm» |
| Đổi trạng thái + ghi chú | «Chuyển profile #15 sang shortlisted, ghi chú: CV tốt, mời PV tuần sau» |
| Gửi link bài test | «Tạo link bài test cho ứng viên #8» — bài test phải đang mở |
| Gửi email mời phỏng vấn | «Gửi email mời PV cho profile #15, ngày 20/7 14h, link Meet: …» |
| Lên lịch phỏng vấn | «Lên lịch PV profile #5 ngày 20/7 14h online, người PV: chị Hoa, gửi email luôn» |
| Xem lịch tuần | «Tuần này có những buổi phỏng vấn nào?» |
| Xem bài nộp test | «Liệt kê bài nộp bài test #3 tuần này, ai điểm cao nhất?» |
| Quét email lấy CV | «Quét hộp thư tuyển dụng lấy hồ sơ mới» — cần bật IMAP trước |
| Workflow nhiều bước | «Job Marketing: lọc top 5, mời test người chưa nộp, báo cáo ai đã nộp, đề xuất ai lên PV. Chờ tôi duyệt trước khi gửi email» |
17.3 Lưu ý an toàn cho HR
- Luôn yêu cầu agent liệt kê danh sách và chờ xác nhận trước khi gửi email hàng loạt hoặc đổi trạng thái hàng loạt.
- Không dán API key vào chat công khai / nhóm chung — key có toàn quyền trên dữ liệu tuyển dụng.
- Agent chỉ đọc/ghi được qua API; xóa hồ sơ vĩnh viễn vẫn phải làm trong trang quản trị.
examples.md và usecases.md trong repo slimats-agent.
18.Triển khai & cấu hình
- Chạy
install.phpmột lần để tạo database và dữ liệu mẫu. - BASE_URL tự nhận theo domain khi truy cập web. Chỉ cần sửa nếu auto-detect sai: sao chép
config.local.php.example→config.local.phpvà đặtdefine('BASE_URL', 'https://...'); - Thư mục
data/cần quyền ghi cho SQLite — giữ nguyên khi update code, không chạyinstall.php?force=1trên production. - Cấu hình SMTP trước khi dùng email tự động gửi ứng viên.
- Cập nhật cài đặt trang tuyển dụng trên hosting:
php scripts/update-careers-settings.php --config=... - Xóa hoặc chặn truy cập
install.phpsau khi cài xong (bảo mật).
19.Xử lý sự cố thường gặp
- 19.1 Email không gửi được
- Kiểm tra SMTP, gửi email test, xem Nhật ký email (cột Lỗi). Shared hosting thường cần SMTP thay vì PHP mail().
- 19.2 Bấm Email trên Bài nộp không mở form
- Hard refresh (Ctrl+F5). Kiểm tra Console trình duyệt. Đảm bảo đã cấu hình SMTP và có mẫu email trong Cài đặt.
- 19.3 Link xem bài báo «đã đóng»
- Link hết lượt xem hoặc hết hạn — xem lại trong chi tiết bài nộp (admin) hoặc tăng giới hạn trong Cài đặt → Email.
- 19.4 Ứng viên báo không vào được bài test
- Kiểm tra bài test đang Bật, trong khung thời gian mở, mật khẩu đúng, slug URL đúng.
- 19.5 Ứng viên nộp lại cùng email
- Hệ thống cho phép nộp lại — mỗi lần nộp tạo bài mới trong danh sách. Bộ phận tuyển dụng xem bản mới nhất theo thời gian hoặc so sánh các lần nộp.
- 19.6 API Agent trả 401
- Kiểm tra Bearer key tại Cài đặt → API Agent. Gọi
GET ?path=healthtrước khi thao tác phức tạp (xem mục 16). - 19.7 Agent trả lời sai / bịa dữ liệu
- Nhắc agent «gọi API thật, không suy đoán» và kiểm tra đã dán đúng Base URL + API key theo mục 17.1.
Cần hỗ trợ thêm? Liên hệ đội kỹ thuật SlimAI.