⚡
چالشها
۱. پیادهسازی معماری چندنقشه (Multi-Role) با سطوح دسترسی متفاوت برای ادمین، مدیر، بازاریاب، وکیل و کاربر عادی.
۲. طراحی سیستم کیف پول و محاسبه درآمد هر نقش بهصورت خودکار در لحظه خرید.
۳. مدیریت موجودی انبار به تفکیک مالک (هر کاربر موجودی مخصوص خودش دارد).
۴. یکپارچهسازی درگاه پرداخت زرینپال با تخصیص خودکار سود بین نقشهای مختلف.
۵. پیادهسازی سیستم ورود پیامکی با کد یکبار مصرف برای کاربران.
۶. طراحی پنل ادمین اختصاصی برای هر نقش (مدیران، بازاریابان، وکلا) با قابلیتهای متفاوت.
۷. مدیریت محتوای چندبخشی (مقالات، سوالات، تجربیات حقوقی، ویدئوها) با ساختار یکسان در مدل 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 برای همه عملیات سبد خرید و پنلها.
- استفاده از Permissions در DRF برای کنترل دسترسی.
- مدیریت امن فایلهای آپلودشده با نامگذاری بر اساس timestamp و ID.
- استفاده از pymysql برای اتصال به MySQL.
🏗️
معماری پروژه
پروژه بر پایه معماری MVT جنگو بنا شده و شامل ۷ اپلیکیشن اصلی است:
۱. account: مدیریت کاربران و احراز هویت پیامکی.
۲. site_profile: پنل کاربری، داشبورد، مدیران و مشاورهها.
۳. seo: مدیریت مقالات، سوالات، تجربیات حقوقی و ویدئوها.
۴. product: مدیریت محصولات، برندها، دستهبندی، موجودی و تنوع.
۵. cart: مدیریت سبد خرید و سفارشات.
۶. zarinpal: یکپارچهسازی درگاه پرداخت.
۷. marketing: مدیریت درخواستهای واریز بازاریابان.
ارتباط بین اپلیکیشنها از طریق ForeignKey و ManyToMany برقرار است و همه از یک CustomUser مشترک استفاده میکنند.
📐
مقیاس پروژه
پروژه در سطح یک اپلیکیشن بزرگ با ۷ اپلیکیشن مستقل طراحی شده است. در حال حاضر از SQLite استفاده میکند اما برای پروداکشن به MySQL ارتقا یافته است. حجم کد بالای ۵۰۰۰ خط Python و ۵۰+ قالب HTML را شامل میشود.