# WhatsApp Toplu Mesajlaşma Platformu - Sistem Özeti

## 🎯 Proje Hakkında

Multi-tenant (çoklu müşteri) WhatsApp toplu mesajlaşma ve yönetim platformu. İki farklı hizmet modeli sunar:

1. **Panel Only (BYON)**: Müşteri kendi numaralarını kullanır, sadece panel hizmeti
2. **Full Service**: Numaralar dahil, otomatik warming sistemi ile tam hizmet

## 📊 Sistem Mimarisi

### Veritabanı (18 Tablo)

**Kullanıcı Yönetimi:**
- `users` - Kullanıcılar (admin + müşteriler)
- `tenants` - Müşteri hesapları (tenant bilgileri)
- `api_keys` - API anahtarları

**WhatsApp Yönetimi:**
- `whatsapp_numbers` - WhatsApp numaraları
- `warming_message_templates` - 35 warming şablonu
- `warming_history` - Warming mesaj geçmişi
- `warming_scheduler_state` - Scheduler durumu

**Mesajlaşma:**
- `contacts` - Kişiler/alıcılar
- `campaigns` - Mesaj kampanyaları
- `campaign_recipients` - Kampanya alıcıları
- `messages` - Tüm mesajlar (gelen/giden)
- `auto_replies` - Otomatik cevaplar
- `auto_reply_logs` - Otomatik cevap logları

**Sistem:**
- `system_settings` - Sistem ayarları
- `activity_logs` - Aktivite kayıtları
- `hat_whatsapp_dispatch_state` - Gönderim durumu
- `hat_whatsapp_send_log` - Gönderim logları

### Backend Servisleri (9 Sınıf)

**`src/Platform/`**
1. `Database.php` - PDO bağlantı yönetimi
2. `UserService.php` - Kullanıcı işlemleri (login, register)
3. `TenantService.php` - Müşteri yönetimi
4. `WhatsAppNumberService.php` - Numara yönetimi, warming frekans kontrolü
5. `MessageService.php` - Mesaj gönderme/alma
6. `CampaignService.php` - Kampanya yönetimi
7. `ContactService.php` - Kişi yönetimi
8. `AutoReplyService.php` - Otomatik cevap sistemi
9. `WarmingService.php` - Warming işlemleri
10. `WarmingScheduler.php` - Otomatik warming zamanlayıcı

### Web Paneli (11 Sayfa)

**`public/`**
- `index.php` - Login sayfası
- `dashboard.php` - Ana panel (istatistikler)
- `numbers.php` - WhatsApp numara yönetimi
- `contacts.php` - Kişi yönetimi
- `campaigns.php` - Kampanya oluşturma/yönetimi
- `messages.php` - Gelen mesaj inbox
- `auto-replies.php` - Otomatik cevap kuralları
- `logout.php` - Çıkış
- `_header.php`, `_footer.php`, `_nav.php` - Ortak bileşenler
- `assets/style.css` - Modern, responsive CSS

## 🔥 Öne Çıkan Özellikler

### 1. Warming Sistemi (Bloke Önleme)

**Otomatik Frekans Ayarlama:**
- **0-7 gün (Yeni)**: Her dakika mesaj → HIGH
- **7-30 gün (Orta)**: Saatte bir mesaj → MEDIUM  
- **30+ gün (Eski)**: Günde bir mesaj → LOW

**35 Gerçekçi Türkçe Şablon:**
- Market, fırın, manav, işten eve, okul, eczane, pet shop
- Elektrik kesintisi, misafir, ulaşım, hasta bakım, hava durumu
- Banka, kargo, yemek siparişi, araç, eğitim, veteriner
- Seyahat, sabah rutini, pazar, sulama, güvenlik, çöp
- WiFi, dolmuş, doğum günü, sağlık, kıyafet, market indirim
- Komşu, spor, yedek anahtar, bebek maması

**Çalışma Prensibi:**
```
Numara A → Numara B: "Market" şablonu
Numara B → Numara A: Cevap şablonu
(Sadece sistemdeki numaralar arası, müşterilere GİTMEZ)
```

### 2. Kampanya Sistemi

