نظرة عامة
يُجري تقدير العمر دائمًا فحصين في استدعاء واحد — اختبار كشف الحيوية السلبي ونموذج انحدار العمر — لذا تتدفق تحذيراته عبر مسار كشف الحيوية المشترك وتُوسم بالميزةLIVENESS. تظهر هذه التحذيرات في التقرير ضمن age_estimation.warnings[] (واجهة API مستقلة) أو liveness_checks[].warnings[] (المدمجة في سير العمل). تم توثيق مخطط كائن التحذير تحت نماذج البيانات — كائن التحذير.
الجهات المُصدِرة:
- واجهة API مستقلة — يُنشئ الـ endpoint التحذيرات الخمسة المدرجة تحت مُشغِّلات الرفض.
- سير العمل — الجهات المُصدِرة المشتركة لكشف الحيوية بالإضافة إلى الفحوصات المخصصة للعمر. تنطلق تحذيرات العمر فقط في مسارات تقدير العمر (سير عمل التحقق التكيفي من العمر أو عُقد سير العمل من النوع
AGE_ESTIMATION) — تُبلغ خطوة الحيوية البسيطة عن العمر المقدر لكنها لا ترفع تحذيرات العمر مطلقًا.
NO_FACE_DETECTED و LIVENESS_FACE_ATTACK و FACE_IN_BLOCKLIST و AGE_BELOW_MINIMUM و AGE_NOT_DETECTED) تكون دائمًا بقيمة log_type: "error" وتفرض الحالة Declined؛ أما المخاطر المتبقية فتتحول إلى error / warning / information استنادًا إلى الحدود أو الإجراء المكوّن.
مُشغِّلات الرفض
في واجهة API مستقلة، يكون القرارDeclined كلما انطلق أي تحذير:
- العمر أقل من الحد — العمر المتوقع أقل تمامًا من
age_estimation_decline_threshold(الافتراضي18؛ تُعطّل القيمة0فحص العمر). يرفعAGE_BELOW_MINIMUM. - لم يتم احتساب العمر — تعذر تقدير عمر الوجه (لا يوجد وجه يمكن اكتشافه، أو لا يوجد وجه صالح للاستخدام لنموذج العمر). يرفع
AGE_NOT_DETECTED. - درجة الحيوية عند الحد أو أقل منه —
score <= face_liveness_score_decline_threshold(الافتراضي30)؛ تُحسب درجةnullعلى أنها0. يرفعLOW_LIVENESS_SCORE. يتم كتمه عند انطلاقNO_FACE_DETECTED— فالأمران متنافيان. - لم يتم اكتشاف أي وجه — لم يعثر نموذج الحيوية على أي وجه. يرفع
NO_FACE_DETECTED. - هجوم العرض — حدد نموذج الحيوية وجود شاشة، أو صورة مطبوعة، أو قناع، أو أي نوع آخر من الانتحال. يرفع
LIVENESS_FACE_ATTACK.
- مع تفعيل الإجراء البديل للتحقق من الهوية (
enable_id_verification_fallback، مفعّل افتراضيًا): يؤدي العمر الذي يقل عنborderline_minimum_age_threshold(الافتراضي18) إلى رفعAGE_BELOW_MINIMUM؛ وتُوجَّه الأعمار الواقعة في النطاق الحدي (حتىborderline_maximum_age_threshold) إلى التحقق من المستندات بدلاً من رفع تحذير، ولا يُرفعAGE_NOT_DETECTEDمطلقًا — حيث يتم توجيه العمر غير المكتشف إلى التحقق من المستندات أيضًا. - مع تعطيل الإجراء البديل: يؤدي عدم وجود عمر مقدر إلى رفع
AGE_NOT_DETECTED، ويؤدي العمر الأقل منminimum_age_threshold(الافتراضي18) إلى رفعAGE_BELOW_MINIMUM.
المخاطر القابلة للتكوين
تتيح لك المخاطر التالية ضبط الحدود أو الإجراء حسب إعداد سير العمل:
تفحص جلسات سير العمل الوجه أيضًا مقابل قوائمك: حيث يؤدي
FACE_IN_BLOCKLIST دائمًا إلى الرفض التلقائي (error)، بينما ينقل POSSIBLE_FACE_IN_BLOCKLIST الجلسة إلى In Review.
التحذيرات الناتجة
مثال
liveness_checks[].warnings[])، يحمل كل تحذير أيضاً node_id يحدد عقدة سير العمل التي أطلقته.
أنواع التحذيرات
يتم تعيين مستوى خطورة لكل خطر بناءً على تكوين التطبيق الخاص بك. وتندرج مستويات الخطورة تحت ثلاث فئات:ذات صلة
- نظرة عامة على تقدير العمر — سلوك الميزة، والأسعار، ومنطق القرار.
- تقرير تقدير العمر — الشكل الكامل للاستجابة لكل من الـ API المستقل وقيمة سير العمل المضمنة.
- مرجع الـ API المستقل — طلب واستجابة
POST /v3/age-estimation/. - كشف الحيوية السلبي — نموذج الحيوية المشترك المستخدم في استجابات تقدير العمر.
- نماذج البيانات — تقدير العمر — المخطط المعتمد حقلاً بحقل.