semantic_search_production / app /query_validator.py
shahdAI's picture
ربط المشروع الفعلي بالـSpace (استبدال قالب Streamlit الافتراضي)
4a920c4 verified
Raw
History Blame Contribute Delete
1.39 kB
"""
الوحدة: التحقق من صلاحية الاستعلام (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, ""