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

يمثّل هذا التقرير الجزء الخاص بالتدريب من تصدير الامتثال لكل شخص الخاص بمزوّد سابق:
هوية الدليل بالإضافة إلى صف واحد لكل شخص عن كل تسجيل في التدريب (حالة الوحدة وتواريخها).

الحبيبية (grain) هنا بصيغة طويلة — شخص × تعيين — لأن هذا هو ما
يعيده `GET /v1/assignments/{id}/enrollments` بالفعل. لا يقوم الاستعلام
بتحويل الوحدات إلى أعمدة (pivot).

<Note>
  إقرارات السياسات ليست جزءًا من هذا التقرير. لا تتوفر في Living Security
  واجهة برمجية لقبول السياسات، لذا فإن تلك الأعمدة القديمة خارج النطاق، وليست
  عملية ربط معلّقة. راجع [الاختلافات عن التصدير القديم](#%D8%A7%D9%84%D8%A7%D8%AE%D8%AA%D9%84%D8%A7%D9%81%D8%A7%D8%AA-%D8%B9%D9%86-%D8%A7%D9%84%D8%AA%D8%B5%D8%AF%D9%8A%D8%B1-%D8%A7%D9%84%D9%82%D8%AF%D9%8A%D9%85).
</Note>

إن الإعداد وبيانات الاعتماد وترقيم الصفحات وإعادة المحاولة عند بلوغ حد المعدل هي نفسها الواردة في
[دليل الاتصال بـ Power BI / Excel](/ar/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`
هي أسماء الواجهة البرمجية العامة؛ ويعيد الاستعلام تسمية بعضها لأغراض التقرير.

| العمود القديم | حقل `/v1` أو طريقة الاشتقاق | عمود التقرير |
| - | - | - |
| Email | `Enrollment.email` | `email` |
| Full name | `Enrollment.display_name` | `full_name` |
| Department | غير موجود في `/v1` | محذوف وليس قيمة فارغة |
| Other directory (title, manager, location, …) | غير موجود في `/v1` — فالكيانات تحمل البريد الإلكتروني واسم العرض فقط. | محذوف |
| Training module / course name | `Course.title`، مع الرجوع إلى `Assignment.title` | `course_name` |
| Assignment / module status | `Enrollment.status` — `not_started` \| `in_progress` \| `completed` \| `overdue` \| `withdrawn` | `enrollment_status` |
| Assigned date | `Enrollment.assigned_at` | `assigned_at` |
| Completed date | `Enrollment.completed_at` | `completed_at` |
| Due date | `Enrollment.due_at` (قد لا يكون التصدير القديم يتضمنه؛ وقد أُدرج لأن الواجهة البرمجية توفره) | `due_at` |
| Policy acceptance / acknowledgement | لا يوجد مجال للسياسات | محذوف |
| Policy name, accepted date | لا يوجد مجال للسياسات | محذوف |

مفاتيح الربط المحتفظ بها لنموذج المخطط النجمي: `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`. ولا يختلق الاستعلام أعمدة فارغة
  لها.
* **تاريخ الاستحقاق مُدرج** حتى لو لم يكن التصدير القديم يتضمنه،
  لأن `Enrollment.due_at` متاح في الواجهة البرمجية.
* **اسم الدورة يفضّل عنوان الكتالوج.** `Course.title` هو اسم
  الوحدة. ولا يُستخدم `Assignment.title` إلا عند غياب صف الكتالوج
  (محذوف أو غير منشور).
* **بصيغة طويلة وليس بتحويل إلى أعمدة.** صف واحد لكل تسجيل، وليس صفًا واحدًا لكل
  شخص مع عمود لكل وحدة.

## الخطوات التالية

<CardGroup cols={2}>
  <Card title="إعداد Power BI وExcel" href="/ar/developers/v1/powerbi">
    بيانات الاعتماد وترقيم الصفحات وتحميل هذه الاستعلامات في Power BI أو Excel.
  </Card>

  <Card title="سجل التصيّد عبر البريد الإلكتروني" href="/ar/developers/v1/reports/email-phishing-log">
    تفاعلات التصيّد على مستوى الأحداث خلال آخر 12 شهرًا.
  </Card>

  <Card title="المستخدمون الأكثر عرضة للخطر" href="/ar/developers/v1/reports/most-susceptible-users">
    ملخص لكل شخص خلال 12 شهرًا للنقرات وبيانات الاعتماد والإبلاغ.
  </Card>

  <Card title="مفاتيح API" href="/ar/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.