Kargo Rota Optimizasyonu

Kargo Rota Optimizasyonu

Proje Kazanımları

Bu projede, Kocaeli ilçeleri arasındaki kargo dağıtım süreçlerini optimize etmek amacıyla Greedy, Simulated Annealing ve Hybrid algoritmaları kullanan bir web otomasyonu geliştirilmiştir.

Canlı Önizleme: kargo-sistemi.vercelapp/login.html

Test Giriş Bilgileri (Admin): Kullanıcı Adı: `admin` | Şifre: `admin123`

  • Rota Optimizasyonu: Dağıtım mesafesini ve yakıt maliyetlerini en aza indiren akıllı rotalama algoritmaları uygulandı.
  • Harita Entegrasyonu: Leaflet.js kütüphanesi ve OpenStreetMap/OSRM servisleriyle gerçek yol rotaları görselleştirildi.
  • Session-based Kimlik Doğrulama: Flask-Session kullanılarak güvenli kullanıcı ve admin oturumları yönetildi.
  • Neon PostgreSQL Veritabanı: Bulut veritabanı üzerinde performanslı veri havuzu (connection pool) yönetimi sağlandı.
README.md Dosyasını Görüntüle

🚚 Kargo Rota Optimizasyon Sistemi v2.0

Kocaeli Üniversitesi - Yazılım Laboratuvarı III kapsamında geliştirilen, Kocaeli ilçeleri arasında kargo dağıtım süreçlerini, araç yüklerini ve teslimat rotalarını optimize eden web tabanlı otomasyon projesi.


📸 Ekran Görüntüleri

1. 👤 Kullanıcı Arayüzü (Kullanıcı Paneli & Harita)

Kullanıcıların yeni kargo gönderisi oluşturabildiği, kargolarının durumunu takip edebildiği ve entegre Leaflet.js haritası üzerinde şubeleri görselleştirebildiği arayüz.

Kullanıcı Paneli

2. 👑 Yönetici Paneli (Dağıtım Optimizasyonu)

Yöneticilerin bekleyen kargoları seçerek Greedy, Simulated Annealing veya Hybrid optimizasyon algoritmalarıyla dağıtım senaryoları ürettiği ve akıllı araç kiralama (LIMITED/UNLIMITED) kararları aldığı ekran.

Yönetici Paneli

3. 📍 Şube Yönetimi & Loglama

Yöneticilerin harita üzerinden veya liste aracılığıyla şube ekleyip/silebildiği, geçmiş dağıtım senaryolarını detaylı maliyet analizleriyle raporlayabildiği yönetim ekranı.

Şube Yönetimi ve Raporlama


🛠️ Teknolojiler & Kütüphaneler

Backend (Flask API)

  • Flask 3.0.0 & Python 3.12+ - Uygulama sunucusu ve API katmanı
  • PostgreSQL (psycopg 3.1.18 & psycopg-pool) - Neon.tech üzerinde barındırılan bulut veritabanı ve performanslı bağlantı havuzu
  • Flask-Session (filesystem) - Güvenli ve tarayıcı kapanınca sonlanan oturum yönetimi
  • Werkzeug (security) - Güvenli şifre hash'leme ve doğrulama

Frontend (Modern UI)

  • Vanilla HTML5 & CSS3 - Modern göze hitap eden, cam (glassmorphism) efektli ve animasyonlu karanlık tema (dark mode) tasarımı
  • Leaflet.js (v1.9.4) - Harita üzerinde şube konumlandırma, rota çizimi ve interaktif görselleştirme
  • OpenStreetMap API & OSRM (Open Source Routing Machine) - Gerçek yol mesafelerini ve rota geometrisini hesaplama

📥 GitHub'dan İlk Kurulum

Projeyi bilgisayarınıza klonladıktan sonra sırasıyla aşağıdaki adımları takip edin:

1️⃣ Python Bağımlılıklarını Yükleyin

pip install -r requirements.txt

2️⃣ Cloud PostgreSQL (Neon.tech) veya Local DB Hazırlığı

Veritabanını sıfırdan oluşturmak ve v2.0 şemasına yükseltmek için:

  • Eski Şema Kurulumu: database/database_setup.sql dosyasını çalıştırın.
  • V2.0 Schema Yükseltmesi: database/FULL_MIGRATION_v2.sql dosyasını çalıştırarak tüm eksik sütunları (scenarios.total_distance, routes.route_geometry vb.) ve yeni tabloları otomatik ekleyin.

3️⃣ Veritabanı Bağlantı Ayarları

api/.env dosyası oluşturun ve bağlantı dizesini yazın:

DATABASE_URL=postgresql://neondb_owner:npg_le3yhId8AWBb@ep-square-paper-asng6koy.c-4.eu-central-1.aws.neon.tech/neondb?sslmode=require
SECRET_KEY=kargo-sistem-secret-key-2025

