# Tổng hợp Chức năng Hệ thống HanhChinhPro

Hệ thống quản lý hồ sơ hành chính thông minh, tích hợp AI OCR để số hóa quy trình nghiệp vụ.

**Phiên bản:** v2.5.0-enterprise  
**Cập nhật lần cuối:** 20/01/2026

---

## 1. Module Quản trị & Bảo mật

### 1.1. Xác thực người dùng
* **Đăng nhập bảo mật:** Hệ thống xác thực người dùng qua username/password với mã hóa bcrypt (salt rounds: 10).
* **Quản lý phiên làm việc:** Lưu trữ thông tin người dùng trong localStorage, tự động gửi headers xác thực cho mọi API request.
* **Đăng xuất:** Hỗ trợ đăng xuất an toàn, tự động ghi log và xóa session.

### 1.2. Quản lý tài khoản
* **Thêm tài khoản mới:** Tạo tài khoản với đầy đủ thông tin (username, fullName, email, role, isActive).
* **Chỉnh sửa tài khoản:** Cập nhật thông tin cá nhân, thay đổi vai trò, email.
* **Xóa tài khoản:** Xóa tài khoản với xác nhận, không cho phép xóa chính mình.
* **Kích hoạt/Khóa tài khoản:** Bật/tắt trạng thái hoạt động của tài khoản (toggle isActive).
* **Cập nhật Profile:** Người dùng có thể tự cập nhật thông tin cá nhân (fullName, username, email).

### 1.3. Quản lý mật khẩu
* **Reset mật khẩu:** Tạo mật khẩu mạnh ngẫu nhiên (12 ký tự) gồm:
  - Chữ thường: a-z (loại trừ l, o)
  - Chữ hoa: A-Z (loại trừ I, O)
  - Số: 2-9 (loại trừ 0, 1)
  - Ký tự đặc biệt: !@#$%&*
* **Mã hóa mật khẩu:** Tất cả mật khẩu được hash bằng bcrypt trước khi lưu vào database.
* **Đổi mật khẩu:** Người dùng có thể đổi mật khẩu với xác thực mật khẩu cũ.

### 1.4. Phân quyền (RBAC - Role-Based Access Control)
* **3 Vai trò chính:**
  - `QUAN_TRI_VIEN`: Toàn quyền truy cập tất cả chức năng
  - `NHAN_VIEN_XU_LY`: Quản lý hồ sơ, tạo mẫu, xử lý OCR
  - `NGUOI_XEM`: Chỉ xem dashboard và thông tin cơ bản

* **7 Nhóm quyền chi tiết:**
  1. **VIEW_DASHBOARD** - Xem Tổng quan (Dashboard và thống kê)
  2. **MANAGE_JOBS** - Quản lý Hồ sơ (Tạo, sửa, tải lên tệp)
  3. **APPROVE_JOBS** - Phê duyệt Hồ sơ (Chuyển trạng thái, chốt in)
  4. **MANAGE_TEMPLATES** - Quản lý Mẫu Hồ sơ (Thiết kế template, cấu hình OCR)
  5. **MANAGE_USERS** - Quản lý Tài khoản (CRUD users, reset password)
  6. **VIEW_LOGS** - Xem Audit Logs (Theo dõi lịch sử thao tác)
  7. **SYSTEM_SETTINGS** - Cài đặt Hệ thống (SMTP, AI, System Info)

* **Quản lý phân quyền:** Admin có thể tùy chỉnh quyền cho từng vai trò, reset về mặc định.

---

## 2. Module Mẫu Hồ sơ (Templates)

### 2.1. Thiết kế biểu mẫu động
* **Tạo mẫu mới:** Định nghĩa tên mẫu, cơ quan thụ lý, mô tả.
* **Sao chép mẫu:** Tạo bản sao mẫu hiện có để chỉnh sửa nhanh.
* **Xóa mẫu:** Xóa mẫu với cảnh báo về ảnh hưởng đến hồ sơ đã tạo.

### 2.2. Quản lý trường dữ liệu
* **Thêm/Xóa trường:** Thêm hoặc xóa các trường dữ liệu động.
* **Định nghĩa kiểu dữ liệu:** Hỗ trợ 5 loại:
  - `text` (VAN_BAN): Văn bản ngắn
  - `number` (SO): Số
  - `date` (NGAY): Ngày tháng
  - `textarea` (VUNG_VAN_BAN): Văn bản dài
  - `select` (DAN_SACH): Danh sách lựa chọn (có options)

