Site Ledger
Bir hastane şantiyesi için puantaj ve bordro sistemi
Müşteri sistemi · Gizlilik sözleşmeli
Proje özeti
Bir üniversite hastanesi şantiyesi için özel bir puantaj ve haftalık bordro sistemi. QR kartlar kapıda okutuluyor, fazla mesai ve geç kalma ayrı onaylardan geçiyor ve her hafta imzalı bir dökümle kapanıyor. Gerçek veriler müşteride kalıyor; bu yüzden bu vaka çalışması örnek verilerle çalışıyor.
Bir hayır vakfı bir üniversite hastanesi inşa ediyor ve şantiyenin haftalık bordrosu elle doldurulan tek bir Excel dosyasında duruyordu: 5.000'i aşkın vardiya satırı, birbirine bağlı dört sayfa ve önceki kaydın üzerine yazılan düzeltmeler. Çalışıyordu, ama her maaş günü birinin dikkatle yazmasına bağlıydı ve itiraz edilen bir hafta hiçbir şeye geri izlenemiyordu.
O dosyadaki kurallar aylarca gerçek bordroda sınanmıştı, bu yüzden aynen taşındı: günlük 10 saatlik normal çalışma sınırı, yalnızca bir kişi onayladığında 1,5 katla ödenen fazla mesai ve öğleden sonraki bir cumartesi girişini sonraki bordro haftasına taşıyan, pazara uzanan bir vardiyanın ikiye bölünmesini önleyen cumartesi kuralı. Geç kalma da otomatik kesinti olmaktan çıkıp ayrı bir onaya dönüştü; böylece bir ustabaşı aynı vardiyanın fazla mesaisini onaylarken geç kalmasını hâlâ inceleyebiliyor.
İşçiler lamine QR kartlarını, USB okuyuculu bir kapı tabletinde okutuyor. Saati cihaz değil sunucu basıyor ve kayıtlar yalnızca ekleniyor: bir düzeltme, eski satırın üzerine yazmak yerine düzelttiği satırı gösteriyor. Her hafta, belgenin özetini (hash) saklayan imzalı bir dökümle kapanıyor; alttaki veri bir gün değişirse sistem bunu işaretliyor ve bordro ekibi zaten onayladığı düzenin aynısını dışa aktarıyor.
Müşterinin barındırma paketi bunu çalıştırdığı için sistem, paylaşımlı sunucuda framework'süz ve derleme adımı olmadan düz PHP 8 ve MySQL ile çalışıyor. Bu bazı kütüphaneleri devre dışı bıraktı; QR kodlayıcı ve .xlsx yazıcı sıfırdan yazıldı. Erişim; zorunlu TOTP iki adımlı giriş, giriş denemesi sınırlama, CSRF belirteçleri ve yalnızca tek kullanımlık bir bağlantıyla eşlenmiş tablette çalışan bir kiosk ile korunuyor.
Yayına alınanlar
- Eşlenmiş kapı tabletinde USB okuyuculu QR kart kioskü
- Dosyanın kurallarını koruyan bordro motoru: 10 saat sınırı, onaylı mesai 1,5 kat, cumartesi kuralı
- Fazla mesai ve geç kalma, role göre ayrı ayrı onaylanıyor
- Yalnızca eklenen kayıtlar: düzeltmeler eskiyi gösteriyor, üzerine yazmıyor
- Sonradan yapılan değişiklikleri işaretleyen hash'li, imzalı haftalık dökümler
- Paylaşımlı sunucu için bağımlılıksız QR kodlayıcı ve .xlsx yazıcı
- Excel'den taşınan 5.000'i aşkın geçmiş vardiya kaydı
- Rol
- Ürün tasarımı, uçtan uca geliştirme ve kurulum
- Yıl
- 2026
Elle doldurulan bir dosyadan kapıda tek bir okutmaya
Şantiyenin tüm bordrosu tek bir Excel dosyasında duruyordu. Yeni sistem, zaten işleyen her kuralı korudu ve geri kalan her şeyi değiştirdi.
- 5.000+elle yazılmış vardiya satırı
- 4bordroyu taşıyan bağlı sayfa
- 0bir satır düzeltildiğinde kalan iz
- 1 okutmabir işçiyi kapıda içeri almak için
- 2ayrı onay: fazla mesai ve geç kalma
- 1 tıkimzalı döküm ya da .xlsx dışa aktarımı için
Karttan imzalı döküme
- 01QR kartLamine, her işçiye bir tane
- 02Kapı kiosküUSB okuyuculu eşlenmiş tablet
- 03Sunucu saatiCihazın saatine asla güvenilmez
- 04Yalnızca eklemeDüzeltmeler eskiyi gösterir, üzerine yazmaz
- 05OnaylarFazla mesai ve geç kalma, role göre
- 06İmzalı dökümHash'lenir, sonra .xlsx'e aktarılır
Kiosk ve bordro motoru, örnek verilerle
Bir kart okutun, saatleri değiştirin, fazla mesaiyi ve geç kalmayı onaylayın ya da bekletin. Kurallar gerçek; işçiler ve ücretler uydurma.
Bir kart seçin, sonra okutun.
Saati sunucu basıyor. Tabletin saati bordroya hiç dokunmuyor.
İşçiler ve ücretler örnek. Kurallar gerçek motorla aynı.
Yöneticilerin gördüğü
Gerçek ekranlar Türkçeye çevrildi ve örnek satırlarla dolduruldu. Canlı sistem, şantiye ofisi için Arapça çalışıyor. İsimler ve tutarlar müşteride kalıyor.
Paylaşımlı sunucu için yapıldı, ciddiyetle korundu
Sıfırdan QR kodlayıcı
Kartlar bağımlılıksız bir QR kodlayıcıdan çıkıyor; tek bir kart basılmadan önce sunucuda geçmesi gereken bir öz test var.
Gerçek bir .xlsx yazıcı
Sunucuda zip eklentisi yoktu, bu yüzden dışa aktarım geçerli Excel dosyalarını elle oluşturuyor. Bordro ekibi zaten onayladığı düzeni alıyor.
Değişikliği belli eden dökümler
Her imzalı haftalık döküm, belgenin hash'ini saklıyor. Alttaki veri sonradan kayarsa sistem bunu işaretliyor.
Sıkı erişim
Zorunlu TOTP iki adımlı giriş, giriş denemesi sınırlama, CSRF belirteçleri ve yalnızca tek kullanımlık bağlantıyla eşlenmiş tablette çalışan bir kiosk.
Web kökünün dışında kod
Uygulama kodu ve ayarlar public_html'in içinde değil yanında duruyor; yanlışlıkla yüklenirlerse bu yolları 404'e düşüren ikinci bir kural var.
Değişmeye devam etmek için
Şantiyenin kuralları geliştikçe 40'tan fazla veritabanı geçişi yayına alındı: vardiya şablonları, KKD takibi, kaçırılan vardiya talepleri, ödemeler ve dahası.
Sonraki proje
Kişisel marka ve portfolyo

