
Bağlam
Lisanslı depoculuk, tarım ürününün araçla kapıya gelişinden elektronik ürün senedine (ELÜS) dönüşmesine kadar birbirine sıkı sıkıya bağlı bir zincirdir: tartım, numune, analiz, sınıflandırma, depo girişi, senet ihracı, depolama ücreti, fatura ve muhasebe kaydı. Çalıştığım kurumda bu zincir uzun süre birbirinden bağımsız iki sistemle yürütüldü: biri depoculuk işlemleri, diğeri muhasebe için. Her ay mutabakat yapmak, iki tarafta aynı veriyi ayrı ayrı girmek ve raporları elle birleştirmek ekiplerin ciddi zamanını alıyordu.
LİDOS bu zinciri tek bir veri modeli ve tek bir uygulama üzerinde toplamak için yazıldı. Hedef, kantar görevlisinden şube müdürüne, laboranttan mali işlere kadar on farklı rolün aynı kaynağa bakması.
Çözüm
Django üzerinde, on yedi uygulamadan oluşan modüler bir yapı kurdum. Her modül
kendi modellerine, görünümlerine ve testlerine sahip; ortak işler (yetki
matrisi, belge numaralandırma, işlem günlüğü, Excel ve PDF çıktısı, liste ve
form altyapısı) core altında toplanıyor.
İş akışı on yedi adımda tanımlı: mudi kaydı, araç ve ilk tartım, numune ve analiz, yetkili sınıflandırıcı onayı, depo ataması, giriş belgesi, ELÜS ihracı, devir, çıkış talebi, ikinci tartım ve çıkış belgesi. Her adım bir öncekinin tamamlanmasını şart koşuyor; görevler ayrılığı kuralları sunucu tarafında uygulanıyor. Örneğin analizi giren kullanıcı aynı analizi onaylayamıyor.


Mimari
| Modül | Sorumluluk |
|---|---|
| core | Şube, kullanıcı ve roller, yetki matrisi, belge sayaçları, işlem günlüğü, ortak liste/form, Excel ve PDF |
| tanim | Depo, ürün grubu ve sınıf, analiz kriterleri, had limitleri, kesinti ve fire oranları, tarifeler |
| mudi | Ürün sahibi kartı, kimlik doğrulama, arama bileşeni |
| kantar | Araç kaydı, ilk ve ikinci tartım, makbuz, hızlı mod |
| laboratuvar | Numune, analiz, otomatik sınıflandırma ve kesinti hesabı, cihaz entegrasyonu |
| depo | Stok defteri, giriş ve çıkış belgeleri, transfer, fazlalık ve noksanlık, raf görünümü |
| elus | ISIN, ELÜS ihracı, devir, çıkış talebi, bakiye, MKK mutabakatı |
| muhafaza | Eksper muayenesi, ilaçlama, havalandırma, durum cetveli, sigorta |
| fatura | Tarife, ton-gün tahakkuku, taslak ve kesin fatura |
| muhasebe | Hesap planı, fiş, cari, kasa ve banka, KDV, yevmiye, mizan, Ba-Bs, dönem kapanışı, e-Defter |
| entegrasyon | Gönderim kuyruğu, ERP ve dış kurum bağlantıları |
| aktarim | Eski sistemlerden salt okunur tanım ve açılış aktarımı |
| rapor, pano | Rapor merkezi (50'den fazla rapor, Excel ve PDF), genel bakış ve uyarılar |
Stok defteri tek doğruluk kaynağı: satır silinmiyor, iptaller düzeltme satırıyla yapılıyor. Fire düşümü ürün grubunun binde oranıyla hesaplanıyor; sanal ve teknik depo tanımlanabiliyor.
Öne çıkan özellikler
- Laboratuvar otomasyonu. Had limitlerine göre kabul veya ret, sınıf ve kesinti yüzdesi otomatik hesaplanıyor. Analiz cihazından otomatik okunan değerler kilitli; elle değiştirilemiyor.
- ELÜS ve MKK mutabakatı. MKK bakiye dosyası yüklenerek ISIN ve mudi bazında karşılaştırma yapılıyor; fiziki stok ile senet bakiyesi raporlanıyor.
- Ton-gün faturalama. Aylık depolama ücreti ton-gün × tarife ile hesaplanıyor; yükleme, boşaltma, analiz ve kantar bedelleri ile KDV ekleniyor; mudi bazında taslak fatura üretilip numaralandırılıyor.
- İki kipli muhasebe. Bağımsız çalışabiliyor ya da kayıtları ERP'nin resmi arayüzü üzerinden muhasebe programına aktarıyor. Gönderim kuyruğu hataları saklayıp yeniden deniyor.
- Güvenli aktarım. Eski sistemlerden veri yalnızca salt okunur bağlantı ile, tek SELECT süzgeci ve her sorgu sonrası geri alma ile çekiliyor; tekrar çalıştırılabilir ve çift kayıt üretmiyor.
- Çevrimdışı arayüz. Bootstrap, grafikler ve fontlar uygulamanın içinde; şube ağında internet olmadan çalışıyor.
- Türkçe yerelleştirme. Sayı biçimi, kg/ton dönüşümü ve Türkçe sıralama veri katmanında çözülmüş.



Ekran görüntüleri deneme ortamından, örnek verilerle alınmıştır; kurum bilgileri bulanıklaştırılmıştır.
Yayınlama ve işletme
Linux üzerinde nginx, gunicorn ve systemd ile çalışıyor. Kendi yazdığım yayınlama aracı sürümü paketliyor, sunucuya gönderiyor, migrasyon ve statik dosya toplamayı çalıştırıyor, sağlık denetimi yapıyor ve uygulama açılmazsa bir önceki sürüme dönüyor. Son üç sürüm sunucuda saklanıyor; gece yedekleme ve güvenlik duvarı sertleştirmesi kurulumun parçası.
Sayılarla
- 17 Django uygulaması, 200'ün üzerinde model, 148 şablon
- Yaklaşık 94 bin satır Python
- 1.690 otomatik test; paralel çalıştırmada altı dakikanın altında
- 10 kullanıcı rolü, 10 mimari karar kaydı (ADR)
Geliştirme süreci
Projeyi yapay zekâ ajanları desteğiyle geliştirdim: ürün sahibi, iş analisti, mimar, backend ve frontend geliştirici, test uzmanı ve devops rolleri için ayrı ajan tanımları, sprint planları ve mimari karar kayıtları. Analiz, tasarım ve kabul kararları bende; her değişiklik test ve kod incelemesinden geçiyor.