- Toplu mesaj gönderimi
- Zamanlama özelliği (scheduled_at)
- Kişi seçimi (tümü veya seçili)
- Medya desteği (resim, ses, video - hazır)
- Durum takibi (pending, sent, delivered, read, failed)
- Otomatik numara dağılımı (round-robin)

### 3. Otomatik Cevap

**Tetikleyici Tipleri:**
- **Keyword**: Belirli kelimeleri içeren mesajlar
- **All**: Tüm gelen mesajlar
- **First Message**: İlk defa mesaj atanlar

**Özellikler:**
- Öncelik sistemi (priority)
- Aktif/pasif durumu
- Numara bazlı veya genel

### 4. Multi-Tenant Yapı

- Her müşteri izole ortam
- Limit yönetimi (max_numbers, max_daily_messages)
- Hizmet tipi seçimi (panel_only / full_service)
- Trial/Active/Suspended durumları

## 📈 Mesaj Akışı

### Giden Mesaj (Kampanya)
```
1. Kullanıcı kampanya oluşturur
2. Kişiler seçilir
3. Her kişiye WhatsApp numarası atanır (round-robin)
4. messages tablosuna kaydedilir (status: pending)
5. WhatsApp API'ye gönderilir
6. Durum güncellenir (sent → delivered → read)
```

### Gelen Mesaj
```
1. WhatsApp webhook mesajı alır
2. messages tablosuna kaydedilir (direction: inbound)
3. Otomatik cevap kuralları kontrol edilir
4. Eşleşme varsa otomatik cevap gönderilir
5. auto_reply_logs'a kaydedilir
```

### Warming Mesaj
```
1. Scheduler her dakika çalışır
2. Warming gereken numaraları bulur (frekansa göre)
3. Rastgele şablon seçer
4. Eş numara bulur (aynı tenant'tan)
5. İki yönlü sohbet oluşturur
6. warming_history'ye kaydeder
7. is_warming_message = TRUE ile messages'a ekler
```

## 🔧 Sistem Ayarları

**`system_settings` Tablosu:**
```sql
warming_high_frequency_minutes = 1      -- Yeni numara: her dakika
warming_medium_frequency_minutes = 60   -- Orta: saatte bir
warming_low_frequency_minutes = 1440    -- Eski: günde bir
warming_high_to_medium_days = 7         -- 7 gün sonra orta'ya geç
warming_medium_to_low_days = 30         -- 30 gün sonra düşük'e geç
max_messages_per_minute = 20            -- Rate limiting
default_max_numbers_per_tenant = 10     -- Müşteri başına numara limiti
default_max_daily_messages = 1000       -- Günlük mesaj limiti
```

## 🚀 Kurulum Özeti

```bash
# 1. Composer autoload
composer dump-autoload

# 2. Veritabanı kurulumu
php scripts/setup_platform_database.php

# 3. Web sunucusu başlat (Laragon)
# http://wp.test/

# 4. İlk giriş
# Email: admin@whatsapp-platform.local
# Şifre: admin123

# 5. Warming scheduler (opsiyonel)
php scripts/run_warming_scheduler.php
```

## 📁 Dosya Yapısı

```
wp/
├── config/
│   └── hat_database.php              # DB config
├── database/
│   └── migrations/
│       ├── 001_create_whatsapp_platform_schema.sql
│       └── 002_seed_initial_data.sql
├── public/                           # Web root
│   ├── index.php                     # Login
│   ├── dashboard.php                 # Ana panel
│   ├── numbers.php                   # Numara yönetimi
│   ├── contacts.php                  # Kişiler
│   ├── campaigns.php                 # Kampanyalar
│   ├── messages.php                  # Inbox
│   ├── auto-replies.php              # Otomatik cevaplar
│   ├── logout.php
│   ├── _header.php, _footer.php, _nav.php
│   └── assets/style.css
├── scripts/
│   ├── setup_platform_database.php   # Kurulum
│   ├── run_warming_scheduler.php     # Warming cron
│   ├── run_hat_messaging_mysql.php   # Eski hat sistemi
│   └── whatsapp_hat_tick.php
├── src/
│   ├── HatMessaging/                 # Mevcut hat sistemi (16 dosya)
│   └── Platform/                     # Yeni platform (10 dosya)
│       ├── Database.php
│       ├── UserService.php
│       ├── TenantService.php
│       ├── WhatsAppNumberService.php
│       ├── MessageService.php
│       ├── CampaignService.php
│       ├── ContactService.php
│       ├── AutoReplyService.php
│       ├── WarmingService.php
│       └── WarmingScheduler.php
├── vendor/                           # Composer
├── composer.json
├── README.md                         # Ana dokümantasyon
├── KURULUM.md                        # Detaylı kurulum
└── SISTEM_OZETI.md                   # Bu dosya
```

