نمای کلی پروژه
این پروژه با هدف توسعه یک ربات تلگرام قدرتمند برای فروش اشتراکهای VPN طراحی شده است. این سیستم یک تجربه کاربری یکپارچه برای خرید و مدیریت اشتراکها فراهم میکند که توسط یک پنل مدیریت جنگو قوی و یک سرویس API برای ادغام با ارائهدهنده VPN خارجی (Marzban) پشتیبانی میشود. کل سیستم با تاکید شدید بر پشتیبانی از زبان فارسی، رابطهای کاربری مدرن و معماری امن و مقیاسپذیر طراحی شده است. فلسفه اصلی ما طراحی کاربر محور است، که تجربه بصری و کارآمدی را برای کاربران نهایی و مدیران تضمین میکند، در کنار تمرکز قوی بر تجربه توسعهدهنده برای قابلیت نگهداری و توسعه آینده.
اجزای اصلی
راه حل حول سه ستون به هم پیوسته ساختار یافته است که با تفکیک واضح مسئولیتها عمل میکنند:
- ربات تلگرام: رابط اصلی کاربر برای خرید و مدیریت اشتراک، که برای تعامل بصری ساخته شده است.
- بکاند جنگو و سرویس API: مغز مرکزی که منطق کسب و کار، ذخیرهسازی دادهها، احراز هویت کاربر و ادغام با ارائهدهنده VPN را مدیریت میکند. این بخش به عنوان منبع واحد حقیقت برای تمام دادههای برنامه عمل میکند.
- پنل مدیریت (فرانتاند React): یک رابط وب اختصاصی و واکنشگرا برای مدیران جهت مدیریت کاربران، اشتراکها، پرداختها و تنظیمات سیستم، که از طریق یک API قوی با بکاند جنگو تعامل دارد.
ویژگیهای کلیدی و جریانهای کاربری
اصول تجربه کاربری (UX)
در طول فرآیند طراحی و توسعه، ما به اصول بنیادی UX پایبندیم تا تعاملی با کیفیت بالا را تضمین کنیم:
- وضوح و سادگی: رابطها (ربات و پنل مدیریت) به گونهای طراحی شدهاند که سرراست باشند، بار شناختی را کاهش داده و وظایف پیچیده را آسانتر میکنند.
- ثبات: یک زبان طراحی یکنواخت، سبک پیامرسانی و الگوهای تعاملی در تمام اجزا برای تجربهای منسجم به کار گرفته میشود.
- بازخورد و پاسخگویی: کاربران بازخورد فوری و واضحی در مورد اقدامات خود دریافت میکنند، خواه یک ارسال موفقیتآمیز پرداخت باشد یا فعالسازی اشتراک. وضعیتهای بارگذاری و تأییدیهها در اولویت قرار دارند.
- دسترسیپذیری: تلاش میشود تا ربات برای همه کاربران آسان باشد و پنل مدیریت در صورت لزوم از دستورالعملهای دسترسیپذیری وب پیروی میکند.
ربات تلگرام
- تعامل و ناوبری کاربر:
- رابط کاربری مدرن و بصری ربات که با
aiogram
(آخرین نسخههای پایتون) ساخته شده است، تجربه کاربری پاسخگو و جذاب را تضمین میکند. - ناوبری آسان از طریق کیبوردهای درونخطی ساختاریافته و تعاملات مبتنی بر دستور، طراحی شده با جریانهای گفتگوی واضح و مدیریت خطا.
- پیامهای خوشآمدگویی جامع، دستورات راهنمای حساس به متن و ارتباط شفاف در طول سفر کاربر.
- پشتیبانی کامل از زبان فارسی برای تمام پیامها، منوها و تعاملات ربات، از جمله عبارات مناسب فرهنگی.
- رابط کاربری مدرن و بصری ربات که با
- مدیریت اشتراک:
- کاربران میتوانند به راحتی طرحهای مختلف اشتراک VPN را مرور و انتخاب کنند، با جزئیات واضح در مورد ویژگیها و قیمتگذاری.
- قابلیت مشاهده وضعیت فعلی اشتراک، تاریخ انقضا و تخمین مصرف (در صورت ارائه توسط API Marzban).
- گزینههای ساده برای تمدید اشتراکهای موجود، با اعلانهای فعال انقضا.
- فرآیند پرداخت:
- پس از انتخاب طرح، ربات به صورت امن اطلاعات پرداخت (مانند جزئیات حساب بانکی، لینکهای درگاه پرداخت امن، کدهای QR) را به کاربر ارائه میدهد.
- کاربران برای تکمیل تراکنش به صورت خارجی هدایت میشوند و سپس عکس رسید پرداخت را به ربات ارسال میکنند.
- ربات به صورت امن عکس رسید را برای اعتبارسنجی به پنل مدیریت ارسال میکند و حریم خصوصی و یکپارچگی دادهها را تضمین میکند.
- کاربران تأیید فوری دریافت رسید خود را دریافت میکنند که آرامش خاطر را فراهم میکند.
- اعلانها:
- اعلانهای خودکار و به موقع برای بهروزرسانی وضعیت پرداخت (در انتظار، پذیرفته شده، رد شده) از طریق پیامهای مستقیم.
- هشدارهای حیاتی برای فعالسازی اشتراک، هشدارهای انقضا و یادآوریهای تمدید.
- پیامها و بهروزرسانیهای سیستم، تضمین میکند که کاربران همیشه مطلع هستند.
پنل مدیریت (فرانتاند React)
- داشبورد:
- نمای کلی جامع از معیارهای کلیدی: اشتراکهای فعال، پرداختهای در انتظار، فعالیتهای اخیر کاربر و وضعیت سلامت سیستم.
- ویجتهای قابل تنظیم و آمار سریع برای بینشهای فوری در مورد عملیات کسب و کار.
- مدیریت کاربر:
- ابزارهای پیشرفته برای مشاهده، جستجو، فیلتر و مدیریت حسابهای مشتری.
- دسترسی دقیق به تاریخچه خرید مشتری، جزئیات اشتراک و گزارشهای ارتباطی.
- قابلیت مسدود کردن، تعلیق یا فعالسازی مجدد حسابهای کاربر با ردیابی حسابرسی.
- مدیریت اشتراک:
- قابلیتهای کامل CRUD (ایجاد، خواندن، بهروزرسانی، حذف) برای اشتراکهای VPN.
- مدیران میتوانند به صورت دستی اشتراکهای کاربر را تمدید، اصلاح یا خاتمه دهند.
- ارتباط یکپارچه اشتراکها با حسابهای Marzban مربوطه.
- گردش کار اعتبارسنجی پرداخت و رسید:
- رابط کاربری اختصاصی و بصری برای بررسی عکسهای رسید ارسال شده، با ابزارهایی برای بازرسی و حاشیهنویسی تصویر.
- گردش کار ساده برای مدیران جهت تأیید یا رد پرداختها، با دلایل واضح برای رد.
- اقدامات خودکار پس از اعتبارسنجی (مانند فعالسازی/ایجاد اشتراک در Marzban، ارسال پیام رد به کاربر).
- تاریخچه جامع و ردیابی حسابرسی تمام تلاشهای پرداخت و نتایج اعتبارسنجی.
- مدیریت طرح:
- تعریف، بهروزرسانی و حذف طرحهای اشتراک VPN، شامل مدلهای قیمتگذاری انعطافپذیر، ویژگیها و مدت زمانها.
- گزارشگیری و تحلیل:
- گزارشگیری قوی در مورد عملکرد فروش، کاربران فعال، وضعیت پرداختها و روند اشتراکها.
- قابلیتهای صادرات داده (CSV, PDF) برای تحلیل بیشتر و نگهداری سوابق.
- بینالمللیسازی و بومیسازی:
- پشتیبانی کامل از زبان فارسی برای کل رابط کاربری، شامل تمام برچسبها، پیامها و نمایش دادهها.
- تقویم جلالی (فارسی) بومی و انتخابگرهای تاریخ و زمان برای تمام فیلدهای تاریخ و زمان مرتبط، تضمین تجربه فرهنگی مرتبط.
سرویس API (ادغام Marzban)
- عملیات CRUD:
- مسئول ایجاد، بهروزرسانی، حذف و بازیابی امن اشتراکها و حسابهای کاربری VPN مستقیماً از برنامه Marzban.
- رعایت دقیق شمای API Marzban برای ادغام قابل اعتماد.
- لایه انتزاعی:
- یک رابط تمیز و سازگار برای بکاند جنگو فراهم میکند تا با Marzban تعامل داشته باشد، منطق کسب و کار را از جزئیات API خارجی جدا میکند.
- قابلیت نگهداری را تضمین میکند و امکان تغییرات احتمالی آینده در ارائهدهنده VPN را بدون تأثیر بر سیستم اصلی فراهم میکند.
- مدیریت خطا و انعطافپذیری:
- مدیریت خطای قوی برای ارتباط با Marzban، شامل مکانیزمهای هوشمند تلاش مجدد با بازگشت نمایی.
- ثبت جامع تمام درخواستها و پاسخهای API برای اشکالزدایی و حسابرسی.
- پیادهسازی الگوهای قطعکننده مدار برای جلوگیری از خرابیهای آبشاری.
ملاحظات فنی و انتخابهای طراحی
معماری
- یکپارچه مدولار با اصول SOA: در حالی که به عنوان یک واحد منسجم مستقر میشود، سیستم با مرزهای واضح بین ربات تلگرام، بکاند جنگو و پنل مدیریت React طراحی شده است. این امر توسعه، آزمایش مستقل و مهاجرت احتمالی آینده به یک معماری توزیعشدهتر را ترویج میکند.
- تعامل اجزا:
- ربات تلگرام <-> بکاند جنگو: ارتباط ناهمزمان از طریق وبهوکهای تلگرام برای ورودی کاربر و فراخوانیهای API RESTful امن برای بازیابی و بهروزرسانی دادهها.
- پنل مدیریت React <-> بکاند جنگو: تعاملات API RESTful امن، با بهرهگیری از Django REST Framework برای تبادل داده کارآمد.
- بکاند جنگو <-> سرویس API Marzban: فراخوانیهای API داخلی و احراز هویت شده، احتمالاً با استفاده از یک میکروسرویس اختصاصی یا یک ماژول تعریف شده در جنگو برای ادغام خارجی.
- ارتباط رویداد-محور (داخلی): استفاده از کارگزاران پیام (مانند Redis/RabbitMQ) برای رویدادهای ناهمزمان (مانند رویداد "پرداخت پذیرفته شد" که وظیفه "ایجاد اشتراک Marzban" را آغاز میکند)، افزایش پاسخگویی و تفکیک.
- جریان داده: ذخیرهسازی داده متمرکز و معتبر در پایگاه داده PostgreSQL در بکاند جنگو، با مکانیزمهای همگامسازی قوی برای Marzban.
- ملاحظات معماری آینده:
- دروازه API: با رشد سیستم، یک دروازه API میتواند برای ارائه یک نقطه ورود واحد برای تمام برنامههای مشتری معرفی شود و نگرانیهایی مانند احراز هویت، محدودیت نرخ و مسیریابی درخواست را مدیریت کند.
- میکرو-فرانتاندها (پنل مدیریت): برای رابطهای اداری بزرگتر یا اگر چندین تیم بخشهای متمایز را مدیریت میکنند، یک معماری میکرو-فرانتاند میتواند برای پنل مدیریت React برای امکان استقرار و مقیاسبندی مستقل اجزای UI مورد بررسی قرار گیرد.
اصول طراحی API
- طراحی RESTful: پایبندی به اصول REST برای نقاط پایانی API واضح، قابل پیشبینی و مقیاسپذیر. تأکید بر URLهای منابعمحور، متدهای استاندارد HTTP و کدهای وضعیت مناسب.
- نسخهبندی API: پیادهسازی نسخهبندی صریح API (مانند
/api/v1/
) برای اطمینان از سازگاری عقبرو و امکان تکامل API بدون شکستن کلاینتهای موجود. - ایدیمپوتنت: عملیات حیاتی (مانند پردازش پرداخت، فعالسازی اشتراک) به گونهای طراحی شدهاند که ایدیمپوتنت باشند و اطمینان حاصل شود که درخواستهای تکراری مشابه همان اثری را دارند که یک درخواست واحد.
- مستندات جامع: مستندات خودکار تولید شده OpenAPI (Swagger) با استفاده از
drf-spectacular
نگهداری و بهروز خواهند شد، که یک قرارداد واضح برای تمام مصرفکنندگان API ارائه میدهد.
پشته فناوری
- بکاند (جنگو و سرویس API):
- پایتون (آخرین نسخهها): برای تطبیقپذیری، اکوسیستم غنی و خوانایی آن.
- فریمورک جنگو: یک فریمورک وب بالغ، امن و با نظر برای توسعه سریع و مقیاسپذیری. منطق کسب و کار داخلی برای اصول طراحی مبتنی بر دامنه (DDD) تلاش خواهد کرد.
- Django REST Framework (DRF): برای ساخت نقاط پایانی API قدرتمند و انعطافپذیر، با تولید شمای (
drf-spectacular
برای OpenAPI/Swagger). - PostgreSQL: پایگاه داده رابطهای ترجیحی برای استحکام، ویژگیهای پیشرفته و پشتیبانی عالی از بینالمللیسازی و انواع دادههای پیچیده.
- ربات تلگرام:
- پایتون (آخرین نسخهها):
aiogram
(آخرین نسخه): یک فریمورک مدرن، ناهمزمان و با کارایی بالا برای رباتهای تلگرام.
- فرانتاند (پنل مدیریت):
- React.js: یک کتابخانه جاوااسکریپت اعلانی، مبتنی بر کامپوننت برای ساخت یک برنامه تکصفحهای سبک، پاسخگو و تعاملی.
- مدیریت وضعیت: استفاده از راهحلهای مدرن مانند
Zustand
یاReact Query
برای واکشی کارآمد داده و مدیریت وضعیت سراسری، باReact Context
برای وضعیت کامپوننت محلی. - استایلدهی: یک فریمورک CSS کاربردی مانند
Tailwind CSS
برای توسعه سریع UI و تمسازی سازگار، همراه با یک سیستم طراحی قوی (چه سفارشیسازی شده و چه بر اساس کتابخانهای مانند Ant Design/Material UI) برای سازگاری کامپوننت. - کتابخانه کامپوننت UI مدرن (مانند Ant Design, Material UI): برای طراحی سازگار، دسترسیپذیری و توسعه تسریع شده.
- پردازش ناهمزمان:
Celery
: یک صف وظایف توزیعشده قدرتمند برای اجرای وظایف ناهمزمان (مانند همگامسازی دادهها، بررسیهای برنامهریزی شده، ارسال اعلانها).Redis
یاRabbitMQ
: به عنوان یک کارگزار پیام برای Celery، ارائه صفبندی و تحویل وظایف قابل اعتماد.
بینالمللیسازی و بومیسازی
- پشتیبانی عمیق از زبان فارسی:
- تمام رشتههای کاربردی در ربات تلگرام و پنل مدیریت به طور کامل به فارسی ترجمه خواهند شد با استفاده از فریمورکهای استاندارد i18n (مانند
gettext
در جنگو،react-i18next
در React). - در نظر گرفتن طرحبندی راست به چپ (RTL) در رابط کاربری پنل مدیریت، تضمین جهتگیری صحیح متن و تراز عناصر.
- تمام رشتههای کاربردی در ربات تلگرام و پنل مدیریت به طور کامل به فارسی ترجمه خواهند شد با استفاده از فریمورکهای استاندارد i18n (مانند
- ادغام تاریخ و زمان جلالی:
- پشتیبانی کامل و سازگار از سیستم تقویم جلالی (فارسی) در تمام لایهها:
- سطح پایگاه داده: فیلدهای مدل جنگو سفارشی یا لایههای تبدیل قوی برای ذخیره و بازیابی تاریخهای جلالی.
- منطق بکاند: تمام محاسبات تاریخ و زمان به درستی تاریخهای جلالی را مدیریت خواهند کرد.
- رابط کاربری (پنل مدیریت): استفاده انحصاری از انتخابگرهای تاریخ جلالی، نمایشها و ورودیها، تضمین یک تجربه بومی برای مدیران.
امنیت و یکپارچگی دادهها
- امنیت API:
- API مدیریت: پیادهسازی احراز هویت قوی (مانند JWT، OAuth2) و مجوز (کنترل دسترسی مبتنی بر نقش - RBAC) برای تمام نقاط پایانی API.
- APIهای داخلی: ارتباط امن بین سرویسها با استفاده از کلیدهای API یا احراز هویت مبتنی بر توکن داخلی.
- اعتبارسنجی ورودی: اعتبارسنجی دقیق سمت سرور برای تمام ورودیهای کاربر و مدیر برای جلوگیری از آسیبپذیریهای رایج (مانند XSS، تزریق SQL).
- محدودیت نرخ: محافظت از APIها و تعاملات ربات در برابر سوء استفاده و حملات DDoS.
- مدیریت پرداخت:
- سیستم هرگز اطلاعات حساس کارت اعتباری را مستقیماً ذخیره نخواهد کرد. دستورالعملهای پرداخت کاربران را به درگاههای پرداخت خارجی امن یا حوالههای بانکی هدایت میکند.
- مدیریت و ذخیرهسازی امن عکسهای رسید پرداخت، با دسترسی محدود به مدیران مجاز.
- ردیابی حسابرسی برای تمام اقدامات اعتبارسنجی پرداخت.
- حریم خصوصی در طراحی: پایبندی به اصول حریم خصوصی داده (مانند GDPR، مقررات محلی) با به حداقل رساندن جمعآوری داده، ناشناسسازی دادههای حساس در صورت امکان و اطمینان از رضایت صریح.
- همگامسازی دادهها (کارگران ناهمزمان):
- کارگران ناهمزمان اختصاصی به طور مداوم دادهها را بین پایگاه داده برنامه جنگو و ارائهدهنده VPN Marzban نظارت و تطبیق خواهند داد.
- این شامل تأیید وضعیت اشتراک، حسابهای کاربر و اطمینان از سازگاری در سراسر سیستمها است.
- مدیریت خطای قوی، استراتژیهای حل تعارض و مکانیزمهای تلاش مجدد برای وظایف همگامسازی برای حفظ یکپارچگی دادهها ضروری است.
- کنترل دسترسی:
- کنترل دسترسی مبتنی بر نقش (RBAC) دقیق برای پنل مدیریت جهت مدیریت سطوح مختلف امتیازات مدیریتی، اعمال اصل حداقل امتیاز.
- احراز هویت امن برای تمام اجزا (ربات به بکاند، مدیر به بکاند).
- رمزنگاری دادهها: تمام دادههای حساس هم در حالت استراحت (پایگاه داده، ذخیرهسازی فایل) و هم در حال انتقال (HTTPS/TLS برای تمام ارتباطات) رمزگذاری خواهند شد.
- بازرسیهای امنیتی منظم: بررسیهای امنیتی دورهای و تست نفوذ برای شناسایی و رفع آسیبپذیریهای احتمالی انجام خواهد شد.
استقرار و مقیاسپذیری
- کانتینریسازی: داکر برای کانتینریسازی ربات تلگرام، بکاند جنگو و پنل مدیریت React استفاده خواهد شد تا محیطهای سازگار در توسعه، مرحلهبندی و تولید را تضمین کند.
- ارکستراسیون: داکر کامپوز برای توسعه و آزمایش محلی. برای تولید، Kubernetes یا پلتفرمهای ارکستراسیون کانتینر مشابه برای مدیریت، مقیاسبندی و خودترمیمگری سرویسها در نظر گرفته خواهد شد.
- زیرساخت به عنوان کد (IaC): ابزارهایی مانند Terraform یا Ansible برای تعریف و مدیریت زیرساخت استفاده خواهند شد و استقرارهای قابل تکرار و سازگار را تضمین میکنند.
- خطوط لوله CI/CD: خطوط لوله یکپارچهسازی مداوم و استقرار مداوم خودکار برای اطمینان از کیفیت کد، آزمایش خودکار و استقرار یکپارچه در محیطهای تولید تنظیم خواهد شد.
- ابری مستقل: طراحی شده است که بسیار قابل حمل و قابل استقرار در ارائهدهندگان مختلف ابری (AWS, Azure, Google Cloud و غیره) باشد. گزینههای Serverless (مانند AWS Lambda برای وظایف خاص و جداگانه) ممکن است برای بهینهسازی هزینه و مقیاسپذیری در آینده مورد بررسی قرار گیرند.
- نظارت و ثبت: ادغام با ابزارهای نظارت (مانند Prometheus, Grafana) و ثبت متمرکز (مانند ELK stack, Datadog) برای بینشهای بیدرنگ در مورد عملکرد سیستم، خطاها و رویدادهای امنیتی. ردیابی توزیعشده برای درک بهتر جریان درخواستها در سرویسهای مختلف پیادهسازی خواهد شد.
- هشداردهی: مکانیزمهای هشداردهی پیشگیرانه برای اطلاعرسانی به مدیران در مورد مسائل حیاتی سیستم، کاهش عملکرد یا حوادث امنیتی پیکربندی خواهد شد.
- پشتیبانگیری و بازیابی: استراتژیهای جامع برای پشتیبانگیری منظم از پایگاه داده و برنامههای بازیابی فاجعه برای اطمینان از انعطافپذیری دادهها.
بهبودهای آینده
- اعتبارسنجی خودکار رسید: پیادهسازی OCR یا تشخیص تصویر مبتنی بر هوش مصنوعی/یادگیری ماشین برای خودکارسازی جزئی اعتبارسنجی رسیدهای پرداخت، کاهش قابل توجه بار کاری دستی مدیر.
- روشهای پرداخت متعدد: ادغام با طیف گستردهتری از درگاههای پرداخت محلی و بینالمللی برای ارائه انعطافپذیری بیشتر به کاربران.
- سیستم ارجاع: توسعه سیستمی برای اجازه دادن به کاربران برای ارجاع مشتریان جدید، ارائه پاداش یا تخفیف.
- آمار مصرف کاربر: ارائه آمار دقیق به کاربران در مورد مصرف VPN آنها (مانند انتقال داده، زمان اتصال) در صورتی که API Marzban اجازه چنین دادههای دقیقی را بدهد.
- کدهای تبلیغاتی/تخفیف: پیادهسازی یک سیستم انعطافپذیر برای ارائه کدهای تبلیغاتی و تخفیف برای جذب کاربران جدید و پاداش به مشتریان وفادار.
- ادغام برنامه وب تلگرام: بررسی ادغام یک برنامه وب تلگرام برای تجربه رابط کاربری غنیتر و تعاملیتر مستقیماً در تلگرام برای برخی از ویژگیها، مانند مدیریت دقیق اشتراک یا مرور طرحها.
- وبهوکها برای ادغامهای خارجی: ارائه قابلیتهای وبهوک برای ادغام با پلتفرمهای CRM، تجزیه و تحلیل یا اتوماسیون بازاریابی خارجی، افزایش قابلیت توسعه سیستم.
- فریمورک تست A/B: پیادهسازی یک فریمورک برای انجام تستهای A/B بر روی پیامهای ربات، طرحهای اشتراک یا استراتژیهای قیمتگذاری برای بهینهسازی تعامل کاربر و نرخ تبدیل.
- عناصر گیمیفیکیشن: معرفی عناصر گیمیفیکیشن (مانند امتیازات وفاداری، نشانها برای اشتراک مستمر) برای افزایش تعامل و حفظ کاربر.
- تجزیه و تحلیل پیشرفته و شخصیسازی: بهرهگیری از دادههای کاربر (در صورت امکان به صورت ناشناس) برای ارائه توصیههای شخصیسازی شده برای طرحهای VPN یا پیشنهادات تبلیغاتی سفارشی.
شروع به کار
جزئیات بیشتر در مورد راهاندازی محلی، نصب و دستورالعملهای توسعه در فایل اختصاصی CONTRIBUTING.md
و در مستندات پروژه ارائه خواهد شد.