الخدمة 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
| الحقل | النوع | مطلوب | الشرح |
|---|---|---|---|
description | string | إجباري | نص الشكوى، من 20 إلى 10,000 حرف بعد الـ trim. |
request_type | string | إجباري | complaint أو notice أو professional_monitoring. لا توجد قيمة افتراضية. |
webhook, webhook_headers, webhook_body | — | اختياري | اختياري لتشغيل الطلب بشكل غير متزامن (انظر الأساسيات المشتركة). |
قيم request_type — لكل نوع قائمة مخالفات منفصلة
| Value | requestTypeId | Violation IDs |
|---|---|---|
complaint (شكوى) | 1 | 1 – 68 |
notice (بلاغ) | 2 | 137 – 141 |
professional_monitoring (رصد مهني) | 3 | 69 – 136 (نفس نصوص الشكوى) |
request
{
"description": "المحامي ما حضر الجلسة الاخيره وما بلغني انها تأجلت، والقاضى اجل القضيه ثلاث مرات بدون سبب.",
"request_type": "complaint"
}Response — 200
| الحقل | النوع | الشرح |
|---|---|---|
requestTypeId | number | الرقم الذي تحوّل إليه نوع الطلب (1 أو 2 أو 3). |
description | object | يحتوي original و refined و quality (score من 0 إلى 1 و issues[]) و changes[]. التفاصيل في الخدمة رقم 3. |
matches[] | array | المخالفات المطابقة، الأعلى confidence أولاً. |
matchCount | number | عدد matches. |
noMatch | boolean | true إذا كانت matches فارغة. |
relevance | string | full إذا كانت كل الوقائع داخل النطاق، partial إذا كان جزء داخل وجزء خارج، none إذا لم تدخل أي واقعة (noMatch = true). |
relevanceNote | string | جملة عربية تشرح الـ relevance. |
unmatchedFacts[] | array | الوقائع الخارجة عن النطاق: { evidence, reason }. |
summary | string | ملخص الوقائع في جملة. |
عنصر 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
| Status | Code | السبب |
|---|---|---|
| 400 | INVALID_INPUT | request_type ناقص أو قيمته غير معروفة أو رقم، أو طول description غير صحيح. |
| 502 | CATALOGUE_EMPTY | إنصاف لم تنشر قائمة مخالفات لنوع الطلب هذا؛ يُرفض الطلب بدلاً من إرجاع "لا توجد مخالفة". |
| 503 | CATALOGUE_UNAVAILABLE | قائمة المخالفات عند إنصاف غير متاحة ولا يوجد cache احتياطي. |