Personel Proje Çalışma Süresi ve Proje Maliyet Takip Sistemi
PGS — Personel Proje Çalışma Süresi ve Proje Maliyet Takip Sistemi
Hangi personelin, hangi projede, hangi gün, kaç saat çalıştığını kayıt altına alan; bu kayıtları onay sürecinden geçiren ve proje maliyetini gerçek rakamlarla, EUR bazında ortaya koyan kurumsal bir web uygulaması.
Neden PGS?
Bir üretim işletmesinde en zor cevaplanan soru genellikle en basit görünenidir:
"Bu proje bize gerçekte kaça mal oldu?"
Bu sorunun cevabı çoğu şirkette birden fazla yerde dağınık durur — çalışma saatleri Excel tablolarında, maaş bilgileri İnsan Kaynakları'nda, dış giderler muhasebede, kur bilgisi ise bambaşka bir sistemde. Rakamlar bir araya getirildiğinde ise genellikle geç kalınmış olur.
PGS bu dağınıklığı ortadan kaldırmak için tasarlandı. Personelin günlük çalışma girişinden başlayıp yöneticinin onayından, tarih bazlı ücret geçmişinden ve günlük Merkez Bankası kurundan geçerek proje maliyet raporuna uzanan tek ve kesintisiz bir zincir kurar. Zincirin her halkası kayıt altındadır; hiçbir adımda "kim, ne zaman, neyi değiştirdi" sorusu cevapsız kalmaz.
Nasıl Çalışır? — Bir Çalışma Kaydının Yolculuğu

-
Onay. Kayıt gönderildiğinde personelin tanımlı yöneticisine düşer. Yönetici onaylar, revize ister veya reddeder; her kararda personele kurumsal şablonlu bir e-posta gider. Onay bekleyen kayıtlar tek tek, seçilerek ya da toplu olarak işlenebilir — toplu onay her kaydı kendi işleminde yürüttüğü için biri hata alsa bile diğerleri etkilenmez.
-
Numaralandırma. Onaya gönderilen her kayıt
PGS-2026-1biçiminde benzersiz bir form kodu alır. Sayaç veritabanı seviyesinde atomik olarak ilerler; eşzamanlı yüzlerce gönderimde bile aynı numara iki kez üretilemez. Yıl değiştiğinde sayaç kendiliğinden yenilenir. -
Maliyetlendirme. Onaylanan saatler, o çalışma tarihinde geçerli olan saatlik ücretle çarpılır. Türk Lirası ücretler, o günün TCMB döviz alış kuruyla EUR'ya çevrilir. Proje bazlı dış masraflar da aynı mantıkla eklenir ve toplam maliyet ortaya çıkar.
-
Raporlama. Sonuç dört ayrı rapor ekranında ve Excel çıktısında görünür hale gelir.