* **Cấu hình trường:**
  - Key (mã định danh duy nhất, VD: `TEN_CONG_TY`)
  - Label (tên hiển thị)
  - Type (kiểu dữ liệu)
  - Required (bắt buộc hay không)
  - Options (danh sách lựa chọn cho select)

* **Validation:** Kiểm tra trùng key, đảm bảo mẫu có ít nhất 1 trường.

### 2.3. Cấu hình OCR
* **Mapping Key:** Các key của trường được sử dụng để AI ánh xạ dữ liệu trích xuất.
* **Gợi ý đặt tên:** Key nên rõ ràng, dễ nhận diện (VD: `TEN_CONG_TY`, `MA_SO_THUE`).

---

## 3. Module Xử lý Hồ sơ & OCR AI

### 3.1. Quản lý hồ sơ
* **Tạo hồ sơ mới:** Chọn mẫu từ danh sách, hệ thống tự động tạo ID duy nhất.
* **Danh sách hồ sơ:** Hiển thị tất cả hồ sơ với thông tin cơ bản, trạng thái, ngày cập nhật.
* **Xem chi tiết:** Truy cập chi tiết hồ sơ để xử lý và chỉnh sửa.
* **Xóa hồ sơ:** Xóa hồ sơ với xác nhận.

### 3.2. Số hóa hồ sơ
* **Tải lên tệp:** Hỗ trợ upload nhiều tệp cùng lúc (PDF, hình ảnh).
* **Quản lý tệp đính kèm:**
  - Xem danh sách tệp đã tải lên
  - Xem trước tệp (hình ảnh, PDF)
  - Tải xuống tệp gốc
  - Xóa tệp đính kèm

### 3.3. Trí tuệ nhân tạo OCR
* **Hỗ trợ 3 Provider AI:**
  1. **Google Gemini 2.0 Flash** (Mặc định)
     - Sử dụng API Key từ cấu hình
     - Structured output với JSON schema
     - Model: `gemini-2.0-flash`
  
  2. **Ollama** (Local/On-premise)
     - URL: `http://localhost:11434` (mặc định)
     - Model: `llama3.2-vision` (mặc định)
     - Hỗ trợ vision models
  
  3. **AnythingLLM Enterprise**
     - Tích hợp qua API
     - Hỗ trợ workspace và API Key

* **Tính năng OCR:**
  - Tự động trích xuất dữ liệu từ tệp scan
  - Mapping dữ liệu vào các trường của template
  - Tính toán độ tin cậy (Confidence) cho từng trường (0-1)
  - Cảnh báo trực quan các trường có độ tin cậy thấp (< 0.75)

* **Quy trình OCR:**
  1. Chọn tệp scan (PDF/Ảnh)
  2. AI phân tích và trích xuất dữ liệu
  3. Tự động điền vào form
  4. Hiển thị độ tin cậy cho từng trường
  5. Người dùng kiểm tra và chỉnh sửa

### 3.4. Quản lý trạng thái hồ sơ
* **4 Trạng thái:**
  1. `BAN_NHAP` - Bản nháp: Đang xử lý, chỉnh sửa
  2. `SAN_SANG_IN` - Sẵn sàng in: Đã phê duyệt, có thể in
  3. `DA_IN` - Đã in: Đã in bản cứng
  4. `LUU_TRU` - Lưu trữ: Đã hoàn tất, lưu trữ

* **Luồng chuyển trạng thái:**
  - Bản nháp → Sẵn sàng in (Phê duyệt & Chốt in)
  - Sẵn sàng in → Đã in (Đánh dấu đã in)
  - Sẵn sàng in → Lưu trữ (Lưu trữ trực tiếp)

* **Validation khi phê duyệt:** Kiểm tra các trường bắt buộc đã được điền đầy đủ.

---

## 4. Module In ấn & Xuất bản

### 4.1. Xem trước hồ sơ
* **Modal Preview:** Hiển thị hồ sơ trong cửa sổ pop-up toàn màn hình.
* **Định dạng chuẩn văn bản hành chính:**
  - Header: "CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM"
  - "Độc lập - Tự do - Hạnh phúc"
  - Tên cơ quan thụ lý
  - Tiêu đề mẫu hồ sơ
  - Nội dung các trường dữ liệu
  - Footer: Chữ ký, tem xác nhận

