دليل المطوّر

طبقة الامتثال من ريجلينت تعترض مخرجات وكلاء الذكاء الاصطناعي وتفحصها لحظياً مقابل 69 نمطاً رقابياً حتمياً وقاعدة معرفة عربية عبر سبع ولايات قضائية. هذا الدليل يشرح كيف تُصدر مفتاحاً، وتُجري أول فحص، وتضبط السياسات. النسخة الإنجليزية على ‏/docs.

1بداية سريعة

من صفر إلى أول قرار امتثال في أقل من دقيقة.

  1. احصل على مفتاح: أنشئ حساباً على ‏/register وأصدر مفتاح واجهة برمجية. يظهر المفتاح الخام (rgl_…) مرة واحدة فقط عند الإصدار — احفظه في مكان آمن.
  2. أرسل مخرجات وكيلك إلى واجهة الفحص قبل أن تصل إلى العميل:
bash
# أرسل رد الوكيل للفحص — الترويسة x-api-key تحمل مفتاحك
curl -X POST https://www.reglint.ai/api/monitor/scan \
  -H "x-api-key: rgl_••••••••" \
  -H "Content-Type: application/json; charset=utf-8" \
  -d '{
    "agent_output": "رقم الهوية الوطنية للعميل هو 2468101213 محفوظ في النظام.",
    "industry": "finance",
    "mode": "full",
    "language": "ar"
  }'

تحصل على قرار امتثال منظَّم. في المثال أعلاه رُصد رقم هوية سعودي فكان القرار REDACT:

json · response
{
  "final_decision": "REDACT",
  "safe_to_deliver": false,
  "violations_count": 2,
  "violations": [
    {
      "violation_id": "SA_NATIONAL_ID",
      "severity": "high",
      "law": "نظام حماية البيانات الشخصية السعودي، المادة 1 + اللوائح التنفيذية",
      "violating_text": "2468101213",
      "recommended_action": "REDACT",
      "floor_violation": false,
      "source": "rules_engine"
    }
  ],
  "redacted_output": "رقم الهوية الوطنية للعميل هو [REDACTED: SA_NATIONAL_ID] محفوظ في النظام.",
  "processing_time_ms": 12039,
  "metadata": { "rag_used": true, "mode": "full", "rag_country": null }
}

الترويسة الصحيحة

استخدم x-api-key لمفاتيح rgl_. الترويسة Authorization: Bearer مخصّصة لجلسات المستخدمين البشر (JWT) فقط.

2واجهة الفحص

POST /api/monitor/scan — الحقل agent_output إلزامي؛ الباقي اختياري بقيم افتراضية آمنة.

حقول الطلب

الحقلالافتراضيالوصف
agent_outputإلزامينص رد الوكيل المراد فحصه.
language"en"القيمة "ar" تُفعّل المسار العربي (كشف الكيانات العربية + قاعدة المعرفة + التصنيف العربي).
industry"general"healthcare | fintech | hr | general — سياق للاسترجاع والحكم.
mode"full""fast" (المحرّك الحتمي فقط) أو "full" (حتمي + طبقة نموذج لغوي). العربية تُرفَع دائماً إلى full.
rules_config{}تجاوزات لكل قاعدة أو لكل مجموعة (انظر مفاتيح المجموعات).
default_actionnullBLOCK | REDACT | ALERT — سقفٌ عامٌ للقواعد الاعتيادية، لا يمسّ الحدود الصلبة.
privacy_mode"strict"strict | trust | authenticated | custom.
custom_policies[]سياسات مخصّصة بلغة طبيعية: [{id, rule, action}].
agent_name
customer_id
"unknown"وسوم للتدقيق والتقارير.

حقول الاستجابة

الحقلالوصف
final_decisionالقرار الكلي: PASS ALERT REDACT BLOCK ALERT_HITL (الأعلى شدةً عبر كل المخالفات).
safe_to_delivertrue فقط عند PASS أو ALERT.
violations[]لكل مخالفة: violation_id، severity، law (الاسم والمادة)، violating_text، recommended_action، floor_violation، source.
floor_violationtrue إذا كانت المخالفة حدّاً صلباً (يبقى الوسم حتى لو خُفّض الإجراء — انظر سيادة العميل).
redacted_outputالنص بعد التنقيح، أو [HELD_FOR_REVIEW] / [BLOCKED].
metadata.rag_countryالدولة المكتشَفة ("sa"، "bh" …) — في الطلبات العربية فقط.
processing_time_msزمن المعالجة.

مثال: سياق بحريني يستشهد بالقانون البحريني

فحص عربي يذكر الرقم الشخصي البحريني (CPR): تُكتشف الدولة bh ويُستشهَد بقانون البحرين رقم 30 لسنة 2018.

json · response
{
  "final_decision": "REDACT",
  "violations": [
    {
      "violation_id": "BH_CPR",
      "law": "قانون رقم 30 لسنة 2018 بشأن حماية البيانات الشخصية (البحرين)",
      "violating_text": "900712345",
      "recommended_action": "REDACT",
      "floor_violation": false,
      "source": "rules_engine"
    }
  ],
  "redacted_output": "الرقم الشخصي (CPR) للعميل في المنامة بالبحرين هو [REDACTED: BH_CPR].",
  "metadata": { "rag_used": true, "rag_country": "bh" }
}

