UstaPlatform
UstaPlatform, Arcadia şehrinde yaşayan vatandaşların ihtiyaç duyduğu uzmanları (tesisatçı, elektrikçi, vb.) hızlıca bulmasını sağlayan, dinamik fiyatlandırma ve akıllı rota planlama yeteneklerine sahip modüler bir sistemdir. Amaç, hem vatandaş hem de usta tarafında verimliliği artıran, geliştirilebilir ve sürdürülebilir bir altyapı sunmaktır.
Öne Çıkan Özellikler
Eklenti Tabanlı Mimari: Yeni fiyat kuralları (“Hafta Sonu Ücreti”, “Acil Talep Fiyatı”, “Bayram İndirimi” vb.) eklemek için uygulamayı yeniden derlemene gerek yok. Yeni bir .dll dosyası eklemen yeterli — sistem bunu otomatik olarak algılar ve entegre eder.
Dinamik Fiyat Motoru: Her iş emrinin ücretini; aciliyet, tarih ve özel durumlara göre art arda uygulanan kurallarla otomatik hesaplar.
Akıllı Eşleştirme Sistemi: Gelen talepleri yalnızca ustanın uygunluğuna göre değil, GeoHelper üzerinden konum analizine dayanarak en yakın ustayı atar.
SOLID Prensipleriyle Geliştirilmiş Kod: Tek sorumluluk, açık/kapalı prensibi ve bağımlılıkların tersine çevrilmesi gibi yazılım mimarisi prensipleri her katmanda gözetilmiştir.
Modern C# Özellikleri: init-only property’ler, özel IEnumerable koleksiyonları, indexer’lar ve static helper sınıflar aktif olarak kullanılmıştır.
Tasarım Mantığı
Açık/Kapalı Prensibi (OCP): PricingEngine, yeni fiyat kuralları için değiştirilmeye gerek kalmadan genişletilebilir. Sistem, çalışma anında klasördeki tüm .dll dosyalarını tarayıp uygun kuralları otomatik yükler.
Tek Sorumluluk Prensibi (SRP): Her sınıf yalnızca bir iş yapar:
-GeoHelper → Konum hesaplar
-ParaFormatlayici → Fiyatları biçimlendirir
-PricingEngine → Fiyat hesaplamasını yürütür
Bağımlılıkların Tersine Çevrilmesi (DIP): PricingEngine, doğrudan kural sınıflarına değil, IPricingRule arayüzüne bağımlıdır. Bu da sistemi esnek, test edilebilir ve genişlemeye açık hale getirir.
Kurulum ve Çalıştırma Adımları
1.Bu repoyu klonla veya ZIP olarak indir.
2.UstaPlatform.sln dosyasını Visual Studio ile aç.
3.Build > Build Solution menüsünü kullanarak projeyi derle. Bu işlem gerekli .dll dosyalarını oluşturur.
4.En kritik adım:
-UstaPlatform.Pricing projesinin bin/Debug/netX.X/ dizinindeki UstaPlatform.Pricing.dll dosyasını kopyala.
-Kopyaladığın dosyayı ana uygulamanın Rules klasörüne yapıştır: .../UstaPlatform/UstaPlatform.App/bin/Debug/netX.X/Rules/
5.UstaPlatform.App projesini Startup Project olarak seç ve F5 tuşuyla çalıştır.
Proje Yapısı
UstaPlatform │ ├── UstaPlatform.App │ ├── Program.cs │ └── PricingEngine.cs │ ├── UstaPlatform.Domain │ ├── Cizelge.cs │ ├── IPricingRule.cs │ ├── IsEmri.cs │ ├── Rota.cs │ ├── Talep.cs │ ├── Usta.cs │ └── Vatandas.cs │ ├── UstaPlatform.Infrastructure │ ├── Guard.cs │ ├── GeoHelper.cs │ └── ParaFormatlayici.cs │ ├── UstaPlatform.Pricing │ ├── AcilCagriUcretiKurali.cs │ └── HaftaSonuEkUcretiKurali.cs │ └── UstaPlatform.Tests ├── CizelgeTests.cs └── PricingEngineTests.cs
Kullanılan Teknolojiler
Dil: C#
Framework: .NET 9.0+
Proje Tipi: Konsol Uygulaması