Vaka Çalışması
Proje Vaka Çalışması
Zorluklar, çözümler, kazanımlar, teknik öne çıkanlar, mimari ve proje ölçeği.
⚡
Zorluklar
1. Tek bir projede iki farklı ortamın (Django web + Aiogram Telegram botu) eşzamanlı yönetimi.
2. Kullanıcıların Telegram ID üzerinden şifresiz kimlik doğrulaması.
3. Telegram'ın Rate Limit sınırlarına uyarak çok sayıda kullanıcıya toplu mesaj gönderme.
4. Özel kullanıcı modelinin (CustomUser) Django kimlik doğrulama sistemiyle entegrasyonu.
5. Çok dilli taleplerin yönetimi ve 4 dilli verilerin veritabanında saklanması.
6. Async Telegram botu ile sync Django çalışmasının koordinasyonu.
💡
Çözümler
1. Bot yönetimi için Aiogram, yönetim paneli için Django kullanımı.
2. Kullanıcıların kullanıcı adı/şifre yerine benzersiz telegram_id ile tanımlanması.
3. Engellenmemek için mesajların ayrı bir thread'de her gönderim arasında 60 saniye aralıkla gönderilmesi.
4. AbstractUser'dan miras alarak ve Telegram'a özel alanlar ekleyerek CustomUser oluşturma.
5. Çok dilli içeriğin ayrı alanlarda saklanması (title_en, title_ar, title_tr, vb.).
6. Async bot ortamında Django ORM'u çağırmak için sync_to_async kullanımı.
📚
Kazanımlar
- Müşteri yanıt süresinin günlerden saatlere düşürülmesi.
- Tüm kullanıcı taleplerinin tek bir panelden yönetimi.
- Tek tıkla tüm kullanıcılara toplu mesaj gönderme imkânı.
- Telegram botu üzerinden form gerektirmeden otomatik kullanıcı kaydı.
- Proje içeriği için 4 dil desteği (Farsça, İngilizce, Arapça, Türkçe).
🔧
Teknik Öne Çıkanlar
- Kullanıcı kayıt akışını yönetmek için Aiogram'da FSM (Sonlu Durum Makinesi) kullanımı.
- Erişimi kısıtlamak için özel bir izin sistemi (IsSuperUser) uygulanması.
- persiantools kütüphanesi ile Miladi tarihlerin Jalali'ye dönüştürülmesi.
- Yüklenen dosyaların timestamp tabanlı benzersiz isimlendirme ile güvenli yönetimi.
- Sayfa yenilemeden kanal bağlantılarını düzenlemek için AJAX kullanımı.
- Kısıtlı ortamlarda Telegram'a bağlanmak için SOCKS5 proxy desteği.
🏗️
Mimari
Proje, Django'nun MVT mimarisi üzerine kurulmuştur ve üç ana uygulamadan oluşur:
1. crm: Kullanıcı yönetimi, danışmanlık, yatırım, trader'lar ve kanal bağlantıları.
2. telegram_bot: Aiogram ile Telegram botu uygulaması ve FSM yönetimi.
3. payments: Ödeme modülü (geliştirme aşamasında).
Bot ile panel arasındaki iletişim ortak veritabanı (SQLite/MySQL) üzerinden sağlanır. Bot, runserver çalışırken ayrı bir thread'de başlar.
📐
Proje Ölçeği
Proje, büyük ölçeğe büyüme potansiyeli olan orta ölçekli bir uygulama düzeyinde tasarlanmıştır. Şu anda geliştirme ve test için uygun olan SQLite kullanmaktadır ve üretim için MySQL veya PostgreSQL'e yükseltilebilir.