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, ""