* **Responsive Design:** Tối ưu cho in ấn A4 (210mm width).

### 4.2. In ấn
* **In trực tiếp:** Sử dụng chức năng `window.print()` của trình duyệt.
* **Đánh dấu đã in:** Tự động chuyển trạng thái sang "Đã in" sau khi in.
* **Tùy chỉnh in:** Hỗ trợ các tùy chọn in của trình duyệt (màu, khổ giấy, margin).

### 4.3. Quản lý tệp
* **Tải xuống tệp gốc:** Tải lại các tệp scan đã upload.
* **Xem trước tệp:** Xem trực tiếp hình ảnh và PDF trong modal.

---

## 5. Module Giám sát & Nhật ký (Audit Logs)

### 5.1. Ghi nhận thao tác
* **Tự động ghi log:** Mọi hành động quan trọng đều được ghi lại:
  - Đăng nhập / Đăng xuất
  - Tạo mới / Cập nhật / Xóa hồ sơ
  - Xử lý OCR
  - Phê duyệt hồ sơ
  - Thay đổi quyền
  - Quản lý tài khoản
  - Cấu hình hệ thống

### 5.2. Thông tin chi tiết
* **Mỗi log entry chứa:**
  - Người thực hiện (username, fullName)
  - Hành động (action)
  - Chi tiết (detail)
  - Thời gian (timestamp chính xác)
  - Địa chỉ IP

### 5.3. Giao diện quản lý logs
* **Nhóm theo ngày:** Logs được nhóm theo ngày để dễ theo dõi.
* **Mở rộng/Thu gọn:** Click để xem chi tiết logs trong ngày.
* **Sắp xếp:** Tự động sắp xếp theo thời gian (mới nhất trước).
* **Mặc định mở ngày gần nhất:** Tự động mở rộng ngày có log mới nhất.

### 5.4. Dọn dẹp nhật ký
* **Xóa tất cả logs:** Admin có thể làm sạch toàn bộ nhật ký khi cần thiết.
* **Ghi log dọn dẹp:** Hành động dọn dẹp cũng được ghi lại.

---

## 6. Cấu hình Hệ thống (Settings)

### 6.1. SMTP Settings
* **Cấu hình máy chủ email:**
  - Host (VD: smtp.gmail.com)
  - Port (587 cho TLS, 465 cho SSL)
  - User (tên đăng nhập)
  - Password (mật khẩu)
  - From Email (địa chỉ gửi)
  - Secure (SSL/TLS)

* **Test SMTP:** Gửi email thử nghiệm để kiểm tra cấu hình.

### 6.2. AI Provider Settings
* **Chọn Provider:** Lựa chọn giữa Gemini, Ollama, AnythingLLM.

* **Cấu hình Gemini:**
  - API Key
  - Model (mặc định: `gemini-2.0-flash`)

* **Cấu hình Ollama:**
  - URL (mặc định: `http://localhost:11434`)
  - Model (mặc định: `llama3.2-vision`)

* **Cấu hình AnythingLLM:**
  - URL (mặc định: `http://localhost:3001`)
  - API Key
  - Workspace ID

### 6.3. System Info
* **Thông tin hệ thống:**
  - Dung lượng lưu trữ Database
  - Phiên bản ứng dụng (v2.5.0-enterprise)
  - Môi trường (Development/Production)
  - Ngày backup gần nhất

---

## 7. Dashboard & Thống kê

### 7.1. Thẻ KPI
* **4 chỉ số chính:**
  1. Tổng số hồ sơ
  2. Đang xử lý (Draft)
  3. Sẵn sàng in ấn
  4. Đã lưu trữ

* **Hiển thị trực quan:** Mỗi thẻ có icon, màu sắc riêng, hiệu ứng hover.

### 7.2. Hoạt động gần đây
* **Danh sách hồ sơ:** Hiển thị các hồ sơ được cập nhật gần nhất.
* **Thông tin hiển thị:**
  - Tên hồ sơ (từ trường TEN_CONG_TY hoặc mặc định)
  - Tên mẫu
  - Ngày cập nhật
  - Trạng thái