Öne Çıkan Yetenekler
Tarih Bazlı Ücret Geçmişi — Geçmiş Maliyetler Asla Değişmez
PGS'nin en kritik tasarım kararı budur. Ücretler tek bir alanda değil, geçerlilik başlangıcı olan dönemler halinde tutulur. Ocak ayında 30.000 TL maaş alan bir personele Mart'ta zam yapıldığında Ocak ve Şubat kayıtları eski maaşın saatlik karşılığıyla, Mart sonrası ise yenisiyle hesaplanır. Bir zam, geçmişte kapanmış projelerin maliyetini geriye dönük olarak bozamaz — raporlar bugün de, bir yıl sonra da aynı rakamı verir.
Ücret girişi kullanıcı için sadeleştirilmiştir: yalnızca aylık brüt maaş girilir, saatlik karşılık otomatik hesaplanır ve anında ekranda gösterilir.
Saatlik Ücret = ((Aylık Maaş × 12) / 365) / 7,5
Otomatik TCMB Kur Senkronizasyonu
Sistem, döviz kurunu manuel girişe ya da dış bir sisteme bağımlı bırakmaz. Arka planda çalışan servis, ilk kurulumda TCMB'den son üç yılın günlük döviz alış kurlarını gün gün çeker, ardından saatlik olarak son iki haftayı tarayarak eksikleri tamamlar. Uygulama günlerce kapalı kalsa bile açılışta boşluklar kendiliğinden kapanır. Hafta sonu ve tatil günleri için en yakın önceki iş gününün kuru kullanılır. Kur grafiği ekranında EUR ve USD'nin bir aydan üç yıla kadar seçilebilen dönemlerdeki seyri izlenebilir.
Merkezi Kimlik Doğrulama (EPIP SSO)
Kimlik doğrulama, kurumun EPIP İK Portalı'na OpenID Connect (authorization code + PKCE) standardıyla devredilmiştir. Personel ayrı bir PGS şifresi taşımaz; portalda açık oturumu varsa PGS'ye şifresiz geçer. Sistemde tanımlı olmayan bir personel ilk girişinde otomatik oluşturulur; ad, e-posta ve ünvan bilgileri her girişte portaldan tazelenir. Yönetici–ast ilişkisi de portaldan gelir ve onay hiyerarşisi böylece organizasyon şemasıyla kendiliğinden senkron kalır.
Buna karşılık yetkiler PGS'nin kendi tablolarında durur — portal yalnızca "bu kullanıcı kim" sorusunu cevaplar, "neyi görebilir" kararını PGS verir. PGS'de pasife alınan bir kullanıcı, portalda geçerli oturumu olsa dahi sisteme giremez.
Yönetici Adına Giriş
Her personelin bilgisayar başında olmadığı gerçeğinden hareketle, yönetici kendisine bağlı aktif personelin adına çalışma kaydı açabilir, taslağını düzenleyebilir ve onaya gönderebilir. Yönetici, personel seçicisinde yalnızca kendi ekibini görür ve bu kısıt sunucu tarafında ayrıca doğrulanır. Bildirimlerde kaydın yönetici tarafından açıldığı açıkça belirtilir — şeffaflıktan ödün verilmez.
İzin Yönetimi
İnsan Kaynakları tarafından girilen izinler sisteme tam entegredir: izinli güne çalışma kaydı girilemez, o gün eksik gün sayılmaz, panoda uyarı olarak çıkmaz ve o gün izinli personele hatırlatma e-postası gönderilmez.
Akıllı Hatırlatma Sistemi
Eksik kayıt takibi kullanıcıyı yormadan çalışır. Hatırlatma servisi yalnızca iş günlerinde, 09:00–17:00 arasında saat başı devreye girer; hafta sonu, resmî tatil ve şirketin kendi tanımladığı özel günlerde susar. Gönderilen e-posta iki bölümlüdür: eksik iş günleri ve taslakta unutulmuş, onaya gönderilmemiş kayıtlar. Yönetim rollerindeki kullanıcılar hatırlatma kapsamı dışındadır.
E-posta Kuyruğu ve İzlenebilirlik
Uygulama hiçbir e-postayı doğrudan göndermez. Tüm mailler önce kuyruğa yazılır; arka plandaki dağıtıcı servis bunları partiler halinde gönderir, başarısız olanları belirli aralıklarla sınırlı sayıda yeniden dener ve nihayetinde başarısız olanları işaretler. Sonuç: SMTP sunucusu geçici olarak erişilemez olsa bile hiçbir bildirim kaybolmaz. E-posta Logları ekranından gönderilen her mail, durumu ve deneme sayısıyla listelenir; içeriği birebir önizlenebilir ve tek tuşla yeniden kuyruğa alınabilir.
Sistem İçi Bildirimler
Üst çubuktaki zil simgesi okunmamış bildirim sayısını gösterir; son bildirimler açılır menüde listelenir, ilgili kayda tek tıkla gidilir. Altyapı geneldir ve bildirim yazılamaması hiçbir zaman asıl işlemi bozmaz.
Denetim Kaydı
Sistem ayarları dışındaki her önemli veri değişikliği denetim tablosuna yazılır: proje, personel, ücret, çalışma kaydı, onay kararı, masraf, tatil, departman ve yönetici atamaları. Her satır kimin, ne zaman, hangi işlemi yaptığını ve güncellemelerde eski → yeni farkını taşır. Denetim kaydının yazılamaması da asıl işlemi durdurmaz — log altyapısı hiçbir koşulda operasyonun önüne geçmez.
Rol Bazlı Görünürlük ve Yetki
Yetkiler tek bir merkezden, ekran bazlı gruplar halinde yönetilir; yeni bir yetki ihtiyacı kodun onlarca yerine dokunmayı değil, tek bir tanıma satır eklemeyi gerektirir.
| Rol | Yetki alanı |
|---|---|
| Süper Admin | Tüm sistem: personel, proje, tatil, ayarlar, tüm kayıtlar ve raporlar |
| Personel | Kendi günlük çalışma girişleri ve kendi kayıtlarının görüntülenmesi |
| Yönetici | Ekibinin kayıtları (taslaklar dahil), onaylama / reddetme / revize isteme, ekibi adına kayıt girme |
| Yönetici (Onay Muaf) | Yöneticinin tüm yetkileri + kendi kayıtları onay beklemeden geçerli sayılır |
| Finans Müdürü | Toplu raporlar, maliyet ve masraf yönetimi, personel kartı yönetimi |
| İnsan Kaynakları | İzin yönetimi |
| Planlamacı | Proje yönetimi: proje açma, düzenleme, aktif/pasif alma |
Temel görünürlük kuralı nettir: bir personelin çalışma kaydını yalnızca kendisi, tanımlı yöneticisi ve Süper Admin görebilir. Diğer yöneticiler ve Finans Müdürü bireysel kayıt detayına erişemez; Finans yalnızca toplulaştırılmış raporları görür. Bir kullanıcıya birden fazla rol tanımlanabilir.
Raporlama
Tüm raporlar tarih aralığı ve proje/personel filtreleriyle çalışır ve Excel olarak indirilebilir:

