Teklif al
Mobil

Turnike cihazı olmadan giriş çıkış kaydı — kimlik QR'da, saha konumda

Turnike bitmeden sökülecek bir sahaya kurulmaz. Kimlik ve yer doğrulaması cihaza değil kaydın kendisine gömüldüğünde giriş çıkış çiftleri çalışma süresini, süre de hak edişi kendiliğinden üretir.

Algoriel 11 dk okuma
Turnike cihazı olmadan giriş çıkış kaydı — kimlik QR'da, saha konumda
Bu yazıda
  1. Turnike geçici sahaya neden kurulmaz
  2. Kâğıt puantaj itiraz anında neden dayanak olmaz
  3. QR kod kimi doğrular, konum nereyi
  4. Çalışma süresi eşleşen giriş ve çıkıştan hesaplanır
  5. Personel sahalar arasında dolaşınca kayıt nasıl ayrışır
  6. Hak ediş ayrı tablo değil, kayıttan türeyen sonuçtur
  7. Turnikeli PDKS ile telefon tabanlı kayıt yan yana

Turnike cihazı olmadan giriş çıkış kaydı, kimlik ve yer doğrulamasını kaydın kendisine gömer: kimliği personelin okuttuğu QR, sahayı telefonun konum servisi verir. Doğrulama sahaya bağlandığında sahayla birlikte biter; kişiye bağlandığında personelin telefonuyla bir sonraki sahaya taşınır. Şantiye personel takip sisteminde süre, eşleşen giriş ve çıkış çiftinden hesaplanır; çıkışı okutulmamış giriş eksik kayıt olarak listede kalır.

Turnike geçici sahaya neden kurulmaz

Turnike bir doğrulama cihazıdır ve doğrulamayı sabit bir noktaya bağlar. Kapının kendisi kimliğin sınandığı yerdir; kayıt, kapıdan geçen kişiden değil kapının kendisinden çıkar. Kalıcı bir tesiste bu bağ sorun çıkarmaz, çünkü kapı da tesis kadar uzun yaşar. Şantiye ise bitmek üzere kurulan bir sahadır. Sahaya monte edilen cihazın hizmet ömrü sahanın ömrüyle sınırlanır: kapanış günü geldiğinde cihaz da işini bitirir ve yatırımın karşılığı tek bir projenin takvimine bölünür.

İkinci sorun cihazın ekonomisinden değil, personelin hareketinden geliyor. İnşaat personeli tek sahaya bağlı çalışmıyor; aynı kişi hafta içinde başka bir şantiyede olabiliyor. Sabit noktadan geçişi sayan bir cihaz, personel o noktadan geçmediği gün hiçbir şey saymaz. Doğrulayıcı yerinde duruyor, doğrulanacak kişi hareket ediyor. Kaydın eksik kalması burada bir arıza değil, kurgunun kendisinden çıkan sonuç.

Aynı desenin ikinci ve bağımsız bir örneği eğitim tarafında görünüyor. Optik okuyucu donanımı olmadan, form görüntüsü üzerinden değerlendirme yapan sınav okuma sisteminde cihaz tek merkezde duruyordu ve şubeler sınav formlarını oraya taşımak zorunda kalıyordu. Sabit cihaz, hareketli olanı kendine çağırır. Okuma işi form görüntüsüne alındığında taşıma adımı ortadan kalktı; şube kendi sınavını kendi okutur oldu.

İki vakanın ortak yanı, itirazın cihazın işini kötü yapmasına yönelmemesi. Turnike geçişi sayar, optik okuyucu işareti okur; ikisi de kendi işini yapar. Sorun, sabit bir cihazın etrafında bir lojistik doğurması. Biri formu merkeze taşıtıyor, öteki personeli tek kapıya bağlıyor. Yazılım tarafındaki soru da bu yüzden şu oluyor: bu adım cihaza bağlı kalmak zorunda mı.

Tek binalı bir fabrikada, sabit bir ofiste ya da giriş noktası tek olan bir tesiste turnike yerinde bir yatırımdır. Orada cihaz tesisin ömrü boyunca çalışır, personel her gün aynı kapıdan geçer ve sabit doğrulama sabit bir gerçekliğe oturur. Bu yazıdaki itiraz cihazın kendisine değil, geçici bir sahaya sabit bir cihaz kurma kararına.

