hosting-platform/WORKFLOW_DIAGRAMS.md

244 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 📊 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)