# الوكيل العقاري الذكي — IS Pro
نظام وكيل ذكي (Agentic AI) للبحث العقاري وتحليل السوق، مبني على LangChain وLangGraph مع RAG، بالإضافة إلى خمس أدوات مساعدة مبنية على بيانات حقيقية: حساب المسافات، توقع الأسعار، توليد تقارير PDF، تنبيهات بحث محفوظة، وحاسبة تمويل عقاري.
## المشكلة
البحث عن عقار محتاج جمع معلومات من أماكن متفرقة: أسعار السوق في المنطقة، المسافة من نقاط مهمة، تقدير هل السعر عادل ولا لأ، وحساب القسط الشهري لو هيتم التمويل. IS Pro بيجمع الأدوات دي في واجهة واحدة، مع وكيل ذكي بيقرر بنفسه أي أداة يستخدم حسب سؤال المستخدم.
## طريقة العمل
النظام مبني حول LangGraph: رسالة المستخدم بتدخل لـ `agent_node`، الـ LLM بيقرر لو محتاج يستخدم أداة من 12 أداة متاحة، لو محتاج ينفذ الأداة عبر `ToolNode` ويرجع النتيجة للـ agent تاني، ولو الإجابة كفاية بيقفل المحادثة (`END`). الذاكرة بتتحفظ بـ `MemorySaver` في الـ RAM لكل جلسة (`thread_id`)، فمفيش قاعدة بيانات خارجية للمحادثة نفسها.
فيه كمان مسار تاني بديل غير الـ Agent، اسمه "RAG Direct" — بحث ثابت وسريع (سؤال → retriever → LLM → إجابة) لما المستخدم مش محتاج مرونة القرار بتاعة الـ Agent.
### RAG Pipeline
قاعدة المعرفة العقارية (ملف نصي) بتتقسم لأجزاء بـ `RecursiveCharacterTextSplitter` (حجم القطعة 1000 حرف، تداخل 200 حرف لمنع فقدان السياق على حدود القطع)، بعدين تتحول لـ embeddings بـ Gemini، وتتخزن في FAISS في الـ RAM (من غير قاعدة بيانات خارجية).
## الميزات الخمس
- **حساب المسافة والموقع** — صيغة Haversine مع إحداثيات حقيقية لـ 8 مناطق في مصر، وحساب المسافة من نقاط مرجعية (وسط البلد، المطار، الجامعة الأمريكية، العاصمة الإدارية، 6 أكتوبر)
- **توقع السعر** — نموذج RandomForest مدرَّب على بيانات مبنية من إحصائيات PropertyFinder.eg الحقيقية (متوسط السعر وسعر المتر لكل منطقة)، بدقة اختبار R² ≈ 0.92 وخطأ متوسط (MAPE) ≈ 18%. نطاق الثقة (low/high) محسوب من تشتت توقعات الأشجار الفردية داخل الغابة
- **تقرير PDF للعميل** — تقرير عربي كامل (باستخدام arabic_reshaper وpython-bidi للتشكيل واتجاه RTL) يجمع ملخص الطلب، تقدير السعر، وحاسبة التمويل في مستند واحد جاهز للإرسال
- **نظام Alerts** — تنبيهات بحث محفوظة (منطقة + ميزانية + حد أدنى غرف) مخزّنة في ملف JSON بسيط. الفحص الحالي بيتم على الداتا المحلية المُولَّدة، مش على مصدر عقارات حي — الدالة مصممة عشان تتستبدل لاحقًا باتصال API حقيقي بنفس الشكل
- **حاسبة التمويل العقاري** — معادلة القسط الثابت الكاملة، جدول سداد سنوي (أصل + فوائد + رصيد متبقي)، وفاحص تحمّل الدخل (القسط ما يتجاوزش 30-40% من الدخل الشهري)
## الواجهة
واجهة Streamlit باتجاه RTL بالكامل، من غير أي رموز تعبيرية، مقسّمة لـ 6 تبويبات (محادثة، الموقع والمسافات، توقع السعر، تقرير العميل، حاسبة التمويل، التنبيهات). كل تبويب بيحتفظ بنتائجه في `session_state` فمبيختفيش لما تنتقل لتبويب تاني. الوكيل وقاعدة المعرفة بيتحمّلوا عند أول رسالة بس، فباقي التبويبات بتشتغل فورًا من غير انتظار اتصال.
## التقنيات
Python · LangChain · LangGraph · FAISS · Gemini (LLM + Embeddings) · scikit-learn (RandomForest) · Streamlit · ReportLab
## الحدود الحالية
- بيانات التدريب لنموذج التسعير مبنية إحصائيًا من أرقام حقيقية، مش من صفقات فعلية مسجّلة صفقة بصفقة
- نظام الـ Alerts بيفحص على نسخة محلية من الداتا، مش متصل بمصدر عقارات حي وقت الفحص
- معدل الفائدة الافتراضي في حاسبة التمويل (18%) تقريبي، ولازم يتأكد من البنك قبل أي قرار فعلي