- Proje Maliyet Raporu — Proje başına toplam saat, personel maliyeti, dış masraf ve genel toplam (EUR). Proje seçildiğinde personel ve masraf türü kırılımlı detaya inilir.

- Personel Bazlı Rapor — Personel × proje matrisinde saat ve maliyet dağılımı.
- Döviz Kurları ve Kur Grafiği — Güncel USD/EUR alış kurları ve dönem seçimli grafik.

Buna ek olarak Taslak / Red / Revize Takibi ekranı, sistemde ilerlemeyen kayıtların (gönderilmemiş taslaklar, reddedilenler, revize bekleyenler) tek listede izlenmesini sağlar.
Teknoloji ve Mimari
| Katman | Seçim |
|---|---|
| Uygulama çatısı | ASP.NET Core MVC (.NET 10) |
| Veritabanı | Microsoft SQL Server + Entity Framework Core 10 |
| Kimlik doğrulama | ASP.NET Core Identity + OpenID Connect (EPIP SSO) |
| Arayüz | Bootstrap 5 üzerine geliştirilmiş kurumsal tasarım sistemi |
| Grafik | Chart.js |
| Excel | ClosedXML |
| E-posta | MailKit |
Lisans Yaklaşımı
Projede ticari lisans ücreti gerektiren hiçbir bileşen kullanılmamıştır. Tüm bağımlılıklar MIT ve benzeri serbest lisanslıdır — sistem, kullanıcı sayısı veya sunucu sayısı arttığında ek lisans maliyeti doğurmaz.
Güvenlik
- Şifreleme: Maaş ve saatlik ücret bilgileri ile SMTP parolası veritabanında AES-256 ile şifreli tutulur; veritabanına doğrudan erişen biri dahi bu değerleri okuyamaz.
- Yetki doğrulaması sunucuda: Arayüzde gizlenen her yetki, sunucu tarafında ayrıca denetlenir. Ekranın gizlenmesi tek başına güvenlik önlemi sayılmaz.
- Oturum sertleştirme: Çerezler HttpOnly ve SameSite kısıtlarıyla, üretim ortamında HSTS ile yayınlanır.
- Salt-okunur ERP erişimi: Kurumsal ERP verisine yalnızca okuma yönünde erişilir; PGS hiçbir koşulda ERP'ye yazmaz.
Performans
Sistem, binlerce kayıtlık gerçek veri hacmiyle test edilerek ölçeklendirildi. Yanıt sıkıştırma (Brotli/gzip), statik dosyalarda derleme zamanı sıkıştırma ve parmak izleme, bildirim ve kur sorgularında zaman sınırlı önbellek, rapor tarama sorguları için özel veritabanı indeksleri kullanılır. Ayrıca her gece 03:00'te otomatik indeks bakımı çalışır: parçalanma oranına göre indeksler yeniden düzenlenir veya yeniden oluşturulur ve bakım kaydı denetim loguna yazılır. Veritabanı, kullanım arttıkça kendi kendini toparlar.
Kullanıcı Deneyimi
Arayüz baştan sona Türkçedir ve kurumsal koyu lacivert bir tasarım dilini takip eder: sabit sidebar, cam etkili üst bar, role göre şekillenen menü, ikonlu pano kartları ve mobilde açılır sidebar. Uzun süren işlemlerde (kaydetme, onay, Excel indirme) ekran "Lütfen bekleyiniz" katmanıyla kilitlenir ve buton devre dışı kalır — çift tıklamadan doğan mükerrer kayıt riski ortadan kalkar. Tarih alanları, tarayıcı dilinden bağımsız olarak gg.aa.yyyy biçimini kabul eder ve hatalı girişte Türkçe uyarı verir. Raporlar için yazdırma düzeni ayrıca tanımlanmıştır.
Kurulum ve İşletim
Uygulama, ilk açılışında veritabanı şemasını kendisi oluşturur ve başlangıç verisini yükler: roller, departmanlar, resmî tatiller, sistem ayarları, masraf türleri ve firma proje listesi. Ek bir kurulum sihirbazına ya da elle SQL çalıştırmaya gerek yoktur.
Yayına alma tek komutla paketlenir; sunucuda Windows Servisi olarak (makine açılışında kendiliğinden başlayacak ve hata durumunda otomatik yeniden başlayacak biçimde) veya IIS altında barındırılabilir. Ortam ayrımı hazırdır: yayınlanan uygulama üretim yapılandırmasını otomatik olarak devreye alır, log seviyesini kısar ve geliştirici hata ekranlarını kapatır.
Yol Haritası
- Primavera P6 entegrasyonu — Proje planlama verisinin PGS ile çift yönlü konuşması için API entegrasyonu planlanıyor. Parametre altyapısı ve servis iskeleti hazır.
- Geriye dönük düzeltme penceresinin genişletilmesi — Uzun dönemli düzeltme talepleri için esnek pencere kuralı değerlendiriliyor.
Özetle
PGS, "kim ne zaman ne yaptı" sorusunu bir Excel dosyası disiplinine bırakmak yerine kurumsal bir sürece dönüştürür. Girişten onaya, onaydan tarih bazlı ücretlendirmeye, oradan günlük Merkez Bankası kuruyla hesaplanmış EUR maliyete ve Excel raporuna kadar zincirin tamamı tek uygulamada, kayıt altında ve geriye dönük bozulmayacak biçimde işler.
Proje teklifi için İletişim kanalı üzerinden benimle iletişime geçebilirsiniz.
Geliştirici: Ahmet Can Önal

Görseli yeni sekmede açmak için tıklayın · Kapatmak için ESC