hosting-platform/WORKFLOW_DIAGRAMS.md

244 lines
6.1 KiB
Markdown
Raw Normal View History

# 📊 Hosting Platform - İş Akışı Diyagramları
Bu dokümanda projenin tüm görsel iş akışı diyagramları bulunmaktadır.
## 📑 İçindekiler
1. [Genel İş Akışları](#genel-iş-akışları)
2. [Domain Setup Detaylı Akış](#domain-setup-detaylı-akış)
3. [API Endpoint Yapısı](#api-endpoint-yapısı)
4. [Veritabanı Şemaları](#veritabanı-şemaları)
5. [Sistem Mimarisi](#sistem-mimarisi)
6. [Kimlik Doğrulama](#kimlik-doğrulama)
---
## 🔄 Genel İş Akışları
### Müşteri Panel - Ana İş Akışı
Bu diyagram müşteri panelinin tüm ana işlevlerini gösterir:
- Kullanıcı kaydı ve girişi
- Dashboard yönetimi
- Domain ekleme ve yönetimi (8 adımlı süreç)
- Container deployment
- Abonelik yönetimi
**Akış Adımları:**
1. **Kimlik Doğrulama**: Register/Login → JWT Token
2. **Dashboard**: Profil, Domain Listesi, İstatistikler
3. **Domain Yönetimi**:
- Domain ekle
- CF hesap seç (Company/Own)
- Zone doğrula
- NS kontrolü
- DNS önizleme
- DNS uygula
- SSL yapılandır
- Veritabanına kaydet
4. **Container**: Deploy → Yapılandır → Yönet
5. **Abonelik**: Planları görüntüle → Yükselt → Ödeme
### Admin Panel - Ana İş Akışı
Bu diyagram admin panelinin tüm yönetim işlevlerini gösterir:
- Admin girişi ve audit logging
- Dashboard ve istatistikler
- Müşteri yönetimi
- Plan yönetimi (CRUD)
- Cloudflare hesap yönetimi
- Audit log sistemi
**Akış Adımları:**
1. **Kimlik Doğrulama**: Admin Login → JWT + Role → Audit Log
2. **Dashboard**: Sistem istatistikleri ve genel bakış
3. **Müşteri Yönetimi**: Liste → Detay → Plan Güncelle → Durum Yönet
4. **Plan Yönetimi**: Liste → Oluştur/Düzenle/Sil → Limit Belirle
5. **CF Yönetimi**: Liste → Ekle/Düzenle → Token Şifrele → Kota Kontrol
6. **Audit**: Tüm işlemler loglanır → Görüntüle → Filtrele
---
## 🌐 Domain Setup Detaylı Akış
### Sequence Diagram - Adım Adım
Bu sequence diagram, domain ekleme sürecinin tüm adımlarını detaylı gösterir:
**Katılımcılar:**
- Kullanıcı
- Frontend (React)
- Backend API (Flask)
- PostgreSQL Database
- Cloudflare API
- Load Balancer
**Süreç:**
1. **Domain Girişi**
- Kullanıcı domain adını girer
- POST /api/dns/validate-domain
- Database'de kontrol edilir
2. **CF Hesap Seçimi**
- Company Account: Listeden seçim
- Own Account: Token girişi
3. **Zone Doğrulama**
- Cloudflare API ile zone bilgisi alınır
- Zone ID, nameservers kaydedilir
4. **Nameserver Kontrolü**
- NS kayıtları kontrol edilir
- Yapılandırılmamışsa talimatlar gösterilir
- Polling ile kontrol devam eder
5. **DNS Önizleme**
- Load Balancer IP seçilir (hash-based)
- Mevcut DNS kayıtları alınır
- Değişiklikler hesaplanır ve gösterilir
6. **DNS Uygulama**
- A records güncellenir (root + www)
- SSL yapılandırması (Full, HTTPS, Auto Rewrites)
- Database'e kaydedilir
7. **Tamamlama**
- Domain aktif duruma geçer
- Başarı mesajı gösterilir
---
## 📡 API Endpoint Yapısı
### Müşteri Panel API Endpoints
**Kategoriler:**
- 🔐 **Authentication** (`/api/auth`)
- POST /register
- POST /login
- GET /me
- POST /logout
- 👤 **Customer** (`/api/customer`)
- GET /domains
- POST /domains
- GET /domains/:id
- DELETE /domains/:id
- GET /stats
- 🌐 **DNS** (`/api/dns`)
- POST /validate-domain
- POST /validate-zone
- POST /select-company-account
- GET /check-nameservers
- POST /preview-changes
- POST /apply-changes
- ⚙️ **Admin** (`/api/admin`)
- CF Accounts CRUD
- Customers Management
- Stats
- 🐳 **Containers** (`/api/containers`)
- GET /
- POST /deploy
- GET /:id
- DELETE /:id
### Admin Panel API Endpoints
**Kategoriler:**
- 🔐 **Authentication** (`/api/auth`)
- 📋 **Plans** (`/api/plans`) - CRUD
- ☁️ **CF Accounts** (`/api/cf-accounts`) - CRUD
- 👥 **Customers** (`/api/customers`) - Management
- 📝 **Audit** (`/api/audit`) - Logs & Stats
---
## 🗄️ Veritabanı Şemaları
### Müşteri Panel Database (hosting_db)
**Entity Relationships:**
- USERS (1) → (N) CUSTOMERS
- CUSTOMERS (1) → (N) DOMAINS
- DOMAINS (1) → (N) DNS_RECORDS
- CLOUDFLARE_ACCOUNTS (1) → (N) DOMAINS
**Ana Tablolar:**
1. **users**: Kullanıcı hesapları
2. **customers**: Müşteri profilleri ve abonelikler
3. **domains**: Domain kayıtları
4. **dns_records**: DNS kayıt detayları
5. **cloudflare_accounts**: Şirket CF hesapları
**Önemli Alanlar:**
- `cf_api_token_encrypted`: Şifrelenmiş API token (Fernet)
- `subscription_plan`: Plan slug (free, basic, premium)
- `cf_account_type`: 'company' veya 'own'
- `status`: pending, active, suspended, deleted
### Admin Panel Database (admin_hosting_db)
**Entity Relationships:**
- ADMIN_USERS (1) → (N) AUDIT_LOGS
- SUBSCRIPTION_PLANS ← → CLOUDFLARE_ACCOUNTS
**Ana Tablolar:**
1. **admin_users**: Admin hesapları
2. **subscription_plans**: Abonelik planları
3. **cloudflare_accounts**: CF hesap yönetimi
4. **audit_logs**: Tüm admin işlemleri
**Önemli Alanlar:**
- `role`: admin, super_admin
- `features`: JSON array (plan özellikleri)
- `action`: login, create_plan, update_customer, vb.
- `details`: JSON (işlem detayları)
---
## 🏗️ Sistem Mimarisi
### Genel Mimari
**Katmanlar:**
1. **Internet Layer**
- Kullanıcılar (Müşteriler + Adminler)
- HTTPS üzerinden erişim
2. **CDN/DNS Layer**
- Cloudflare (DNS, SSL, Proxy)
- DDoS koruması
- SSL/TLS termination
3. **Frontend Layer**
- Customer React App (argeict.net, Port 3000)
- Admin React App (admin.argeict.net, Port 3001)
4. **Backend Layer**
- Customer Flask API (api.argeict.net, Port 5000)
- Admin Flask API (admin-api.argeict.net, Port 5001)
5. **Data Layer**
- PostgreSQL: hosting_db
- PostgreSQL: admin_hosting_db
- Redis Cache
6. **Infrastructure Layer**
- Load Balancers (3 adet)
- Docker Containers
- Nginx Reverse Proxy
**Veri Akışı:**
- Frontend → Backend: REST API (JSON)
- Backend → Database: SQLAlchemy ORM
- Backend → Cache: Redis
- Backend → Cloudflare: REST API
- Admin Panel → Customer Panel: API Call (cross-panel)