المشكلة
مطور يبيع أبراجًا على الخارطة في الخبر والدمام والظهران كان يدير مبيعاته بالكتيبات وواتساب. لم يكن المشتري يرى الوحدات المتبقية ولا قيمة القسط، فتحول كل سؤال إلى مكالمة. والعملاء المحتملون يصلون بلا مسؤول ولا مرحلة، ويُعاد إدخالهم في Odoo يدويًا. أما التوفر فكان في ملف Excel يتقادم لحظة حجز أي وحدة.
ما بنيناه
نظام موحد معياري (modular monolith) على ASP.NET Core 10 وAngular 22، ثنائي اللغة ويُعرض من جهة الخادم. يصفّي المشتري الكتالوج حسب المدينة والحالة والنوع وعدد الغرف والسعر، ويفتح صفحة المشروع بمواصفاته وخريطة معالمه وجدول وحداته الحي، ثم يجرب حاسبة التمويل ويسجل اهتمامه بنوع وحدة محدد.
وخلفه 13 وحدة إدارة. أهمها صندوق العملاء المحتملين: كل استفسار وكل تسجيل مورّد يذهب إلى صندوق صادر معاملاتي (transactional outbox)، ويوصله Hangfire إلى Odoo مع إعادة المحاولة، فينتظر العميل المحتمل النظامَ بدل أن يضيع.
داخل النظام
- التحقق الثنائي TOTP إلزامي لأي دور يتعامل مع المستخدمين أو التكاملات أو تصدير البيانات الشخصية.
- مخزون الوحدات مع استيراد وتصدير Excel ومسار نشر، ويظهر مباشرة على الموقع العام.
- بحث نصي كامل بالعربية والإنجليزية، وتحويلات تبقي روابط المشاريع القديمة حية.
- ClamAV يفحص كل ملف يُرفع إلى مكتبة الوسائط على MinIO.
- 1,066 اختبار باك إند، و254 اختبار Angular، و81 تشغيلًا لـPlaywright، ومعها ملفات حمل k6.
الشاشات