Kâğıt puantaj itiraz anında neden dayanak olmaz

Kâğıt puantajın sorunu yavaşlığı değil. Cetvele yazılan satır günü gününe de yazılsa, o satırı olayla bağlayan bağımsız bir doğrulayıcı yok. Satırı kim yazdıysa satırın doğruluğu da onun beyanına dayanıyor. Cetvel, onu tutan kişinin sözünden başka bir şeye yaslanmıyor.

Bu eksikliğin faturası gündelik işleyişte değil, itiraz anında çıkıyor. Hak ediş hesabı doğrulanamayan bu kâğıdın üzerine kuruluyor. Taşeron ay sonunda gelen rakama itiraz ettiğinde ya da personel çalıştığı bir günün görünmediğini söylediğinde, masaya konacak dayanak yine aynı cetvel oluyor. İki taraf da aynı kâğıda bakıyor ve kâğıt hiçbirini haklı çıkarmıyor; anlaşmazlık pazarlıkla kapanıyor.

Sahada birden çok taşeron çalıştığında bu belirsizlik katlanıyor. Bir kişinin hangi gün hangi taşeron adına, hangi sahada çalıştığı sorusunun cevabı tek bir cetvelde değil, birkaç ayrı cetvelde parça parça duruyor. Parçaları birleştiren şey de yine insan hafızası oluyor.

QR ve konum doğrulamalı kayıtta durum tersine dönüyor. Her giriş, oluştuğu anda iki bağımsız doğrulama taşıyor: kim okuttu ve hangi sahadaydı. İtiraz çıktığında gösterilen şey ay sonunda derlenmiş bir liste değil, olay anında oluşmuş tekil kayıt oluyor. Tartışma “böyle hatırlıyorum” düzleminden çıkıp kaydın kendisine iniyor.

Kaydın dijital olması tek başına kanıt üretmiyor. Elle doldurulan bir mobil form da beyandır; ekranda durması onu doğrulanmış yapmaz. Kanıt değerini üreten şey kaydın taşıyıcısı değil, doğrulamanın kaydın oluştuğu anda yapılması. Kâğıt ile telefon arasındaki fark bu noktada başlıyor.

QR kod kimi doğrular, konum nereyi

QR kodun kimliği, konumun sahayı doğruladığı şantiye personel takip sisteminde her giriş kaydı iki soruyu birden yanıtlıyor. QR kod kimin okuttuğunu belirliyor, konum hangi sahada olunduğunu belirliyor ve iki bilgi tek kayıtta bir arada duruyor. Kaydın kanıt değeri de bu birlikteliğe dayanıyor.

İkisini ayrı tutmak kaydı eksik bırakır. Tek başına QR “kim” sorusunu yanıtlar ama nerede okutulduğunu söylemez. Tek başına konum “nerede” sorusunu yanıtlar ama orada duran kişinin kim olduğunu söylemez. Devam kaydının cevaplaması gereken soru ise ikisinin bileşimi: bu kişi, bu sahada, bu saatte. Doğrulamanın tek bacağı üzerinde duran bir kayıt, itiraz anında yarısı boş bir dayanaktır.

Bunun pratikteki en görünür sonucu, saha adının hiçbir adımda elle seçilmemesi. Hangi şantiyede olunduğu bilgisi bir listeden işaretlenmiyor, konum doğrulamasından geliyor. Elle seçilen her alan yanlış seçilebilen bir alandır; ay sonunda “bu kayıt yanlış sahaya yazılmış” diye ayıklanacak satırlar da o alandan çıkar. Adım ortadan kalkınca o adımın hata sınıfı da ortadan kalkıyor.

Doğrulamayı yapan iki araç da personelin zaten taşıdığı telefonda duruyor: kamera QR kodu okuyor, konum servisi sahayı belirliyor. QR okutmayı ve konum doğrulamasını sabit bir cihaz yerine personelin telefonuna taşıyan katmanı React Native (Expo) ile kurduk; kayıt Laravel tarafına iletiliyor ve MySQL’de tutuluyor. Sahaya doğrulama için ayrı bir cihaz konmuyor. Birinci bölümdeki sabit nokta sorununun teknik cevabı burada: doğrulayıcı, doğrulanan kişiyle birlikte geziyor.

