> ## 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.

# 個人合規性

> 根據 /v1 的指派、註冊與課程資料，重現先前供應商的個人訓練合規性匯出內容。

本報告是先前供應商個人合規性匯出內容中的訓練部分：包含目錄身分資訊，以及每位人員每筆訓練註冊各一列的資料（模組狀態與日期）。

資料粒度為長格式（人員 × 指派），因為這正是 `GET /v1/assignments/{id}/enrollments` 本來就會傳回的結構。此查詢不會將模組轉置為資料行。

<Note>
  政策確認不屬於本報告範圍。Living Security 沒有政策接受 API，因此這些舊版資料行不在範圍內，也不是待處理的對應項目。請參閱[與舊版匯出內容的差異](#%E8%88%87%E8%88%8A%E7%89%88%E5%8C%AF%E5%87%BA%E5%85%A7%E5%AE%B9%E7%9A%84%E5%B7%AE%E7%95%B0)。
</Note>

設定、認證、分頁及速率限制重試的做法，均與 [Power BI / Excel 連線指南](/zh-Hant/developers/v1/powerbi)相同。請先新增共用的 `Fn_FetchAll` 查詢；本報告會依名稱呼叫該查詢。

## 必要的金鑰範圍

| 範圍 | 用途 |
| - | - |
| `training:read` | `GET /v1/assignments` 與 `GET /v1/assignments/{id}/enrollments` |
| `course:read` | `GET /v1/courses`（型錄標題） |

## 來源端點

| 端點 | 角色 |
| - | - |
| `GET /v1/assignments` | 指派清單：`assignment_id`、標題、`course_id`、生命週期狀態、`created_at`。此查詢不會依狀態篩選，因此進行中、已暫停及已完成的指派都會出現（歷史合規性）。 |
| `GET /v1/assignments/{id}/enrollments` | 每位學習者的進度。每筆指派分頁巡覽一次。這是事實資料粒度，也是本報告中唯一以電子郵件作為報表聯結鍵的 `/v1` 資源。 |
| `GET /v1/courses` | 將 `course_id` 解析為課程標題（訓練模組名稱）。`Assignment.title` 是活動標籤，不是模組名稱。 |

此查詢**不會**呼叫 `GET /v1/entities`。註冊資料列已包含 `email` 與 `display_name`，而且實體清單中沒有部門或職稱，因此巡覽該清單也無法填入註冊資料列尚未提供的目錄資料行。

### 資料粒度

每筆註冊（人員 × 指派）一列。若同一人員透過兩筆指派被指派相同課程，則會產生兩列。沒有任何註冊的人員不會出現，因為 `/v1` 在沒有電子郵件的情況下無法產生可用的目錄資料列，而自行建立僅含人員的資料列會混用不同的資料粒度。

要求預算：每筆指派依序進行一次分頁巡覽，並受共用的每金鑰速率限制約束。請務必設定 `limit = "500"`。

## 資料行對應

舊版資料行名稱來自您先前供應商的匯出內容。`/v1` 欄位為公開 API 名稱；查詢會為報表將其中部分欄位設定別名。

| 舊版資料行 | `/v1` 欄位或推導方式 | 報表資料行 |
| - | - | - |
| 電子郵件 | `Enrollment.email` | `email` |
| 全名 | `Enrollment.display_name` | `full_name` |
| 部門 | `/v1` 上沒有 | 省略，不填入空值 |
| 其他目錄資訊（職稱、主管、地點等） | `/v1` 上沒有：實體僅包含電子郵件與顯示名稱。 | 省略 |
| 訓練模組／課程名稱 | `Course.title`，若無則退而使用 `Assignment.title` | `course_name` |
| 指派／模組狀態 | `Enrollment.status`：`not_started` \| `in_progress` \| `completed` \| `overdue` \| `withdrawn` | `enrollment_status` |
| 指派日期 | `Enrollment.assigned_at` | `assigned_at` |
| 完成日期 | `Enrollment.completed_at` | `completed_at` |
| 到期日 | `Enrollment.due_at`（舊版匯出內容可能沒有此項目；因 API 提供而納入） | `due_at` |
| 政策接受／確認 | 沒有政策領域 | 省略 |
| 政策名稱、接受日期 | 沒有政策領域 | 省略 |

為星狀結構描述模型保留的聯結鍵：`entity_id`、`assignment_id`、`course_id`、`user_assignment_id`。

此查詢也會保留 `course_slug`、`assignment_title`、`passed`、`attempts`、`assignment_lifecycle_status` 與 `assignment_created_at`。`enrollment_status` 是學習者的進度，而非指派的生命週期（`active` / `paused` / `completed`）。

## 與舊版匯出內容的差異

* **無法取得政策接受資料。** 本平台沒有政策領域，不存在 `/policies`、`/policy_acceptances` 或同等的 `/v1` 資源。請勿將這些資料行視為待處理的對應項目，它們不在範圍內。
* **目錄附加資訊省略而不填入空值。** 部門、職稱、主管與地點不在 `/v1` 上。查詢不會為它們建立空白資料行。
* **包含到期日**，即使舊版匯出內容沒有，因為 API 提供 `Enrollment.due_at`。
* **課程名稱優先採用型錄標題。** `Course.title` 為模組名稱。僅在型錄資料列遺失（已刪除或未發布）時才使用 `Assignment.title`。
* **長格式，不轉置。** 每筆註冊一列，而非每位人員一列、每個模組一個資料行。

## 後續步驟

<CardGroup cols={2}>
  <Card title="Power BI 與 Excel 設定" href="/zh-Hant/developers/v1/powerbi">
    認證、分頁，以及在 Power BI 或 Excel 中載入這些查詢。
  </Card>

  <Card title="電子郵件網路釣魚記錄" href="/zh-Hant/developers/v1/reports/email-phishing-log">
    過去 12 個月的事件層級網路釣魚互動。
  </Card>

  <Card title="最易受攻擊的使用者" href="/zh-Hant/developers/v1/reports/most-susceptible-users">
    每位人員 12 個月的點擊、認證及回報彙總。
  </Card>

  <Card title="API 金鑰" href="/zh-Hant/developers/developer-hub/api-keys">
    在重新整理本報告的金鑰上授予 `training:read` 與 `course:read`。
  </Card>
</CardGroup>


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