# 🎨 Admin Panel - Sistem Diyagramları Bu dosya Admin Panel'in tüm sistem diyagramlarını içerir. Tüm diyagramlar Mermaid formatında olup VS Code'da düzenlenebilir. ## 📑 İçindekiler 1. [Genel Sistem Mimarisi](#1-genel-sistem-mimarisi) 2. [Admin Panel İş Akışı](#2-admin-panel-iş-akışı) 3. [Kimlik Doğrulama Akışı](#3-kimlik-doğrulama-akışı) 4. [Müşteri Yönetimi Akışı](#4-müşteri-yönetimi-akışı) 5. [Plan Yönetimi Akışı](#5-plan-yönetimi-akışı) 6. [Cloudflare Hesap Yönetimi](#6-cloudflare-hesap-yönetimi) 7. [Veritabanı Şeması](#7-veritabanı-şeması) 8. [API Endpoint Yapısı](#8-api-endpoint-yapısı) 9. [Audit Log Sistemi](#9-audit-log-sistemi) 10. [Deployment Mimarisi](#10-deployment-mimarisi) --- ## 1. Genel Sistem Mimarisi Admin Panel'in genel sistem mimarisini gösterir. ```mermaid graph TB subgraph "Frontend Layer" AdminUI[Admin UI
React + Vite
Port: 5173] end subgraph "Backend Layer" AdminAPI[Admin API
Flask
Port: 5001] Auth[Auth Service
JWT] AuditService[Audit Service
Logging] end subgraph "Database Layer" AdminDB[(Admin DB
PostgreSQL
admin_hosting_db)] CustomerDB[(Customer DB
PostgreSQL
hosting)] end subgraph "External Services" CustomerAPI[Customer API
Port: 5000] CF[Cloudflare API] end AdminUI -->|HTTPS| AdminAPI AdminAPI --> Auth AdminAPI --> AuditService AdminAPI --> AdminDB AdminAPI -.->|Read Only| CustomerDB AdminAPI -->|Internal API| CustomerAPI AdminAPI -->|Validate Tokens| CF Auth --> AdminDB AuditService --> AdminDB style AdminUI fill:#ffebee style AdminAPI fill:#fff3e0 style AdminDB fill:#e8f5e9 style CustomerDB fill:#e1f5ff style CustomerAPI fill:#f3e5f5 ``` --- ## 2. Admin Panel İş Akışı Admin kullanıcısının tüm işlevlerini gösteren ana akış diyagramı. ```mermaid graph TB Start([Admin Giriş]) Login[Login
Username + Password] Auth{Kimlik
Doğrulama} Dashboard[Dashboard
İstatistikler] subgraph "Ana Modüller" Customers[Müşteri Yönetimi] Plans[Plan Yönetimi] CFAccounts[CF Hesap Yönetimi] Audit[Audit Logs] end subgraph "Müşteri İşlemleri" ListCustomers[Müşteri Listesi] ViewCustomer[Müşteri Detay] UpdatePlan[Plan Güncelle] ManageStatus[Durum Yönet] end subgraph "Plan İşlemleri" ListPlans[Plan Listesi] CreatePlan[Plan Oluştur] EditPlan[Plan Düzenle] DeletePlan[Plan Sil] end subgraph "CF İşlemleri" ListCF[CF Hesap Listesi] AddCF[CF Hesap Ekle] EditCF[CF Hesap Düzenle] DeleteCF[CF Hesap Sil] ValidateCF[Token Doğrula] end Start --> Login Login --> Auth Auth -->|Başarılı| Dashboard Auth -->|Başarısız| Login Dashboard --> Customers Dashboard --> Plans Dashboard --> CFAccounts Dashboard --> Audit Customers --> ListCustomers ListCustomers --> ViewCustomer ViewCustomer --> UpdatePlan ViewCustomer --> ManageStatus Plans --> ListPlans ListPlans --> CreatePlan ListPlans --> EditPlan ListPlans --> DeletePlan CFAccounts --> ListCF ListCF --> AddCF ListCF --> EditCF ListCF --> DeleteCF AddCF --> ValidateCF EditCF --> ValidateCF style Start fill:#ffebee style Dashboard fill:#fff3e0 style Auth fill:#e1f5ff style Customers fill:#e8f5e9 style Plans fill:#f3e5f5 style CFAccounts fill:#fff9c4 ``` --- ## 3. Kimlik Doğrulama Akışı Admin login ve JWT token yönetimi. ```mermaid sequenceDiagram participant A as Admin User participant UI as Admin UI participant API as Admin API participant Auth as Auth Service participant DB as Admin DB participant Audit as Audit Log A->>UI: Username + Password Gir UI->>API: POST /api/auth/login API->>Auth: Validate Credentials Auth->>DB: SELECT * FROM admin_users DB-->>Auth: Admin User Data alt Credentials Valid Auth->>Auth: Verify Password Hash Auth->>Auth: Generate JWT Token Auth->>DB: UPDATE last_login Auth->>Audit: Log Login Action Audit->>DB: INSERT audit_log Auth-->>API: Token + Admin Data API-->>UI: Success + Token UI->>UI: Store Token (localStorage) UI-->>A: Redirect to Dashboard else Invalid Credentials Auth-->>API: Error: Invalid Credentials API-->>UI: 401 Unauthorized UI-->>A: Show Error Message end Note over UI,API: Subsequent Requests A->>UI: Access Protected Route UI->>API: Request + Authorization Header API->>Auth: Verify JWT Token Auth-->>API: Token Valid + Admin Data API-->>UI: Protected Resource ``` --- ## 4. Müşteri Yönetimi Akışı Admin'in müşterileri görüntüleme ve yönetme süreci. ```mermaid sequenceDiagram participant A as Admin participant UI as Admin UI participant API as Admin API participant CustAPI as Customer API participant CustDB as Customer DB participant Audit as Audit Log Note over A,Audit: Müşteri Listesi Görüntüleme A->>UI: Müşteriler Sayfası UI->>API: GET /api/customers API->>CustAPI: GET /api/admin/customers CustAPI->>CustDB: SELECT customers + users CustDB-->>CustAPI: Customer Data CustAPI-->>API: Customer List API-->>UI: Customer List UI-->>A: Müşteri Tablosu Note over A,Audit: Müşteri Detay Görüntüleme A->>UI: Müşteri Seç UI->>API: GET /api/customers/:id API->>CustAPI: GET /api/admin/customers/:id CustAPI->>CustDB: SELECT customer details CustAPI->>CustDB: SELECT domains CustDB-->>CustAPI: Full Customer Data CustAPI-->>API: Customer Details API-->>UI: Customer Details UI-->>A: Detay Sayfası Note over A,Audit: Plan Güncelleme A->>UI: Plan Değiştir UI->>API: PUT /api/customers/:id/plan API->>CustAPI: PUT /api/admin/customers/:id/plan CustAPI->>CustDB: UPDATE customer plan CustDB-->>CustAPI: Success CustAPI-->>API: Success API->>Audit: Log Plan Update API-->>UI: Success Message UI-->>A: Plan Güncellendi ``` --- ## 5. Plan Yönetimi Akışı Subscription plan oluşturma, düzenleme ve silme işlemleri. ```mermaid graph TB Start([Plan Yönetimi]) List[Plan Listesi] subgraph "Plan Görüntüleme" GetPlans[GET /api/plans] ShowList[Plan Tablosu] end subgraph "Plan Oluşturma" CreateForm[Yeni Plan Formu] ValidateCreate{Validasyon} CreateAPI[POST /api/plans] SaveDB[(Veritabanına Kaydet)] LogCreate[Audit Log] end subgraph "Plan Düzenleme" EditForm[Plan Düzenle Formu] ValidateEdit{Validasyon} UpdateAPI[PUT /api/plans/:id] UpdateDB[(Veritabanı Güncelle)] LogUpdate[Audit Log] end subgraph "Plan Silme" ConfirmDelete{Onay} CheckUsage{Kullanımda mı?} DeleteAPI[DELETE /api/plans/:id] DeleteDB[(Veritabanından Sil)] LogDelete[Audit Log] end Start --> List List --> GetPlans GetPlans --> ShowList ShowList --> CreateForm CreateForm --> ValidateCreate ValidateCreate -->|Geçerli| CreateAPI ValidateCreate -->|Hatalı| CreateForm CreateAPI --> SaveDB SaveDB --> LogCreate LogCreate --> List ShowList --> EditForm EditForm --> ValidateEdit ValidateEdit -->|Geçerli| UpdateAPI ValidateEdit -->|Hatalı| EditForm UpdateAPI --> UpdateDB UpdateDB --> LogUpdate LogUpdate --> List ShowList --> ConfirmDelete ConfirmDelete -->|Evet| CheckUsage ConfirmDelete -->|Hayır| List CheckUsage -->|Kullanımda Değil| DeleteAPI CheckUsage -->|Kullanımda| List DeleteAPI --> DeleteDB DeleteDB --> LogDelete LogDelete --> List style Start fill:#ffebee style List fill:#fff3e0 style SaveDB fill:#e8f5e9 style UpdateDB fill:#e8f5e9 style DeleteDB fill:#e8f5e9 ``` --- ## 6. Cloudflare Hesap Yönetimi CF hesaplarının eklenmesi, doğrulanması ve yönetimi. ```mermaid sequenceDiagram participant A as Admin participant UI as Admin UI participant API as Admin API participant DB as Admin DB participant CF as Cloudflare API participant Audit as Audit Log Note over A,Audit: CF Hesap Ekleme A->>UI: Yeni CF Hesap Formu A->>UI: Name, Email, API Token UI->>API: POST /api/cf-accounts API->>API: Validate Input API->>CF: Verify Token CF-->>API: Token Valid + Account Info API->>API: Encrypt API Token API->>DB: INSERT cloudflare_account DB-->>API: Account Created API->>Audit: Log CF Account Creation Audit->>DB: INSERT audit_log API-->>UI: Success + Account Data UI-->>A: Hesap Eklendi Note over A,Audit: CF Hesap Güncelleme A->>UI: Hesap Düzenle UI->>API: PUT /api/cf-accounts/:id alt Token Değişti API->>CF: Verify New Token CF-->>API: Token Valid API->>API: Encrypt New Token end API->>DB: UPDATE cloudflare_account API->>Audit: Log Update API-->>UI: Success UI-->>A: Hesap Güncellendi Note over A,Audit: CF Hesap Silme A->>UI: Hesap Sil UI->>API: DELETE /api/cf-accounts/:id API->>DB: Check current_domains alt Domains > 0 API-->>UI: Error: Active Domains UI-->>A: Silinemez else Domains = 0 API->>DB: DELETE cloudflare_account API->>Audit: Log Deletion API-->>UI: Success UI-->>A: Hesap Silindi end ``` --- ## 7. Veritabanı Şeması Admin Panel veritabanı yapısı (ER Diagram). ```mermaid erDiagram ADMIN_USERS ||--o{ AUDIT_LOGS : creates ADMIN_USERS { int id PK string username UK string email UK string password_hash string full_name string role boolean is_active datetime created_at datetime last_login } SUBSCRIPTION_PLANS { int id PK string name UK string slug UK text description decimal price_monthly decimal price_yearly int max_domains int max_containers int max_storage_gb int max_bandwidth_gb json features boolean is_active boolean is_visible int sort_order datetime created_at datetime updated_at } CLOUDFLARE_ACCOUNTS { int id PK string name UK string email string api_token_encrypted int max_domains int current_domains text notes boolean is_active datetime created_at datetime updated_at } AUDIT_LOGS { int id PK int admin_id FK string action string resource_type int resource_id json details string ip_address datetime created_at } ``` --- ## 8. API Endpoint Yapısı Admin Panel'in tüm API endpoint'leri. ```mermaid graph TB subgraph "Authentication Endpoints" AuthLogin[POST /api/auth/login
Admin Login] AuthMe[GET /api/auth/me
Current Admin] AuthLogout[POST /api/auth/logout
Logout] end subgraph "Plans Endpoints" PlansList[GET /api/plans
List All Plans] PlansCreate[POST /api/plans
Create Plan] PlansUpdate[PUT /api/plans/:id
Update Plan] PlansDelete[DELETE /api/plans/:id
Delete Plan] end subgraph "CF Accounts Endpoints" CFList[GET /api/cf-accounts
List CF Accounts] CFCreate[POST /api/cf-accounts
Create CF Account] CFUpdate[PUT /api/cf-accounts/:id
Update CF Account] CFDelete[DELETE /api/cf-accounts/:id
Delete CF Account] CFStats[GET /api/cf-accounts/stats
CF Statistics] end subgraph "Customers Endpoints" CustList[GET /api/customers
List Customers] CustDetail[GET /api/customers/:id
Customer Details] CustUpdatePlan[PUT /api/customers/:id/plan
Update Customer Plan] CustStats[GET /api/customers/stats
Customer Statistics] end subgraph "Audit Endpoints" AuditList[GET /api/audit
List Audit Logs] AuditFilter[GET /api/audit?filter
Filtered Logs] end style AuthLogin fill:#e1f5ff style AuthMe fill:#e1f5ff style AuthLogout fill:#e1f5ff style PlansList fill:#e8f5e9 style PlansCreate fill:#e8f5e9 style PlansUpdate fill:#e8f5e9 style PlansDelete fill:#e8f5e9 style CFList fill:#fff3e0 style CFCreate fill:#fff3e0 style CFUpdate fill:#fff3e0 style CFDelete fill:#fff3e0 style CustList fill:#f3e5f5 style CustDetail fill:#f3e5f5 style CustUpdatePlan fill:#f3e5f5 ``` --- ## 9. Audit Log Sistemi Tüm admin işlemlerinin loglanması. ```mermaid graph TB subgraph "Admin Actions" Login[Login] CreatePlan[Create Plan] UpdatePlan[Update Plan] DeletePlan[Delete Plan] CreateCF[Create CF Account] UpdateCF[Update CF Account] DeleteCF[Delete CF Account] UpdateCustomer[Update Customer] end subgraph "Audit Service" Capture[Action Capture] Validate[Validate Data] Enrich[Enrich with Metadata] Store[Store to DB] end subgraph "Audit Log Data" AdminID[Admin ID] Action[Action Type] Resource[Resource Type] ResourceID[Resource ID] Details[Details JSON] IP[IP Address] Timestamp[Timestamp] end subgraph "Audit Viewing" ViewAll[View All Logs] FilterByAdmin[Filter by Admin] FilterByAction[Filter by Action] FilterByDate[Filter by Date] Export[Export Logs] end Login --> Capture CreatePlan --> Capture UpdatePlan --> Capture DeletePlan --> Capture CreateCF --> Capture UpdateCF --> Capture DeleteCF --> Capture UpdateCustomer --> Capture Capture --> Validate Validate --> Enrich Enrich --> Store Store --> AdminID Store --> Action Store --> Resource Store --> ResourceID Store --> Details Store --> IP Store --> Timestamp AdminID --> ViewAll Action --> ViewAll Resource --> ViewAll ViewAll --> FilterByAdmin ViewAll --> FilterByAction ViewAll --> FilterByDate ViewAll --> Export style Capture fill:#ffebee style Store fill:#e8f5e9 style ViewAll fill:#e1f5ff ``` --- ## 10. Deployment Mimarisi Admin Panel'in production deployment yapısı. ```mermaid graph TB subgraph "Internet" Users[Admin Users] end subgraph "Nginx Reverse Proxy" Nginx[Nginx
SSL Termination] end subgraph "Frontend Container" FrontendApp[React App
Static Files
Port: 80] end subgraph "Backend Container" BackendApp[Flask API
Port: 5001] Gunicorn[Gunicorn
WSGI Server] end subgraph "Database" AdminDB[(PostgreSQL
admin_hosting_db
Port: 5432)] CustomerDB[(PostgreSQL
hosting
Read-Only)] end subgraph "External Services" CustomerAPI[Customer API
api.argeict.net] CloudflareAPI[Cloudflare API] end subgraph "Monitoring" Logs[Application Logs] Metrics[System Metrics] end Users -->|HTTPS| Nginx Nginx -->|admin.argeict.net| FrontendApp Nginx -->|admin-api.argeict.net| Gunicorn FrontendApp -->|API Calls| Gunicorn Gunicorn --> BackendApp BackendApp --> AdminDB BackendApp -.->|Read Only| CustomerDB BackendApp -->|Internal API| CustomerAPI BackendApp -->|Validate Tokens| CloudflareAPI BackendApp --> Logs BackendApp --> Metrics style Users fill:#e1f5ff style Nginx fill:#fff3e0 style FrontendApp fill:#ffebee style BackendApp fill:#e8f5e9 style AdminDB fill:#f3e5f5 style CustomerDB fill:#fff9c4 ``` --- ## 📝 Diyagram Düzenleme Kılavuzu ### VS Code'da Düzenleme 1. **Dosyayı Açın**: `ADMIN_PANEL_DIAGRAMS.md` 2. **Preview Açın**: `Cmd+K V` (Mac) veya `Ctrl+K V` (Windows) 3. **Düzenleyin**: Sol panelde Mermaid kodunu değiştirin 4. **Görün**: Sağ panelde canlı önizleme ### Mermaid Syntax Temelleri #### Graph/Flowchart ```mermaid graph TB A[Kutu] --> B{Karar} B -->|Evet| C[Sonuç 1] B -->|Hayır| D[Sonuç 2] ``` #### Sequence Diagram ```mermaid sequenceDiagram A->>B: Mesaj B-->>A: Yanıt ``` #### ER Diagram ```mermaid erDiagram TABLE1 ||--o{ TABLE2 : relation TABLE1 { int id PK string name } ``` ### Renk Paleti ``` Admin Panel: #ffebee (Açık Kırmızı) Auth: #e1f5ff (Açık Mavi) Database: #e8f5e9 (Açık Yeşil) Plans: #f3e5f5 (Açık Mor) CF Accounts: #fff3e0 (Açık Turuncu) Customers: #f3e5f5 (Açık Mor) ``` ### Düzenleme İpuçları 1. **Node Ekleme**: Yeni bir satır ekleyin ``` NewNode[Yeni İşlem] ``` 2. **Bağlantı Ekleme**: Ok ile bağlayın ``` A --> NewNode NewNode --> B ``` 3. **Renk Değiştirme**: Style ekleyin ``` style NewNode fill:#e1f5ff ``` 4. **Subgraph Ekleme**: Gruplama yapın ``` subgraph "Grup Adı" Node1 Node2 end ``` --- ## 🎯 Kullanım Senaryoları ### Senaryo 1: Yeni Endpoint Ekleme 1. Diyagram 8'i açın (API Endpoint Yapısı) 2. İlgili subgraph'a yeni endpoint ekleyin 3. Renk ve stil ekleyin 4. Kaydedin ### Senaryo 2: Yeni İş Akışı Ekleme 1. Diyagram 2'yi açın (Admin Panel İş Akışı) 2. Yeni subgraph oluşturun 3. İşlem adımlarını ekleyin 4. Ana akışa bağlayın ### Senaryo 3: Veritabanı Tablosu Ekleme 1. Diyagram 7'yi açın (Veritabanı Şeması) 2. Yeni tablo tanımı ekleyin 3. İlişkileri belirleyin 4. Kaydedin --- ## 📚 Referanslar - **Mermaid Dokümantasyonu**: https://mermaid.js.org/ - **Live Editor**: https://mermaid.live/ - **Syntax Guide**: https://mermaid.js.org/intro/syntax-reference.html --- **Son Güncelleme**: 2026-01-12 **Versiyon**: 1.0.0 **Yazar**: ARGE ICT