Sahada duran tek fiziksel parça basılı QR kodun kendisi. Bu kodun bir cihazdan farkı, arızalanacak ya da bakım isteyecek bir yanının olmaması; yıprandığında yerine yenisi basılıyor. Şantiye kapandığında da sahaya özgü kod oradan çıkıyor, sonraki saha için yenisi üretiliyor. Kurulum diye bir kalem oluşmuyor, çünkü kurulacak bir şey yok.

Bu zincirin kurulamadığı durumlar da var. Personelin kendi telefonu yoksa ya da işletme telefonu sahaya sokmuyorsa, doğrulamayı taşıyacak bir yüzey kalmaz. O koşulda bu model uygulanmaz; ortada yazılımla kapatılabilecek bir boşluk yok, çünkü eksik olan şey kayıt değil doğrulamanın taşıyıcısı.

Çalışma süresi eşleşen giriş ve çıkıştan hesaplanır

Sistemde “çalışılan süre” diye doldurulan bir alan yok. Süre, eşleşen giriş ve çıkış kaydından hesaplanan bir türev. Bu, bir raporlama tercihi değil veri modelinin kendisiyle ilgili bir karar.

Farkı anlamak için beyan edilen bir alanı düşünmek yeterli. Beyan edilen değer düzeltilebilir, yuvarlanabilir, sonradan değiştirilebilir; değiştiğinde de kaynağıyla arasında bir çelişki oluşmaz, çünkü ortada kaynak yoktur. Türetilen değerde böyle bir alan hiç bulunmuyor. Sonucu değiştirmek isteyen, kaynağın kendisine dokunmak zorunda; kaynak da iki doğrulama taşıyor. Değişiklik yapılabilir ama görünmeden yapılamaz.

Türetmenin ikinci sonucu eksik kayıtta ortaya çıkıyor. Çıkışı okutulmamış bir giriş, çıkış kaydı gelene kadar eksik kayıt olarak listede duruyor. Sessizce bir varsayılan süreye kapanmıyor, gün sonunda otomatik kapatılmıyor. Eksiklik bir hata durumu olarak değil, kapatılması gereken açık bir iş olarak görünüyor.

Kâğıt düzenle asıl fark burada. Kâğıt puantajda unutulan satır yoktur; olmayan bir satırın yokluğunu kimse görmez. Cetvel eksiğiyle birlikte tamamlanmış görünür ve eksiklik ancak biri o günü hatırlayıp itiraz ettiğinde ortaya çıkar. Türetilen sistemde eksik veri sessizce kaybolmuyor, denetlenebilir bir durum olarak listede kalıyor.

Türetmenin üçüncü sonucu ikinci bölümdeki itiraz konuşmasına bağlanıyor. Süre beyan edilen bir alan olsaydı, itiraz doğrudan o alana yönelirdi: rakam neden bu, kim yazdı, hangi güne ait? Süre bir hesap sonucu olduğunda tartışma tek adım geriye kayıyor ve kaynak kayıtların üstüne oturuyor. Kaynak kayıtta ise konuşulacak şey belirli: bu giriş kim tarafından okutuldu, hangi sahada oluştu, eşleştiği çıkış hangisi.

Bunun operasyona yansıması da somut. Unutulan çıkış bir istisna olarak yönetiliyor ve sorumlusu tarafından kayıt düzeyinde tamamlanıyor. Düzeltme türetilen sonucun üstünde değil, sonucu üreten kaydın üstünde yapılıyor. Böylece hesabın dayanağı her durumda aynı yerde kalıyor: doğrulanmış giriş ve çıkış kayıtları.

Personel sahalar arasında dolaşınca kayıt nasıl ayrışır

Aynı personelin farklı şantiyelerdeki kayıtları ayrı duruyor. Kayıt kişi ve saha kırılımında tutulduğu için, hafta içinde saha değiştiren personelin süreleri birbirine karışmıyor.

