| def normalize_text(text: str) -> str: | |
| return (text or "").strip().lower() | |
| def contains_any(text: str, keywords: list) -> bool: | |
| return any(k in text for k in keywords) | |
| def is_greeting(text: str) -> bool: | |
| t = normalize_text(text) | |
| return contains_any(t, [ | |
| "اهلا", "أهلا", "مرحبا", "هاي", "hello", "hi", | |
| "السلام عليكم", "سلام عليكم", "مساء الخير", "صباح الخير", | |
| "مساء الفل", "صباح الفل" | |
| ]) | |
| def is_complaint(text: str) -> bool: | |
| t = normalize_text(text) | |
| return contains_any(t, [ | |
| "شكوى", "شكاوي", "اشتكي", "مشكلة", "مشكلتي", "تذمر", "زعلان", | |
| "سيء", "خدمة سيئة", "عايز اشتكي", "عايزة اشتكي", "complaint" | |
| ]) | |
| def is_support_request(text: str) -> bool: | |
| t = normalize_text(text) | |
| return contains_any(t, [ | |
| "خدمة العملاء", "تواصل", "اكلم", "أكلم", "support", | |
| "عايز حد يرد", "عايزة حد يرد", "محتاج مساعدة", "محتاجه مساعدة" | |
| ]) | |
| def is_sales_request(text: str) -> bool: | |
| t = normalize_text(text) | |
| return contains_any(t, [ | |
| "اشتراك", "اشترك", "احجز", "عايز احجز", "عايزة احجز", | |
| "سعر", "الاسعار", "الأسعار", "بكام", "مبيعات" | |
| ]) | |
| def is_new_student(text: str) -> bool: | |
| t = normalize_text(text) | |
| return contains_any(t, [ | |
| "طالب جديد", "جديد", "عميل جديد", "اول مرة", "أول مرة", | |
| "لسه جديد", "مشترك جديد" | |
| ]) | |
| def is_current_student(text: str) -> bool: | |
| t = normalize_text(text) | |
| return contains_any(t, [ | |
| "طالب حالي", "حالي", "عميل حالي", "مشترك", "مشترك حالي", | |
| "انا طالب عندكم", "أنا طالب عندكم", "انا مشترك" | |
| ]) |