3التصنيف العربي — 29 فئة

في المسار العربي، تُطبَّع كل مخالفة يرصدها التحليل الدلالي إلى إحدى الفئات الدلالية المعيارية الـ29 (بالإضافة إلى OTHER_VIOLATION كفئة جامعة).

#الرمزالاسم العربي
1NATIONAL_ID_EXPOSUREكشف رقم هوية وطنية
2NATIONAL_ID_SOLICITATIONطلب رقم هوية وطنية
3PAYMENT_CARD_DATAكشف بيانات بطاقة دفع
4BANK_ACCOUNT_DATAكشف بيانات حساب بنكي
5CREDIT_REPORT_DATAكشف بيانات تقرير ائتماني
6PREDATORY_LENDINGإقراض جائر
7DEBT_COLLECTION_ABUSEإساءة في تحصيل الديون
8DECEPTIVE_COMMERCIAL_CLAIMSادعاءات تجارية مضللة
9MEDICAL_RECORDS_EXPOSUREكشف سجلات طبية
10SENSITIVE_HEALTH_DATAبيانات صحية حساسة
11BIOMETRIC_DATAكشف بيانات حيوية
12IDENTITY_DOCUMENT_EXPOSUREكشف وثيقة هوية
13IMMIGRATION_STATUSكشف حالة الهجرة أو الإقامة
14CHILD_DATAكشف بيانات طفل
15CREDENTIALS_EXPOSUREكشف بيانات اعتماد
16STUDENT_RECORDSكشف سجلات طلابية
17EMPLOYMENT_DISCRIMINATIONتمييز وظيفي
18DISABILITY_GENETIC_EMPLOYMENTتمييز على أساس إعاقة أو بيانات جينية
19CRIMINAL_RECORD_USEاستخدام سجل جنائي
20GEOLOCATION_TRACKINGتتبع الموقع الجغرافي
21COVERT_DEVICE_TRACKINGتتبع خفي للأجهزة
22PERSONAL_CONTACT_EXPOSUREكشف بيانات اتصال شخصية
23DATA_SUBJECT_RIGHTSانتهاك حقوق صاحب البيانات
24HOUSING_DISCRIMINATIONتمييز سكني
25UNSOLICITED_MARKETINGتسويق غير مرغوب
26AML_STRUCTURINGتجزئة تحويلات لتفادي حدود الإبلاغ
27KYC_BYPASSتجاوز إجراءات توثيق الهوية
28UNAUTHORIZED_FINANCIAL_ACTIONإجراء مالي غير مصرح
29UNAUTHORIZED_DISCLOSUREإفصاح ببيانات دون أساس نظامي

4قواعد الطبقة الأولى العربية

13 قاعدة حتمية (regex) تعمل قبل طبقة النموذج اللغوي، كلٌّ مربوطة بنصّها القانوني وإجرائها الافتراضي.

الرمزالأساس القانونيالوصفالافتراضي
SA_NATIONAL_IDنظام حماية البيانات الشخصية السعوديكشف رقم الهوية الوطنية أو الإقامة السعوديةREDACT
AE_EMIRATES_IDمرسوم بقانون اتحادي رقم 45 لسنة 2021 (الإمارات)كشف رقم الهوية الإماراتيةREDACT
EG_NATIONAL_IDقانون رقم 151 لسنة 2020 (مصر)كشف الرقم القومي المصريREDACT
QA_QIDقانون حماية خصوصية البيانات الشخصية (قطر)كشف الرقم الشخصي القطريREDACT
KW_CIVIL_IDقانون حماية البيانات الشخصية (الكويت)كشف الرقم المدني الكويتيREDACT
BH_CPRقانون رقم 30 لسنة 2018 (البحرين)كشف الرقم الشخصي البحريني (CPR)REDACT
GCC_EG_IBANأنظمة حماية البيانات المالية الخليجية/المصريةكشف رقم الآيبان الخليجي أو المصريREDACT
AR_PHONE_EXPOSUREأنظمة حماية بيانات الاتصال الخليجية/المصريةكشف رقم هاتف محمول — بيانات اتصالALERT
AR_DOBأنظمة حماية البيانات الشخصيةكشف تاريخ الميلاد — بيانات تعريفيةREDACT
AR_MEDICAL_DATAأنظمة حماية البيانات الصحية الحساسةإشارة إلى بيانات صحية حساسةBLOCK
AR_PASSWORD_EXPOSUREأنظمة حماية البيانات الشخصيةكشف كلمة مرور أو سرّ في نص عربيBLOCK
AR_ID_SOLICITATIONأنظمة حماية البيانات الشخصيةطلب رقم هوية داخل المحادثةBLOCK
AR_KYC_BYPASS_SOLICITATIONأنظمة مكافحة غسل الأموال وتمويل الإرهابتسهيل تجاوز توثيق الهوية أو العقوباتBLOCK

5مفاتيح المجموعات و default_action