4️⃣ Başlangıç Kullanıcılarını Kurun

cd api
python quick_setup.py

Bu adım, veritabanına varsayılan kullanıcıları ekler:

  • 👑 Admin: admin / admin123
  • 👤 Test Kullanıcısı: testuser / user123

🚀 Sistemi Çalıştırma

💻 Kolay Yol (Windows):

Proje dizininde yer alan toplu iş dosyasını çalıştırmanız yeterlidir:

start.bat

Bu betik hem backend API sunucusunu hem de frontend web sunucusunu eşzamanlı olarak başlatarak tarayıcınızda login sayfasını açar.

🔧 Manuel Yol:

Terminal 1 (Backend):

cd api
python app.py

Terminal 2 (Frontend):

cd frontend
python -m http.server 8000

Tarayıcınızdan http://localhost:8000/login.html adresine giderek sistemi kullanmaya başlayabilirsiniz.


🎯 Giriş Bilgileri

Kullanıcı Adı Şifre Rol Yönlendirilen Sayfa
admin admin123 ADMIN admin.html (Yönetici Paneli)
testuser user123 USER user_dashboard.html (Kullanıcı Paneli)

📁 Proje Klasör Yapısı

Kargo_Sistemi/
├── api/                    # Flask Backend Modülleri
│   ├── app.py             # Sunucu başlatma ve session yönetimi
│   ├── auth.py            # Oturum açma, kayıt ve yetkilendirme (decoratörler)
│   ├── routes.py          # Harita, şube ve senaryo API uç noktaları
│   ├── admin_cargo.py     # Yönetici kargo onay/iptal işlemleri
│   ├── admin_distribution.py # Rota optimizasyon tetikleme ve kayıt
│   ├── config.py          # Veritabanı bağlantı havuzu (psycopg-pool)
│   └── .env               # Gizli anahtarlar ve DB URL
│
├── frontend/              # Arayüz Dosyaları (HTML/CSS/JS)
│   ├── login.html         # Premium giriş sayfası
│   ├── register.html      # Premium kayıt olma sayfası
│   ├── user_dashboard.html # Kullanıcı paneli ve Leaflet şube haritası
│   ├── admin.html         # Yönetici paneli ve dinamik rota çizim ekranı
│   └── styles.css         # Ortak tasarım tokenleri ve stiller
│
├── database/              # SQL Şemaları ve Göç Betikleri
│   ├── database_setup.sql # İlk şema ve test verileri
│   └── FULL_MIGRATION_v2.sql # Veritabanını v2.0 sürümüne taşıyan script
│
├── docs/
│   └── screenshots/       # Proje ekran görüntüleri
│
├── requirements.txt       # Python paket bağımlılıkları
├── setup.bat              # İlk kurulum otomasyonu
└── start.bat              # Uygulamayı başlatma betiği

📐 Optimizasyon Algoritmaları

Sistem, kargo dağıtım maliyetlerini ve mesafelerini minimuma indirmek amacıyla 3 farklı algoritma seçeneği sunar:

  1. Greedy (En Yakın Komşu): Her adımda mevcut konuma en yakın teslimat noktasına yönelerek hızlı ve basit bir rota çizer.
  2. Simulated Annealing (Tavlama Benzetimi): Rotalardaki yerel minimumlardan kaçmak için olasılıksal kabul kriterleri kullanarak global olarak en kısa mesafeli rotayı bulmayı hedefler.
  3. Hybrid: İki yaklaşımı birleştirerek en iyi performansı ve en kararlı dağıtım planını üretir.

Görseller & Detaylar

Premium Giriş & Oturum Arayüzü

Oturum yönetiminin (session-based) güvenliğini sağlayan, cam efekti (glassmorphism) ve animasyonlu canlı arka planlarla güçlendirilmiş modern giriş ekranı.

/projects/kargo/login_page.png

Kullanıcı Paneli & Rota Haritası

Kullanıcıların yeni kargo talepleri oluşturabildiği, kargolarının durumunu takip edebildiği ve entegre Leaflet.js haritası üzerinde tüm Kocaeli şubelerini interaktif olarak izleyebildiği ekran.

/projects/kargo/user_dashboard.png

Şube Yönetimi & Aktivite Raporları

Yöneticilerin haritadan konum seçerek dinamik yeni şubeler ekleyebildiği ve sistem üzerindeki tüm geçmiş dağıtım senaryolarını detaylı maliyet/mesafe analizleriyle loglayabildiği yönetim paneli.

/projects/kargo/admin_branches.png

Yönetici Kontrol Paneli & Algoritma Seçimi

Yöneticilerin bekleyen kargo taleplerini listelediği, araç başlangıç/bitiş konumlarını seçtiği ve Greedy, Simulated Annealing veya Hybrid algoritmalarıyla dağıtımı başlattığı optimizasyon ekranı.

/projects/kargo/admin_dashboard.png