الخدمة 2

تصنيف الشكوى على المخالفات

POST/insaf/violation-classification

ترسل نص الشكوى كما كتبه المشتكي مع نوع الطلب. تُحسَّن صياغة الوصف ويُقيَّم جودته، ثم تُطبَّق الوقائع على قائمة المخالفات الخاصة بنوع الطلب، وتُرجَع المخالفات المطابقة مع السبب والدليل.

كما يوضّح الرد ما إذا كانت الشكوى داخل النطاق كلياً أو جزئياً أو لا، مع الوقائع الخارجة عن النطاق.

  • •المطابقة تتجاهل حالة الأحرف والمسافات ونوع الفاصل: professional_monitoring و ProfessionalMonitoring و Professional Monitoring كلها = 3.
  • •الأسماء العربية والأرقام (مثل "request_type": 1) غير مقبولة وتُرفض.
  • •للتحويل من الـ id (1/2/3) إلى القيمة الإنجليزية استخدموا GET /api/Lookup/RequestTypes.

جرّب الطلب

المفتاح يُحفظ في متصفحك فقط ويُرسل مع الطلب عند التجربة.

POSThttps://inbound-api-gateway.velents.ai

Request

الحقلالنوعمطلوبالشرح
descriptionstringإجبارينص الشكوى، من 20 إلى 10,000 حرف بعد الـ trim.
request_typestringإجباريcomplaint أو notice أو professional_monitoring. لا توجد قيمة افتراضية.
webhook, webhook_headers, webhook_body—اختيارياختياري لتشغيل الطلب بشكل غير متزامن (انظر الأساسيات المشتركة).

قيم request_type — لكل نوع قائمة مخالفات منفصلة

ValuerequestTypeIdViolation IDs
complaint (شكوى)11 – 68
notice (بلاغ)2137 – 141
professional_monitoring (رصد مهني)369 – 136 (نفس نصوص الشكوى)
request
{
  "description": "المحامي ما حضر الجلسة الاخيره وما بلغني انها تأجلت، والقاضى اجل القضيه ثلاث مرات بدون سبب.",
  "request_type": "complaint"
}

Response — 200

الحقلالنوعالشرح
requestTypeIdnumberالرقم الذي تحوّل إليه نوع الطلب (1 أو 2 أو 3).
descriptionobjectيحتوي original و refined و quality (score من 0 إلى 1 و issues[]) و changes[]. التفاصيل في الخدمة رقم 3.
matches[]arrayالمخالفات المطابقة، الأعلى confidence أولاً.
matchCountnumberعدد matches.
noMatchbooleantrue إذا كانت matches فارغة.
relevancestringfull إذا كانت كل الوقائع داخل النطاق، partial إذا كان جزء داخل وجزء خارج، none إذا لم تدخل أي واقعة (noMatch = true).
relevanceNotestringجملة عربية تشرح الـ relevance.
unmatchedFacts[]arrayالوقائع الخارجة عن النطاق: { evidence, reason }.
summarystringملخص الوقائع في جملة.

عنصر matches[]

Fieldالشرح
violationId, violationNameرقم واسم المخالفة.
categoryId, categoryNameالتصنيف.
duplicateViolationIds[]فارغة دائماً عملياً، موجودة للتوافق.
confidence, rationaleدرجة الثقة والتسبيب.
evidence[]مقتطف حرفي واحد على الأكثر من نص الشكوى.
response
{
  "requestTypeId": 1,
  "description": {
    "original": "المحامي ما حضر الجلسة الاخيره وما بلغني انها تأجلت ...",
    "refined": "تغيب المحامي عن حضور الجلسة الأخيرة، ولم يبلغني بتأجيلها ...",
    "quality": { "score": 0.7, "issues": ["informal_dialect", "missing_dates"] },
    "changes": ["تحويل العامية إلى الفصحى"]
  },
  "matches": [
    {
      "violationId": 43,
      "violationName": "التغيب عن حضور الجلسات القضائية بغير عذر",
      "categoryId": 34,
      "categoryName": "...",
      "duplicateViolationIds": [],
      "confidence": 0.9,
      "rationale": "تغيب المحامي عن الجلسة الأخيرة ...",
      "evidence": ["المحامي ما حضر الجلسة الاخيره"]
    }
  ],
  "matchCount": 3,
  "noMatch": false,
  "relevance": "partial",
  "relevanceNote": "جزء من وقائع الشكوى ذو صلة بتصنيفات المخالفات المعتمدة وقد تمت مطابقته ...",
  "unmatchedFacts": [
    {
      "evidence": "والقاضى اجل القضيه ثلاث مرات بدون سبب",
      "reason": "الواقعة منسوبة إلى القاضي لا إلى المحامي فلا تدخل في نطاق مخالفات مهنة المحاماة"
    }
  ],
  "summary": "يشكو المتضرر تغيب محاميه عن الجلسة الأخيرة وعدم إبلاغه بتأجيلها ...",
  "apiProcessingDuration": 14,
  "apiProcessingDurationFormatted": "00:14"
}

Errors

StatusCodeالسبب
400INVALID_INPUTrequest_type ناقص أو قيمته غير معروفة أو رقم، أو طول description غير صحيح.
502CATALOGUE_EMPTYإنصاف لم تنشر قائمة مخالفات لنوع الطلب هذا؛ يُرفض الطلب بدلاً من إرجاع "لا توجد مخالفة".
503CATALOGUE_UNAVAILABLEقائمة المخالفات عند إنصاف غير متاحة ولا يوجد cache احتياطي.