* **Truy cập nhanh:** Click vào hồ sơ để mở chi tiết.

### 7.3. Thông tin AI
* **Card giới thiệu:** Hiển thị thông tin về AI provider đang sử dụng.
* **Mô tả tính năng:** Giải thích cách AI trích xuất dữ liệu.
* **Nút hành động:** Link nhanh đến trang quản lý hồ sơ.

---

## 8. Hướng dẫn Giao diện (UI/UX)

### 8.1. Thiết kế hiện đại
* **Glassmorphism:** Sử dụng hiệu ứng kính mờ (backdrop-blur) với độ trong suốt.
* **Dark Mode & Light Mode:** Hỗ trợ chuyển đổi theme tự động.
* **Responsive Design:** Tối ưu cho mọi kích thước màn hình (mobile, tablet, desktop).

### 8.2. Micro-animations
* **Spinners:** Loading animations mượt mà.
* **Hover effects:** Hiệu ứng khi di chuột (scale, rotate, shadow).
* **Transition:** Chuyển đổi mượt mà giữa các trạng thái.
* **Active states:** Feedback khi click (scale down).

### 8.3. Giao diện làm việc (Job Detail)
* **Split View Layout:**
  - **Bên trái:** Quản lý tệp đính kèm
    - Grid hiển thị tệp
    - Nút "TẢI LÊN & OCR AI"
    - Xem trước, xóa tệp
    - Loading overlay khi xử lý OCR
  
  - **Bên phải:** Biên tập dữ liệu động
    - Form động theo template
    - Highlight trường có độ tin cậy thấp (màu cam)
    - Hiển thị badge "AI Độ tin cậy: X%"
    - Validation trường bắt buộc

* **Thanh công cụ:**
  - Nút "LƯU BẢN NHÁP"
  - Nút "PHÊ DUYỆT & CHỐT IN" (khi ở trạng thái Bản nháp)
  - Nút "XEM TRƯỚC & IN" (khi ở trạng thái Sẵn sàng in)
  - Nút "ĐÁNH DẤU ĐÃ IN"
  - Nút "LƯU TRỮ"

### 8.4. Hệ thống Modal
* **Modal xem trước hồ sơ:**
  - Full-screen với backdrop blur
  - Nội dung in ấn chuẩn
  - Nút "In bản cứng", "Đánh dấu đã in & In"
  - Đóng modal

* **Modal xem tệp:**
  - Hiển thị hình ảnh/PDF
  - Nút tải xuống
  - Hỗ trợ embed PDF viewer

### 8.5. Navigation
* **Menu điều hướng:** Cấu trúc tinh gọn, dễ truy cập.
* **Breadcrumb:** Hiển thị vị trí hiện tại, hỗ trợ quay lại.
* **Back navigation:** Nút quay lại với icon và animation.

### 8.6. Visual Feedback
* **Màu sắc trạng thái:**
  - Orange: Bản nháp / Độ tin cậy thấp
  - Green: Sẵn sàng in / Độ tin cậy cao
  - Purple: Đã in
  - Slate: Lưu trữ

* **Badge & Labels:** Hiển thị trạng thái, độ tin cậy rõ ràng.
* **Error handling:** Thông báo lỗi rõ ràng, dễ hiểu.

---

## 9. Quy trình vận hành chi tiết (Standard Workflow)

Hệ thống được thiết kế tối ưu theo 5 bước khép kín để đảm bảo tính tự động hóa cao nhất:

### Bước 1: Thiết lập Danh mục (Quản trị viên)
1. Truy cập menu **Mẫu hồ sơ**.
2. Nhấn **Tạo mẫu mới**.
3. Điền thông tin:
   - Tên mẫu (VD: "Đơn xin cấp phép kinh doanh")
   - Cơ quan thụ lý (VD: "Sở Kế hoạch và Đầu tư")
   - Mô tả (tùy chọn)
4. Thêm các trường dữ liệu:
   - Click **Thêm trường**
   - Đặt Key (VD: `TEN_CONG_TY`, `MA_SO_THUE`)
   - Đặt Label (VD: "Tên công ty", "Mã số thuế")
   - Chọn Type (text, number, date, textarea, select)
   - Đánh dấu Required nếu bắt buộc
   - Thêm Options nếu là select