Nedeni bir önceki bölümdeki kararda. Saha bilgisi her kayda oluştuğu anda konumdan yazılıyor; kayıt daha listeye düşmeden hangi sahaya ait olduğunu üzerinde taşıyor. Ay sonunda kayıtları saha saha ayırmak diye bir iş gündeme gelmiyor, çünkü ayrım kaydın doğal yapısında zaten var.

Saha bilgisi kayda yazılmasaydı, kayıtlar tek havuzda birikir ve hangi kaydın hangi sahaya ait olduğu sonradan işaretlenirdi. Sonradan işaretleme de yine belleğe dayanırdı: bu kişi o hafta neredeydi? Böyle bir düzende ayrıştırmanın doğruluğu, ayrıştırmayı yapanın hatırladığı kadar oluyor.

Sahada birden çok taşeronun çalışması bu ayrımı daha da gerekli kılıyor. Kâğıt düzende aynı kişinin farklı şantiye ve taşeronlardaki kayıtları karışıyordu; kimin kimin adına çalıştığı sorusu her ay yeniden çözülüyordu. Her giriş kimin ve hangi sahanın adına oluştuğunu üzerinde taşıdığında bu soru kendiliğinden cevaplanıyor.

Ayrımın ikinci ekseni aynı sahanın içinde duruyor. Bir şantiyede birden çok taşeronun ekibi yan yana çalışıyor ve hepsi aynı kapıdan giriyor. Kayıt kişiye bağlı olduğu için, aynı sahada aynı gün oluşan girişler taşerona göre de ayrışıyor.

Toplama da aynı kırılımı izliyor. Aynı personelin farklı sahalardaki süreleri ayrı ayrı toplanıyor; toplam tek havuza akmıyor. Hak ediş saha bazında ayrıştığı için, bir sahanın maliyeti başka bir sahanın kaydıyla şişmiyor. Personelin hareketliliği burada bir sorun olmaktan çıkıp kaydın taşıdığı sıradan bir bilgiye dönüşüyor.

Hak ediş ayrı tablo değil, kayıttan türeyen sonuçtur

Hak ediş için açılmış ikinci bir tablo yok. Ay sonunda ödenecek tutar, doğrulanmış giriş ve çıkış kayıtlarının kendisinden çıkıyor; kayıtların yanında duran, elle beslenen bir hesap sayfası bulunmuyor.

İkinci tablonun yokluğu bir bakım kalemini de ortadan kaldırıyor. İki tablo tutan bir düzende kaçınılmaz soru şudur: hangisi doğru? Kaynak kayıtlar ile hesap tablosu zamanla birbirinden uzaklaşır, çünkü biri sahadan beslenirken öteki elle sürdürülür. Mutabakat işi de ay sonunda birinin masasına düşer. İkinci tablo hiç açılmadığında bu soru gündeme gelmiyor; tabloların birbirini tutmaması diye bir durum oluşmuyor, çünkü karşılaştırılacak ikinci bir tablo yok.

Aynı desenin ikinci yüzü kendi ürünümüzde görünüyor. Cihaz geçmişinin ayrı bir dosya değil, servis kayıtlarından türeyen bir sonuç olduğu AlgoKlima’da garanti, bakım ve arıza kayıtları cihaz kaydının altında birikiyor. Cihazın geçmişi diye ayrıca tutulan bir liste yok; geçmiş, o cihaza bağlı kayıtların kendisi. Bunun gündelik karşılığı şu: cihaz el değiştirdiğinde geçmişi de kendisiyle kalıyor, taşınacak bir dosya aranmıyor.

İki vakada da aynı kural işliyor. Bir bilgi başka kayıtlardan hesaplanabiliyorsa, o bilgi için ayrı bir yer açmak bilgiyi ikinci kez saklamak demektir. İkinci kopya da ilkinden ayrışma ihtimalini yanında getirir. Türetme bu ihtimali ortadan kaldırıyor; hesaplanan değer her bakıldığında kaynağından yeniden çıkıyor.

