⚡
التحديات
١. تنفيذ معمارية متعددة الأدوار بمستويات وصول مختلفة للمدير العام، المدير، المسوق، المحامي، والمستخدم العادي.
٢. تصميم نظام محفظة ودخل بحساب تلقائي لكل دور عند الشراء.
٣. إدارة المخزون لكل مالك (كل مستخدم له مخزونه الخاص).
٤. دمج بوابة دفع زرين بال مع توزيع تلقائي للأرباح بين الأدوار المختلفة.
٥. تنفيذ تسجيل دخول برسالة نصية (OTP) للمستخدمين.
٦. تصميم لوحات إدارة مخصصة لكل دور بقدرات مختلفة.
٧. إدارة محتوى متعدد الأقسام (مقالات، أسئلة، تجارب قانونية، فيديوهات) بهيكل موحد في نموذج Seo.
٨. تنفيذ نظام استشارة شبيه بالمحادثة بين المستخدم والمحامي.
💡
الحلول
١. بناء CustomUser بحقول منطقية منفصلة (admin_access, manager_access, agent_access, response_access) للتحكم في الوصول.
٢. حساب تلقائي لأرباح المسوق ومالك المنتج في دالة verify الخاصة بـ زرين بال وإيداعها في المحفظة.
٣. إنشاء نموذج Owners لمخزون كل مستخدم وربطه بـ ManyToMany مع المنتجات.
٤. استخدام Callback URL ديناميكي للعودة من البوابة وتحديث السلة.
٥. استخدام خدمة ghasedak لإرسال الرسائل النصية وتخزين الكود العشوائي في حقل random_pass.
٦. تصميم قوالب لوحة مخصصة لكل دور بقوائم مختلفة حسب حقول الوصول.
٧. استخدام نموذج Seo واحد مع حقل type (articles/questions/experiences/video) لإدارة كل المحتوى.
٨. إنشاء نموذجي Counseling و Conversation لتنفيذ المحادثة بين المستخدم والمحامي.
📚
الإنجازات
- إنشاء نظام بيئي تجاري كامل بخمسة أدوار مختلفة.
- زيادة الإيرادات من خلال نظام تسويق متعدد المستويات.
- إدارة موحدة للمحتوى والمنتجات في لوحة واحدة.
- أتمتة كاملة لحساب الأرباح والإيداع في المحفظة.
- تقليل تكاليف الدعم بنظام الاستشارة الإلكترونية.
- زيادة معدل التحويل بتسجيل دخول سريع برسالة نصية.
🔧
النقاط الفنية البارزة
- استخدام CustomUser بوراثة AbstractUser مع أكثر من ١٠ حقول مخصصة.
- استخدام persiantools للتحويل من التاريخ الميلادي إلى الهجري الشمسي.
- استخدام حزمة ghasedak لإرسال الرسائل النصية.
- تنفيذ AJAX لجميع عمليات السلة واللوحات.
- استخدام صلاحيات DRF للتحكم في الوصول.
- إدارة آمنة للملفات المرفوعة بتسمية قائمة على الطابع الزمني والمعرف.
- استخدام pymysql للاتصال بـ MySQL.
🏗️
الهندسة المعمارية
المشروع مبني على معمارية MVT في Django ويضم ٧ تطبيقات رئيسية:
١. account: إدارة المستخدمين والمصادقة بالرسائل النصية.
٢. site_profile: لوحة المستخدم، لوحة التحكم، المديرون، والاستشارات.
٣. seo: إدارة المقالات والأسئلة والتجارب القانونية والفيديوهات.
٤. product: إدارة المنتجات والعلامات التجارية والتصنيفات والمخزون والتنويعات.
٥. cart: إدارة سلة التسوق والطلبات.
٦. zarinpal: دمج بوابة الدفع.
٧. marketing: إدارة طلبات سحب أرباح المسوقين.
تتواصل التطبيقات عبر ForeignKey و ManyToMany وتشترك في CustomUser موحد.
📐
نطاق المشروع
المشروع مصمم على مستوى تطبيق كبير بسبعة تطبيقات مستقلة. يستخدم حالياً SQLite لكنه تمت ترقيته إلى MySQL للإنتاج. يتجاوز حجم الكود ٥٠٠٠ سطر Python وأكثر من ٥٠ قالب HTML.