اضبط الإجراء لقاعدة واحدة، أو لمجموعة كاملة، عبر rules_config.

  • en — كل القواعد غير العربية.
  • ar — القواعد العربية الـ13 مجتمعة.
  • ar.<cc> — حسب الدولة: ar.sa, ar.ae, ar.eg, ar.qa, ar.kw, ar.bh.

الأولوية (الأعلى يفوز): مُعرّف القاعدة ← مجموعة الدولة ← مجموعة اللغة ← default_action العام للفحص.

json · rules_config
{
  "rules_config": {
    "ar": { "default_action": "alert_hitl" },   // كل القواعد العربية → مراجعة بشرية
    "ar.bh": { "default_action": "block" },      // قواعد البحرين → حظر (تفوق مجموعة "ar")
    "BH_CPR": "REDACT"                           // قاعدة بعينها → تنقيح (تفوق الجميع)
  }
}

6سيادة العميل والحدود الصلبة

بعض المخالفات حدود صلبة (ALWAYS_BLOCK) — لكن القرار النهائي يبقى بيدك.

الحدّ الصلب يُكتشف ويُدوَّن دائماً: يظهر في السجل بالوسم floor_violation: true مع الاستشهاد القانوني (اسم القانون والمادة). أمّا الإجراء المُطبَّق عند التسليم فيتبع إعداد العميل:

  • default_action عام للفحص لا يُسقط حدّاً صلباً — يَسقُف القواعد الاعتيادية فقط.
  • يُخفَّض إجراء الحدّ الصلب فقط عبر تجاوز صريح لمُعرّف القاعدة أو مفتاح مجموعة صالح — ومع ذلك يبقى floor_violation: true والاستشهاد في السجل.

مثال: التزام الوكيل بفتح حساب دون توثيق الهوية يُفعّل AR_KYC_BYPASS_SOLICITATION (حدّ صلب) فيكون القرار BLOCK ويُستشهَد بأنظمة مكافحة غسل الأموال:

json · response
{
  "final_decision": "BLOCK",
  "violations": [
    {
      "violation_id": "KYC_BYPASS",
      "severity": "critical",
      "law": "قانون البنك المركزي رقم 194 لسنة 2020 — المادة 140؛ معايير مكافحة غسل الأموال",
      "recommended_action": "BLOCK"
    }
  ],
  "original_output": "[BLOCKED]",
  "metadata": { "rag_used": true, "mode": "full" }
}

قاعدة السيادة

الكشف + التدقيق + الاستشهاد ثابتة دائماً؛ ما يتغيّر بإعدادك هو الإجراء المُسلَّم فقط.

7المراجعة البشرية (ALERT_HITL)

احتجاز المخرجات لمراجعة إنسان قبل التسليم.

عند اختيارك alert_hitl (عبر default_action أو لقاعدة بعينها)، يصبح القرار ALERT_HITL: يُعامَل كالحظر عند التسليم — safe_to_deliver: false، ويُستبدل النص بـ [HELD_FOR_REVIEW] ويُوجَّه إلى طابور المراجعة (hitl_status: pending). هذا متاح في الوضع full فقط؛ في الوضع fast (بلا خطوة مراجعة) يتراجع إلى ALERT.

8أمثلة برمجية

فحص مخرجات عربية عبر curl وPython وNode. أبقِ الكود إنجليزياً؛ التعليقات عربية.

python
import requests

# افحص رد الوكيل العربي قبل تسليمه للعميل
resp = requests.post(
    "https://www.reglint.ai/api/monitor/scan",
    headers={"x-api-key": "rgl_••••••••"},
    json={
        "agent_output": "رقم بطاقة العميل هو 4111 1111 1111 1111",
        "industry": "finance",
        "mode": "full",
        "language": "ar",           # يُفعّل المسار العربي
    },
    timeout=30,
)
result = resp.json()
# سلّم فقط عندما يكون القرار آمناً
if result["safe_to_deliver"]:
    deliver(result["redacted_output"])
else:
    hold_for_review(result)          # BLOCK / REDACT / ALERT_HITL
node
// افحص رد الوكيل العربي (Node 18+ ‏— fetch مدمج)
const res = await fetch("https://www.reglint.ai/api/monitor/scan", {
  method: "POST",
  headers: {
    "x-api-key": "rgl_••••••••",
    "Content-Type": "application/json; charset=utf-8",
  },
  body: JSON.stringify({
    agent_output: "الرقم القومي للعميل 29804151234567",
    industry: "finance",
    mode: "full",
    language: "ar",               // المسار العربي
  }),
});
const result = await res.json();
// القرار النهائي: PASS | ALERT | REDACT | BLOCK | ALERT_HITL
console.log(result.final_decision, result.violations);
bash · curl
# فحص عربي سريع من الطرفية
curl -X POST https://www.reglint.ai/api/monitor/scan \
  -H "x-api-key: rgl_••••••••" \
  -H "Content-Type: application/json; charset=utf-8" \
  -d '{"agent_output":"يمكنني فتح الحساب دون توثيق الهوية","industry":"finance","mode":"full","language":"ar"}'