Türetme, elle müdahale gerektiren istisnaları yok saymak anlamına gelmiyor. Unutulan çıkış, telefonun arızalandığı bir gün ya da doğrulamanın yapılamadığı bir vardiya yaşanabilir. Bunların hepsi kaynak kaydın düzeyinde çözülüyor: eksik kayıt tamamlanıyor, düzeltme kaydın üstüne yazılıyor. Türetilen sonucun kendisine elle dokunulmuyor. Sonuca dokunulsaydı, ortada yine iki gerçeklik olurdu: kayıtların söylediği ve tabloya yazılan.

Turnikeli PDKS ile telefon tabanlı kayıt yan yana

İki yaklaşım rakip değil. Biri kalıcı tesisin cevabı, öteki ömrü cihazından kısa olan sahanın cevabı. Aşağıdaki tablo ikisini aynı eksenler üzerinde yan yana koyuyor.

EksenTurnikeli PDKSQR + konum tabanlı kayıt
Kurulum ve sökümCihaz sahaya monte edilir; saha bittiğinde cihazın sökülmesi ve taşınması gerekirUygulama personelin telefonuna kurulur; sahaya monte edilen bir şey yoktur
Sahalar arası hareketlilikDoğrulama noktası sabittir; personel o kapıdan geçmediği gün kayıt oluşmazDoğrulama araçları kişiyle birlikte hareket eder; personel hangi sahadaysa kayıt o sahaya düşer
Saha adının belirlenme biçimiSaha, cihazın kurulu olduğu yerdir; kayıt cihazın kimliğinden gelirSaha, giriş anındaki konum doğrulamasından gelir; hiçbir adımda elle seçilmez
Hak ediş dayanağıCihaz geçiş saatini verir; hak ediş hesabı ayrı bir tabloda kurulurHak ediş eşleşen giriş çıkış çiftlerinden üretilir; ikinci bir hesap tablosu tutulmaz
Saha kapandığında geride kalanSökülecek, taşınacak ya da yeni sahaya yeniden kurulacak bir cihazPersonelin cebindeki uygulama ve sunucudaki kayıtlar; sahada fiziksel iz yoktur

Tabloyu okurken belirleyici satır ikincisi. Diğer satırların hepsi maliyet ve kurulum tarafında tartışılabilir; hareketlilik satırı ise doğrudan kaydın oluşup oluşmadığını belirliyor. Personel sabit bir kapıdan geçmiyorsa, o kapıya kurulan cihaz ne kadar iyi olursa olsun kayıt üretmiyor.

Üçüncü satırda fark daha ince. Turnikeli düzende saha bilgisi cihazın kimliğinden geliyor; cihaz nereye kuruluysa kayıt orayı gösteriyor. Telefon tabanlı düzende saha bilgisi girişin yapıldığı andaki konumdan geliyor. İkisi de saha adını elle seçtirmiyor; fark, doğrulamanın sahaya mı yoksa kişiye mi bağlandığında. Sahaya bağlanan doğrulama sahayla birlikte bitiyor, kişiye bağlanan doğrulama kişiyle birlikte sürüyor.

Seçimi yapan şey bu yüzden sektör değil, sahanın ömrü. Yıllarca aynı yerde duracak bir tesiste sabit cihaz daha az hareketli parça demektir ve yatırım tesisin ömrüne yayılır. Aylarla ölçülen, bitince kapanan ve personeli başka sahaya kayan bir işte aynı cihaz, ömrünü tamamlamadan sökülmek üzere kurulur.

Sahadaki kaydın değeri de oluştuğu anda bitmiyor. Giriş çıkış kayıtları ofis tarafında puantajı, puantaj da hak edişi besliyor. Sahadaki giriş çıkış kaydını ofisteki puantaja ve hak edişe bağlayan kurguyu tasarlarken sorduğumuz soru şu oluyor: bu bilgi bir kez mi giriliyor, yoksa her katmanda yeniden mi yazılıyor? Doğrulama kaydın kendisine gömülmüşse cevap birincisi oluyor ve zincirin geri kalanı aynı kayıttan yürüyor.

