Otobüs Rotasyon Planlayıcı
Şehir içi otobüs filosu için haftalık görev ve rotasyon planı; kural denetimi ve Excel çıktısı.
Bu nasıl ölçüldü: Test sayısı dotnet test çıktısından, ekranlar view model dosyalarından, satır sayısı izlenen .cs dosyalarında wc ile alındı.
- DESKTOP
- Avalonia7 ekran
- RULES
- kural tablosu
- kısıt denetimi
- ENGINE
- rotasyon planlayıcı
- OUT
- SQLite
- Excel
Problem
Şehir içi otobüs filosu her hafta kâğıt üstünde planlanıyor: hangi şoför hangi gün hangi otobüste, kim dinlenecek, kimin hafta sonu alacağı var. Kurallar planlamacının kafasında, hiçbir yerde yazılı değil. Plan da o kişi kadar iyi.
İş, kuralları koda yazmak, hiçbirini çiğnemeyen haftalık plan üretmek ve bunu ofisin zaten kullandığı biçimde teslim etmekti.
Kısıtlar
- Aynı ofiste Windows ve Linux: web uygulaması değil, platformdan bağımsız masaüstü.
- Planlamacının kuralları değişiyor; yeni kısıt eklemek planlayıcıyı yeniden yazmak demek olmamalı.
- Çıktı Excel'de dönüştürmeden açılmalı; ofis yeni araç benimsemiyor.
Mimari kararlar
Tarayıcı uygulaması yerine Avalonia
Ofiste sunucu yok, tarayıcı sekmesi alışkanlığı yok. Bir saniyede açılan yerel pencere vardiya değişimi gerçeğine uyuyor.
Bedeli: CSS yerine XAML yerleşimi; platformlar arası paketleme de cabası.
Kurallar veri, planlayıcı ayrı katman
Rotasyon kısıtları kendi tablosunda duruyor ve plan yazılmadan önce değerlendiriliyor. Yeni kural bir satır ve bir kontrol; algoritmaya dokunulmuyor.
Bedeli: Sabit kodlanmış döngüden daha fazla dolaylılık.
Planlayıcıyı test et, pencereyi değil
326 test, örnek filolar üzerinden planlama motoruna koşuyor. Arayüz bilerek ince tutuldu; kurallar ekran açmadan doğrulanabiliyor.
Bedeli: Arayüz hataları ancak elle yakalanıyor.
Teslim biçimi Excel
ClosedXML, ofisin zaten bildiği çalışma kitabını aynı sütun adlarıyla yazıyor. Benimseme maliyeti sıfır.
Bedeli: Ofis şablonuna uymak zorunda olan bir biçimlendirme adaptörü.
Kanıt
- Test326 yeşil (Windows + Linux CI)
- Ekran7 (filo, hatlar, sefer saatleri, haftalık plan, kurallar, raporlar, Excel)
- C# dosyası209
- Satır kod25.798
Bilinen sınırlar
- Plan kurallarla doğrulanıyor; şoför memnuniyeti ölçülmüyor, hafta sonu geri bildirimi kaydedilmiyor.
- Tek ofis, tek filo; çok depolu planlama yok.
- Gerçek kullanım süresi kısa; vaka test sayısını yazıyor, kazanılan saati değil.
Ne öğrendim
Planlayıcı, takvim eklenmiş bir kural motoru. Kurallar yazıya geçtiği an planı üretebilen tek kişi planlamacı olmaktan çıkıyor. Asıl teslim bu; Excel dosyası sadece makbuz.