Komut satırından arayüze: Takirs ile e-irsaliye veri hazırlığı
Takirs doğrudan Takpy için geliştirildi: PDF, XML ve ZIP olarak gelen e-irsaliyeleri Takpy'nin hiçbir ara işlem gerektirmeden okuyabileceği Excel/CSV setine çevirir. Çalışan bir script vardı, ama onu çalıştırabilen tek bir kişi vardı.
Bir yazılım ne kadar iyi olursa olsun, ona verilecek veriyi hazırlamak ayrı bir iştir. Takpy sahada barkod okuyor, ama okuduğunu bir sipariş listesiyle eşleştirmesi için o listenin önce doğru formatta hazır olması gerekiyor.
Takirs bağımsız bir araç olarak değil, doğrudan Takpy için geliştirildi. Tek bir işi var: Takpy'nin beklediği veriyi, Takpy'nin beklediği biçimde üretmek. İkisi birlikte tek bir zincir gibi çalışıyor — Takirs'in çıktısı, Takpy'nin girdisidir.
[e-İrsaliye: PDF · XML · ZIP] → Takirs → [Excel / CSV] → Takpy → [sahada barkod eşleştirme]
Script vardı, süreç yoktu
İlginç olan şu: teknik dönüşüm zaten çözülmüştü. e-İrsaliyeleri CSV'ye çeviren Python scriptleri aylardır çalışıyordu. Çözülmemiş olan, o scripti kimin çalıştıracağıydı.
Süreç komut satırına, doğru parametrelere ve "bunu şu an kim çalıştırabilir?" sorusuna bağlıydı. O kişi müsait değilse — vardiyada değilse, başka bir işin içindeyse — akış tıkanıyordu. Tıkanmanın sonucu her seferinde aynıydı: işler aksamasın diye sipariş verileri sisteme elle girilmeye başlanıyordu.
Bu iki açıdan kötüydü. Birincisi ciddi bir zaman kaybıydı. İkincisi, uygulamanın temel ilkelerinden biri olan "sıfır veri hatası" prensibine doğrudan ters düşüyordu; elle girilen veride hata payı hep vardı ve o hatayı sonradan bulmak, baştan doğru girmekten çok daha pahalıydı.
Karar netti: dönüşüm bir teknik yetenek olmaktan çıkıp herkesin yapabildiği bir rutine dönüşmeliydi.
Girdi: biçime bakmadan kabul et
Takirs, e-irsaliyeleri hangi biçimde geldiğine bakmadan alır. Tekil PDF ve XML dosyaları, birden fazla belge içeren klasörler, ya da doğrudan sıkıştırılmış ZIP arşivleri — hepsi aynı pencereden içeri girer. Kullanıcının yapması gereken tek şey dosyayı seçmek.
İşleme: iki kanal, tek hedef
Arka planda belge türüne göre iki ayrı kanal çalışır:
- PDF —
pdfplumberile metin ve tablo katmanları taranır; sipariş numarası, ürün detayları, miktar ve birim bilgileri ayıklanır. - XML — yapılandırılmış bir format olduğu için Python'ın yerleşik
xml.etree.ElementTreemodülüyle e-belge şeması doğrudan çözümlenir. En yüksek doğruluk buradan gelir.
İki kanal da aynı hedefe çıkar: bellekte standardize edilmiş tek bir veri seti.
Çıktı: aynı anda iki format
Standardize edilen veri openpyxl ile hem Excel (.xlsx) hem CSV (.csv) olarak
aynı anda yazılır. Bu bilinçli bir tercih: Takpy tarafındaki "İrsaliye Aktar →
Excel/CSV Dosyasından Aktar" adımı, ek bir dönüştürme işlemine gerek kalmadan
doğrudan tamamlanabilsin diye.
Sütun adları, sipariş numarası biçimi ve birim alanları Takpy'nin okuyucusuyla birebir aynı sözleşmeye göre yazılıyor. Pratikte bu şu demek: Takirs'ten çıkan dosya, hiç açılmadan, hiç düzeltilmeden Takpy'ye verilebiliyor. Sahada bugüne kadar iki araç arasında elle müdahale gerektiren tek bir aktarım olmadı.
Kurulum diye bir adım kalmasın
Takirs'in ekipteki herkesin bilgisayarında çalışması gerekiyordu — Python kurulumu
isteyen bir araç, çözmeye çalıştığı problemi yeniden üretirdi. PyInstaller ile tüm
proje taşınabilir tek bir .exe haline getirildi.
Arayüz tarafında Tkinter, ek kütüphane yükü getirmeden kararlı bir masaüstü penceresi sağlıyor. Üstüne çalışma konforu için Açık, Koyu ve Tokyo Night temaları var; tercih kalıcı olarak saklanıyor ve uygulama her açılışta son seçilen temayla başlıyor. Dönüşüm sırasında arka planda ne olduğunu gösteren canlı bir işlem günlüğü de arayüze dahil — kullanıcı "çalışıyor mu, dondu mu?" diye merak etmesin diye.
Sonuç
Veri hazırlığı tek bir kişiye ya da script bilgisine bağımlı olmaktan tamamen çıktı. Takpy'nin önündeki bu hazırlık aşaması, ekip genelinde herkesin kolayca yürütebildiği standart bir rutine dönüştü.
İkisi birlikte tek bir akış: irsaliye Takirs'e düşüyor, çıkan dosya Takpy'ye yükleniyor, saha ekibi okumaya başlıyor. Arada dönüştürme, düzeltme ya da "bu dosyayı kim hazırlayacak?" sorusu yok.
Teknik detay arka planda sessizce işini yaparken, ekip asıl odaklanması gereken operasyonel kararlara dönebiliyor. Bir aracın verebileceği en iyi sonuç da bu: kendisinden bahsedilmemesi.