Temel çıkarımlar

  • Geçici sahada doğrulamayı cihaza değil kayda göm: QR kimliği, telefonun konumu sahayı belirler.
  • Çalışılan süreyi beyan edilen bir alan olarak değil, eşleşen giriş ve çıkıştan hesaplanan bir türev olarak kur; türev üzerinde oynanamaz.
  • Saha bilgisini her kayda konumdan yaz; personel şantiyeler arasında dolaşsa da kayıtlar tasnif gerektirmeden ayrışır.
  • Hak ediş için ikinci bir tablo açma; ikinci tablo olmayınca tabloların birbirini tutmaması diye bir bakım işi de olmaz.
  • Eksik çıkışı sessiz bir tahminle kapatma; kayıt düzeyinde görünür tut ve orada düzelt.

Bu yazıda sık sorulanlar

  • Turnike kurulamayan geçici bir şantiyede giriş çıkış neye göre kaydediliyor?

    Kayıt, sabit bir cihaza değil personelin telefonuna dayanır. Personel sahadaki QR kodu kendi telefonuyla okutur; QR kimin okuttuğunu, telefonun konum servisi hangi sahada olduğunu doğrular. İki bilgi tek giriş kaydında birleşir ve saha adı hiçbir adımda elle seçilmez. Şantiye personel takip sistemi bu kaydı React Native uygulamasından Laravel tabanlı merkeze iletir.

  • Çıkış okutulmadan gün biterse çalışma süresi nasıl hesaplanıyor?

    Süre sistemde doldurulan bir alan olmadığı için eksik çıkış sessizce bir sayıya dönüşmez. Çıkışı okutulmamış giriş, çıkış kaydı gelene kadar eksik kayıt olarak görünür durur ve sorumlusu tarafından kayıt düzeyinde tamamlanır. Kâğıt puantajda unutulan satırın yokluğunu kimse fark etmez; burada eksik, listede duran ve kapatılması gereken bir durumdur. Hesap ancak eşleşen giriş ve çıkış üzerinden yapılır.

  • Aynı işçi bir haftada iki farklı şantiyede çalışırsa kayıtlar karışır mı?

    Karışmaz, çünkü saha bilgisi her kayda oluştuğu anda konumdan yazılır. Aynı işçi pazartesi bir şantiyede, çarşamba başka bir şantiyede QR okuttuğunda iki kayıt zaten farklı saha bilgisi taşır; ayrıştırma ay sonunda yapılan bir tasnif değil, kaydın doğal yapısıdır. Süreler saha bazında ayrı toplanır ve aynı sahada çalışan farklı taşeronların personeli de birbirine karışmaz.

  • Hak edişi ayrı bir Excel tablosunda tutmak neden yanlış sonuç veriyor?

    Ayrı hesap tablosu, saha kayıtlarının elle tutulan ikinci bir kopyasıdır ve iki kopya zamanla birbirinden uzaklaşır; hangisinin doğru olduğu sorusu bakım yükü hâline gelir. Şantiye personel takip sisteminde hak edişin ikinci bir tablosu hiç yoktur: sonuç, doğrulanmış giriş ve çıkış kayıtlarının kendisinden hesaplanır. Unutulan çıkış gibi istisnalar kayıt düzeyinde düzeltilir; türetilen sonuca elle müdahale edilmez.

  • Şantiye kapanınca kurulan sistemin donanımı ne oluyor?

    Sahaya özel donanım kurulmadığı için kapanışta sökülecek, taşınacak ya da depoda bekleyecek bir cihaz oluşmaz. Doğrulamayı yapan kamera ve konum servisi personelin zaten taşıdığı telefondadır; telefonlar personelle birlikte sonraki şantiyeye gider. Sahada kalan tek şey basılı QR koddur ve yenisi sonraki saha için üretilir. Turnike yatırımı ise kalıcı tesiste anlamlıdır; itiraz cihaza değil, geçici sahaya sabit cihaz kurmayadır.

Yazar hakkında

Algoriel

Uzaktan çalışan web yazılım ajansı

İşletmelere özel web ve mobil yazılım geliştiriyoruz. Blogda, yazılım yaptırırken ve yayından sonra karşınıza çıkan soruları cevaplıyoruz.

Etiketler:
  • giriş çıkış takibi
  • QR kod doğrulama
  • konum doğrulama
  • puantaj
  • hak ediş

İnşa edilecek bir sisteminiz mi var?

Kurmak istediğiniz bir sistem varsa teklif formundan anlatabilirsiniz.