5. **Lưu ý:** Đặt tên key chính xác, rõ ràng giúp AI nhận diện tốt hơn.
6. Nhấn **Lưu mẫu**.

### Bước 2: Khởi tạo Hồ sơ (Nhân viên)
1. Tại trang **Quản lý hồ sơ**, nhấn nút **Tạo hồ sơ mới**.
2. Chọn mẫu hồ sơ tương ứng đã tạo ở Bước 1.
3. Hệ thống tự động:
   - Tạo ID duy nhất cho hồ sơ
   - Khởi tạo form trống theo template
   - Gán trạng thái "Bản nháp"
   - Ghi nhận người tạo và thời gian

### Bước 3: Số hóa & Chạy OCR AI
1. Truy cập vào **Chi tiết hồ sơ** vừa tạo.
2. Ở khu vực bên trái, nhấn nút **TẢI LÊN & OCR AI**.
3. Chọn các tệp scan (PDF hoặc Ảnh) từ máy tính.
4. Hệ thống tự động:
   - Upload tệp lên server
   - Gửi tệp đến AI provider
   - AI phân tích và trích xuất dữ liệu
   - Tính toán độ tin cậy cho từng trường
   - Điền dữ liệu vào form bên phải
   - Hiển thị loading overlay trong quá trình xử lý
5. Sau vài giây, dữ liệu được điền tự động.

### Bước 4: Kiểm soát & Hiệu chỉnh
1. Nhân viên rà soát các ô nhập liệu ở khu vực bên phải.
2. **Ưu tiên kiểm tra:**
   - Các ô có nhãn **"AI Độ tin cậy thấp"** (màu cam)
   - Các trường bắt buộc (có dấu *)
3. Chỉnh sửa trực tiếp nếu:
   - AI nhận diện sai
   - Thiếu thông tin
   - Cần bổ sung dữ liệu
4. Nhấn **LƯU BẢN NHÁP** để bảo toàn dữ liệu.
5. Có thể tải thêm tệp và chạy OCR lại nếu cần.

### Bước 5: Phê duyệt & In ấn
1. Sau khi dữ liệu đã chuẩn xác, nhấn **PHÊ DUYỆT & CHỐT IN**.
2. Hệ thống kiểm tra:
   - Tất cả trường bắt buộc đã được điền
   - Nếu thiếu, hiển thị cảnh báo danh sách trường còn trống
3. Nếu đầy đủ:
   - Hồ sơ chuyển sang trạng thái "Sẵn sàng in"
   - Ghi log phê duyệt
   - Hiển thị các nút mới: "XEM TRƯỚC & IN", "ĐÁNH DẤU ĐÃ IN", "LƯU TRỮ"
4. Nhấn **XEM TRƯỚC & IN**:
   - Mở Modal xem trước hồ sơ
   - Hiển thị định dạng chuẩn văn bản hành chính
   - Kiểm tra nội dung trước khi in
5. Nhấn **In bản cứng**:
   - Mở dialog in của trình duyệt
   - Tùy chỉnh cài đặt in (nếu cần)
   - In hồ sơ
6. Sau khi in, nhấn **ĐÁNH DẤU ĐÃ IN** để chuyển sang trạng thái "Đã in".
7. Cuối cùng, nhấn **LƯU TRỮ** để hoàn tất quy trình.

---

## 10. API & Backend

### 10.1. Authentication
* `POST /api/auth/login` - Đăng nhập
* `GET /api/auth/current` - Lấy thông tin user hiện tại

### 10.2. Users
* `GET /api/users` - Lấy danh sách users
* `POST /api/users` - Tạo/cập nhật user
* `PATCH /api/users/:id/toggle` - Bật/tắt user
* `DELETE /api/users/:id` - Xóa user
* `POST /api/users/:id/reset-password` - Reset mật khẩu
* `PATCH /api/users/:id/profile` - Cập nhật profile

### 10.3. Templates
* `GET /api/templates` - Lấy danh sách templates
* `POST /api/templates` - Tạo/cập nhật template
* `DELETE /api/templates/:id` - Xóa template

### 10.4. Jobs (Hồ sơ)
* `GET /api/jobs` - Lấy danh sách jobs
* `GET /api/jobs/:id` - Lấy chi tiết job
* `POST /api/jobs` - Tạo/cập nhật job
* `DELETE /api/jobs/:id` - Xóa job

