Spaces:
Sleeping
Sleeping
File size: 1,387 Bytes
4a920c4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | """
الوحدة: التحقق من صلاحية الاستعلام (Query Validation)
الدور: رفض الاستعلامات غير الصالحة (قصيرة جداً، بلا حروف عربية، أو
نسبة حروف عربية منخفضة) قبل أي معالجة لاحقة.
يُستدعى فقط عبر app/orchestrator.py
"""
from __future__ import annotations
def validate_query(query: str) -> tuple[bool, str]:
"""
يتحقق من صلاحية الاستعلام قبل معالجته.
المخرجات:
(True, "") ← الاستعلام صالح، أكمل المعالجة
(False, "رسالة خطأ") ← الاستعلام غير صالح، أوقف وأظهر الرسالة
"""
if len(query.strip()) < 2:
return False, "الاستعلام قصير جداً، يرجى كتابة كلمة أو تعريف"
arabic_count = sum(1 for c in query if 0x0600 <= ord(c) <= 0x06FF)
if arabic_count == 0:
return False, "يرجى الكتابة باللغة العربية"
arabic_letters = sum(
1 for c in query if ("ء" <= c <= "ي") or ("ً" <= c <= "ٟ")
)
non_space = [c for c in query if not c.isspace()]
if non_space and arabic_letters / len(non_space) < 0.50:
return False, "يرجى كتابة كلمة أو تعريف عربي واضح"
return True, ""
|