admin-panel/ADMIN_PANEL_DIAGRAMS.md

761 lines
18 KiB
Markdown
Raw Permalink 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.

# 🎨 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<br/>React + Vite<br/>Port: 5173]
end
subgraph "Backend Layer"
AdminAPI[Admin API<br/>Flask<br/>Port: 5001]
Auth[Auth Service<br/>JWT]
AuditService[Audit Service<br/>Logging]
end
subgraph "Database Layer"
AdminDB[(Admin DB<br/>PostgreSQL<br/>admin_hosting_db)]
CustomerDB[(Customer DB<br/>PostgreSQL<br/>hosting)]
end
subgraph "External Services"
CustomerAPI[Customer API<br/>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<br/>Username + Password]
Auth{Kimlik<br/>Doğrulama}
Dashboard[Dashboard<br/>İ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<br/>Admin Login]
AuthMe[GET /api/auth/me<br/>Current Admin]
AuthLogout[POST /api/auth/logout<br/>Logout]
end
subgraph "Plans Endpoints"
PlansList[GET /api/plans<br/>List All Plans]
PlansCreate[POST /api/plans<br/>Create Plan]
PlansUpdate[PUT /api/plans/:id<br/>Update Plan]
PlansDelete[DELETE /api/plans/:id<br/>Delete Plan]
end
subgraph "CF Accounts Endpoints"
CFList[GET /api/cf-accounts<br/>List CF Accounts]
CFCreate[POST /api/cf-accounts<br/>Create CF Account]
CFUpdate[PUT /api/cf-accounts/:id<br/>Update CF Account]
CFDelete[DELETE /api/cf-accounts/:id<br/>Delete CF Account]
CFStats[GET /api/cf-accounts/stats<br/>CF Statistics]
end
subgraph "Customers Endpoints"
CustList[GET /api/customers<br/>List Customers]
CustDetail[GET /api/customers/:id<br/>Customer Details]
CustUpdatePlan[PUT /api/customers/:id/plan<br/>Update Customer Plan]
CustStats[GET /api/customers/stats<br/>Customer Statistics]
end
subgraph "Audit Endpoints"
AuditList[GET /api/audit<br/>List Audit Logs]
AuditFilter[GET /api/audit?filter<br/>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<br/>SSL Termination]
end
subgraph "Frontend Container"
FrontendApp[React App<br/>Static Files<br/>Port: 80]
end
subgraph "Backend Container"
BackendApp[Flask API<br/>Port: 5001]
Gunicorn[Gunicorn<br/>WSGI Server]
end
subgraph "Database"
AdminDB[(PostgreSQL<br/>admin_hosting_db<br/>Port: 5432)]
CustomerDB[(PostgreSQL<br/>hosting<br/>Read-Only)]
end
subgraph "External Services"
CustomerAPI[Customer API<br/>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ıı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