> ## Documentation Index
> Fetch the complete documentation index at: https://docs.livingsecurity.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Tuân thủ theo từng cá nhân

> Tái tạo bản xuất dữ liệu tuân thủ đào tạo theo từng cá nhân của nhà cung cấp trước đây từ các assignment, enrollment và course của /v1.

Báo cáo này là phần đào tạo trong bản xuất dữ liệu tuân thủ theo từng cá nhân của nhà cung cấp trước đây: gồm danh tính trong thư mục và một hàng cho mỗi người trên mỗi lượt ghi danh đào tạo (trạng thái và ngày của mô-đun).

Mức chi tiết (grain) ở dạng dài — người × assignment — vì đó chính là dữ liệu mà
`GET /v1/assignments/{id}/enrollments` đã trả về. Truy vấn không
chuyển (pivot) các mô-đun thành cột.

<Note>
  Việc xác nhận chính sách không nằm trong báo cáo này. Living Security không
  có API chấp nhận chính sách, nên các cột cũ đó nằm ngoài phạm vi, chứ không phải là một ánh xạ đang chờ xử lý. Xem [Các điểm khác biệt so với bản xuất cũ](#c%C3%A1c-%C4%91i%E1%BB%83m-kh%C3%A1c-bi%E1%BB%87t-so-v%E1%BB%9Bi-b%E1%BA%A3n-xu%E1%BA%A5t-c%C5%A9).
</Note>

Việc thiết lập, thông tin xác thực, phân trang và thử lại khi bị giới hạn tốc độ giống như trong
[hướng dẫn kết nối Power BI / Excel](/vi/developers/v1/powerbi). Hãy thêm truy vấn dùng chung
`Fn_FetchAll` trước; báo cáo này gọi truy vấn đó theo tên.

## Phạm vi khóa bắt buộc

| Phạm vi | Dùng cho |
| - | - |
| `training:read` | `GET /v1/assignments` và `GET /v1/assignments/{id}/enrollments` |
| `course:read` | `GET /v1/courses` (tiêu đề danh mục) |

## Các endpoint nguồn

| Endpoint | Vai trò |
| - | - |
| `GET /v1/assignments` | Danh sách assignment: `assignment_id`, tiêu đề, `course_id`, trạng thái vòng đời, `created_at`. Truy vấn không lọc theo trạng thái, nên các assignment đang hoạt động, tạm dừng và đã hoàn thành đều xuất hiện (tuân thủ theo lịch sử). |
| `GET /v1/assignments/{id}/enrollments` | Tiến độ theo từng Người học. Một lượt duyệt phân trang cho mỗi assignment. Đây là mức chi tiết của dữ kiện và là tài nguyên `/v1` duy nhất trong báo cáo này có email làm khóa liên kết báo cáo. |
| `GET /v1/courses` | Ánh xạ `course_id` → tiêu đề course (tên mô-đun đào tạo). `Assignment.title` là nhãn chiến dịch, không phải tên mô-đun. |

Truy vấn này **không** gọi `GET /v1/entities`. Hàng enrollment
đã có sẵn `email` và `display_name`, còn danh sách entity không có
phòng ban hay chức danh — nên việc duyệt danh sách đó sẽ không điền thêm
các cột thư mục mà hàng enrollment chưa có.

### Mức chi tiết (grain)

Một hàng cho mỗi enrollment (người × assignment). Một người được gán cùng một
course thông qua hai assignment sẽ tạo ra hai hàng. Người không có
enrollment nào sẽ không xuất hiện — `/v1` không thể tạo ra một hàng thư mục dùng được
nếu thiếu email, và việc tự tạo các hàng chỉ có người sẽ làm lẫn lộn các mức chi tiết.

Ngân sách yêu cầu: một lượt duyệt phân trang cho mỗi assignment, thực hiện tuần tự, trong giới hạn tốc độ dùng chung của mỗi khóa. Luôn đặt `limit = "500"`.

## Ánh xạ cột

Tên cột cũ lấy từ bản xuất của nhà cung cấp trước đây của quý vị. Các trường `/v1`
là tên API công khai; truy vấn đặt bí danh cho một số trường trong báo cáo.

| Cột cũ | Trường hoặc phép suy ra từ `/v1` | Cột trong báo cáo |
| - | - | - |
| Email | `Enrollment.email` | `email` |
| Họ và tên | `Enrollment.display_name` | `full_name` |
| Phòng ban | Không có trên `/v1` | Bị lược bỏ, không để giá trị null |
| Thông tin thư mục khác (chức danh, quản lý, địa điểm, …) | Không có trên `/v1` — entity chỉ có email và tên hiển thị. | Bị lược bỏ |
| Mô-đun đào tạo / tên course | `Course.title`, dự phòng bằng `Assignment.title` | `course_name` |
| Trạng thái assignment / mô-đun | `Enrollment.status` — `not_started` \| `in_progress` \| `completed` \| `overdue` \| `withdrawn` | `enrollment_status` |
| Ngày được gán | `Enrollment.assigned_at` | `assigned_at` |
| Ngày hoàn thành | `Enrollment.completed_at` | `completed_at` |
| Ngày đến hạn | `Enrollment.due_at` (bản xuất cũ có thể không có trường này; được đưa vào vì API có) | `due_at` |
| Chấp nhận / xác nhận chính sách | Không có miền chính sách | Bị lược bỏ |
| Tên chính sách, ngày chấp nhận | Không có miền chính sách | Bị lược bỏ |

Các khóa liên kết được giữ lại cho mô hình lược đồ hình sao: `entity_id`, `assignment_id`,
`course_id`, `user_assignment_id`.

Truy vấn cũng giữ lại `course_slug`, `assignment_title`, `passed`,
`attempts`, `assignment_lifecycle_status` và `assignment_created_at`.
`enrollment_status` là tiến độ của Người học, không phải vòng đời của assignment
(`active` / `paused` / `completed`).

## Các điểm khác biệt so với bản xuất cũ

* **Không có dữ liệu chấp nhận chính sách.** Nền tảng này không có miền
  chính sách — không có `/policies`, `/policy_acceptances` hay tài nguyên `/v1`
  tương đương. Đừng coi các cột đó là ánh xạ đang chờ xử lý. Chúng
  nằm ngoài phạm vi.
* **Các thông tin thư mục bổ sung bị lược bỏ, không để giá trị null.** Phòng ban, chức danh,
  người quản lý và địa điểm không có trên `/v1`. Truy vấn không tự tạo cột
  trống cho các thông tin này.
* **Ngày đến hạn được đưa vào** dù bản xuất cũ có thể không có,
  vì `Enrollment.due_at` có trên API.
* **Tên course ưu tiên tiêu đề trong danh mục.** `Course.title` là tên
  mô-đun. `Assignment.title` chỉ được dùng khi thiếu hàng trong danh mục
  (đã bị xóa hoặc chưa xuất bản).
* **Dạng dài, không pivot.** Một hàng cho mỗi enrollment, không phải một hàng cho mỗi
  người với một cột cho mỗi mô-đun.

## Các bước tiếp theo

<CardGroup cols={2}>
  <Card title="Thiết lập Power BI và Excel" href="/vi/developers/v1/powerbi">
    Thông tin xác thực, phân trang và cách tải các truy vấn này trong Power BI hoặc Excel.
  </Card>

  <Card title="Nhật ký email lừa đảo (phishing)" href="/vi/developers/v1/reports/email-phishing-log">
    Các tương tác lừa đảo (phishing) ở cấp sự kiện trong 12 tháng gần nhất.
  </Card>

  <Card title="Người dùng dễ bị tấn công nhất" href="/vi/developers/v1/reports/most-susceptible-users">
    Tổng hợp theo từng cá nhân trong 12 tháng về lượt nhấp, thông tin xác thực và báo cáo.
  </Card>

  <Card title="Khóa API" href="/vi/developers/developer-hub/api-keys">
    Cấp `training:read` và `course:read` cho khóa dùng để làm mới báo cáo này.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.