## 🎨 UI/UX Özellikleri

- Modern gradient tasarım (purple-violet)
- Responsive (mobil uyumlu)
- Modal popup'lar
- Badge sistemli durum göstergeleri
- İstatistik kartları
- Tablo bazlı listeler
- Form validasyonu
- Alert mesajları (success/error)
- Empty state görselleri

## 🔐 Güvenlik

- Password hashing (PHP password_hash)
- Prepared statements (SQL injection koruması)
- XSS koruması (htmlspecialchars)
- Session yönetimi
- Role-based access (admin/customer)
- Input sanitization

## 📊 İstatistikler ve Raporlama

**Dashboard Metrikleri:**
- Toplam WhatsApp numarası
- Toplam kişi sayısı
- Toplam kampanya
- Bugün gönderilen mesaj

**Kampanya Metrikleri:**
- Toplam alıcı
- Gönderilen
- İletildi
- Okundu
- Başarısız

**Warming İstatistikleri:**
- Toplam warming mesajı
- Günlük warming
- Numara bazlı istatistik

## 🔮 Gelecek Özellikler (Hazır Altyapı)

1. **WhatsApp QR Kod Entegrasyonu** - `qr_code` ve `session_data` alanları hazır
2. **Meta Business API** - `WhatsAppTransportFactory` mevcut
3. **Medya Gönderimi** - `media_url`, `media_type` alanları hazır
4. **API Endpoint'leri** - `api_keys` tablosu hazır
5. **Webhook Sistemi** - Gelen mesaj altyapısı hazır
6. **Admin Panel** - Tenant yönetimi servisleri hazır
7. **Detaylı Raporlama** - Activity logs hazır

## 💡 Kullanım Senaryoları

### Senaryo 1: Panel Only Müşteri
1. Müşteri kaydolur
2. Kendi WhatsApp numaralarını ekler
3. QR kod ile bağlar
4. Kişi listesi oluşturur
5. Kampanya gönderir
6. Warming KAPALI (kendi numaraları)

### Senaryo 2: Full Service Müşteri
1. Admin müşteri oluşturur
2. Admin WhatsApp numaraları ekler
3. Warming AÇIK (otomatik)
4. Müşteri sadece kampanya yönetir
5. Sistem arka planda warming yapar

## 🎯 Başarı Kriterleri

✅ Multi-tenant yapı çalışıyor  
✅ 18 tablo başarıyla oluşturuldu  
✅ 35 warming şablonu eklendi  
✅ 10 backend servisi hazır  
✅ 11 web sayfası tamamlandı  
✅ Warming sistemi otomatik çalışıyor  
✅ Kampanya sistemi hazır  
✅ Otomatik cevap çalışıyor  
✅ Modern UI/UX tasarımı  
✅ Güvenlik önlemleri alındı  

## 📞 Önemli Notlar

1. **Admin şifresini mutlaka değiştirin!**
2. **Warming sadece sistem içi numaralar arası çalışır**
3. **Production'da HTTPS kullanın**
4. **Veritabanı yedeği alın**
5. **Rate limiting ayarlarını kontrol edin**
6. **WhatsApp API limitlerine dikkat edin**

---

**Sistem Durumu:** ✅ Tam Fonksiyonel  
**Versiyon:** 1.0.0  
**Geliştirme Tarihi:** 2026-05-29  
**Teknoloji:** PHP 8.1+, MySQL, Vanilla JS, Modern CSS