### 10.5. Dashboard
* `GET /api/dashboard/stats` - Lấy thống kê dashboard
* `GET /api/system/info` - Lấy thông tin hệ thống

### 10.6. Logs
* `GET /api/logs` - Lấy danh sách logs
* `POST /api/logs` - Tạo log mới
* `DELETE /api/logs` - Xóa tất cả logs

### 10.7. Permissions
* `GET /api/permissions` - Lấy danh sách permissions
* `POST /api/permissions` - Cập nhật permissions

### 10.8. Settings
* `GET /api/settings` - Lấy settings
* `POST /api/settings` - Cập nhật settings
* `POST /api/settings/test-smtp` - Test SMTP

---

## 11. Database Structure

### 11.1. Collections
* **users** - Người dùng hệ thống
  - id, username, fullName, email, role, isActive, password (hashed)

* **templates** - Mẫu hồ sơ
  - id, tenMau, coQuan, moTa, fields[], fileMauPath

* **jobs** - Hồ sơ xử lý
  - id, templateId, templateName, coQuan, trangThai, formData{}, confidence{}, files[], outputFile, nguoiTao, ngayTao, ngayCapNhat

* **logs** - Nhật ký thao tác
  - id, nguoiThucHien, hanhDong, chiTiet, thoiGian, ipAddress

* **permissions** - Phân quyền
  - id, nhom, ten, moTa, allowedRoles[]

* **settings** - Cài đặt hệ thống
  - smtp{}, ai{}

---

## 12. Bảo mật & An toàn

### 12.1. Mã hóa
* Mật khẩu: bcrypt với salt rounds = 10
* Headers xác thực: Base64 encode user info trong headers

### 12.2. Validation
* Kiểm tra quyền truy cập trước mọi thao tác
* Validation dữ liệu đầu vào
* Kiểm tra trùng key trong template fields
* Validation trường bắt buộc khi phê duyệt

### 12.3. Error Handling
* Xử lý lỗi network gracefully
* Thông báo lỗi rõ ràng cho người dùng
* Log lỗi để debug

---

## 13. Tính năng nâng cao

### 13.1. Multi-file OCR
* Hỗ trợ upload và xử lý nhiều tệp cùng lúc
* AI có thể phân tích nhiều trang/tệp để trích xuất dữ liệu đầy đủ

### 13.2. Confidence Scoring
* Tính toán độ tin cậy cho từng trường (0-1)
* Visual feedback với màu sắc (cam = thấp, xanh = cao)
* Giúp người dùng ưu tiên kiểm tra các trường có độ chính xác thấp

### 13.3. Dynamic Form
* Form tự động thay đổi theo template
* Hỗ trợ nhiều kiểu input (text, number, date, textarea, select)
* Validation động theo cấu hình template

### 13.4. File Management
* Lưu trữ tệp dưới dạng base64 trong database
* Hỗ trợ xem trước hình ảnh và PDF
* Tải xuống tệp gốc

---

## 14. Hướng dẫn triển khai

### 14.1. Yêu cầu hệ thống
* Node.js (phiên bản mới nhất)
* MongoDB (local hoặc cloud)
* Backend server (port 1002 mặc định)
* Frontend build tool (Vite)

### 14.2. Cấu hình môi trường
* `MONGO_URI`: Connection string MongoDB (URL encoded password)
* `PORT`: Port backend server (mặc định: 1002)
* `VITE_API_URL`: URL API backend
* `VITE_AI_PROVIDER`: Provider AI (gemini/ollama/anything_llm)
* `VITE_GEMINI_API_KEY`: API Key Gemini (nếu dùng Gemini)
* `VITE_OLLAMA_URL`: URL Ollama server (nếu dùng Ollama)
* `VITE_OLLAMA_MODEL`: Model Ollama (nếu dùng Ollama)

### 14.3. Seed Database
* Chạy `npm run seed` để tạo dữ liệu mẫu
* Tài khoản demo:
  - admin / Admin@2026!Secure#VPEG
  - nv_an / NhanVien@2026!An#Secure
  - viewer / Viewer@2026!ReadOnly#Secure

---

*Tài liệu này được cập nhật tự động dựa trên codebase hiện tại.*  
*Cập nhật lần cuối: 20/01/2026*
