TSE Automation WEB, Türk Standardları Enstitüsü (TSE) laboratuvar süreçlerini dijitalleştirmek, operasyonel verimliliği artırmak ve raporlama işlemlerini otomatize etmek amacıyla geliştirilmiş kapsamlı bir yönetim sistemidir.
Bu proje, laboratuvar ortamındaki karmaşık iş akışlarını tek bir merkezi platformda toplar. Makine yönetimi, deney takibi, kalibrasyon/bakım periyotları ve personel performansı gibi kritik süreçleri yönetirken, yöneticilere detaylı veri analitiği ve otomatik raporlama imkanları sunar.
- Frontend: React 19 + TypeScript + Vite
- Backend: Node.js + Express v5
- Veritabanı: PostgreSQL (Prod) / SQLite (Dev)
- Otomasyon: Node-Cron + Nodemailer ile haftalık otomatik raporlar
- Özellikler:
- Dinamik deney ve başvuru yönetimi
- Makine kalibrasyon ve bakım takibi
- Gelişmiş grafiksel analiz panelleri (Dashboard)
- Excel formatında otomatik rapor çıktıları
Proje, modern yazılım geliştirme prensiplerine uygun olarak Monorepo benzeri bir yapıda kurgulanmış olup, Frontend, Backend ve Otomasyon servislerini ayrı katmanlarda barındırır.
TSE_Automation_WEB/
├── automated-reports/ # 📧 OTOMATİK RAPORLAMA SERVİSİ (Bağımsız Node.js Uygulaması)
│ ├── src/
│ │ ├── mailer.ts # SMTP ayarları ve e-posta şablon yönetimi (Nodemailer)
│ │ ├── report.ts # Veritabanından haftalık veriyi çekip Excel'e işleyen lojik
│ │ ├── server.ts # Cron Job zamanlayıcısı (Her Pazartesi 09:00)
│ │ └── cleanup.ts # Oluşturulan geçici rapor dosyalarının temizlenmesi
│ └── package.json # Servis bağımlılıkları
│
├── public/ # 🌐 STATİK VARLIKLAR
│ └── ... # Web sunucusu tarafından doğrudan sunulan dosyalar
│
├── readMeImage/ # 🖼️ DOKÜMANTASYON GÖRSELLERİ
│ └── ... # README dosyasında kullanılan ekran görüntüleri
│
├── server/ # 🔙 BACKEND API (Node.js + Express + TypeScript)
│ ├── src/
│ │ ├── db/ # Veritabanı bağlantı katmanı (Prod: PostgreSQL, Dev: SQLite)
│ │ ├── repos/ # 🗄️ REPOSITORY KATMANI (Veritabanı Erişim Nesneleri)
│ │ │ ├── machine.repo.ts # Makine verileri için SQL sorguları
│ │ │ ├── application.repo.ts # Deney başvuruları ve durum güncellemeleri
│ │ │ ├── user.repo.ts # Kullanıcı yetkilendirme sorguları
│ │ │ └── ... # Diğer varlık repository'leri
│ │ ├── routes/ # 🚦 ROUTE KATMANI (REST API Uç Noktaları)
│ │ │ ├── machine.route.ts # GET/POST/PUT/DELETE makine işlemleri
│ │ │ ├── auth.route.ts # Login ve Token yenileme işlemleri
│ │ │ └── ... # Diğer API rotaları
│ │ ├── services/ # 🧠 SERVİS KATMANI (İş Mantığı)
│ │ │ ├── alert.service.ts # Kalibrasyon/Bakım tarihi hesaplama algoritmaları
│ │ │ └── ... # Validasyon ve iş kuralları
│ │ ├── app.ts # Express sunucu konfigürasyonu ve Middleware'ler
│ │ └── schema.sql # Veritabanı tabloları ve ilişkileri (DDL)
│
├── src/ # 🖥️ FRONTEND (React 19 + TypeScript + Vite)
│ ├── components/ # 🧩 YENİDEN KULLANILABİLİR BİLEŞENLER
│ │ ├── Sidebar.tsx # Dinamik sol menü (Admin/User yetkisine göre değişir)
│ │ ├── ProtectedRoute.tsx # Oturum kontrolü yapan güvenlik katmanı
│ │ ├── AdminRoute.tsx # Yetki kontrolü yapan güvenlik katmanı
│ │ ├── KalibrasyonModal.tsx # Makine listesinde açılan hızlı işlem penceresi
│ │ └── BakimModal.tsx # Bakım kayıt penceresi
│ ├── pages/ # 📄 UYGULAMA SAYFALARI (Detayları aşağıdadır)
│ ├── services/ # 📡 HTTP İSTEK KATMANI (Axios)
│ │ └── api.ts # Backend ile iletişim kuran merkezi servis
│ ├── App.tsx # Ana uygulama ve Route tanımları
│ └── main.tsx # React DOM render noktası
│
└── docker-compose.yml # 🐳 Konteyner orkestrasyonu (Postgres & PGAdmin)
Bu bölümde uygulamanın her bir sayfasının ne işe yaradığı, hangi özellikleri barındırdığı ve kullanıcıya ne sunduğu en ince detayına kadar açıklanmıştır.
Uygulamaya erişim, güvenli bir kimlik doğrulama katmanı ile korunur.
- Güvenlik: Kullanıcı şifreleri veritabanında
bcryptile hashlenmiş olarak saklanır. İletişimJWT(JSON Web Token) üzerinden sağlanır. - Rol Yönetimi:
- Admin: Tüm sayfalara erişebilir, silme ve düzenleme yetkisine sahiptir.
- User: Sadece veri girişi yapabilir ve raporları görüntüleyebilir. Kritik ayarları değiştiremez.
- Bilgilendirme: Giriş ekranında yer alan "Hakkımızda" butonu, sistemin amacı hakkında özet bilgi veren bir modal açar.
Giriş Ekranı ve Hakkımızda Bilgilendirme Paneli
Yöneticilerin laboratuvar performansını tek bakışta görebilmesi için tasarlanmış ana kontrol panelidir. Recharts kütüphanesi ile dinamik grafikler sunar.
- KPI Kartları:
- Toplam Deney: Sistemdeki toplam kayıtlı deney sayısı.
- Aktif Makine: Envanterdeki çalışır durumdaki cihaz sayısı.
- Bekleyen İşler: Henüz tamamlanmamış deney başvuruları.
- Grafikler:
- Zaman Trendi (Line Chart): Aylık bazda deney sayılarının artış/azalış trendini gösterir. Mevsimsel yoğunlukları analiz etmek için kullanılır.
- Firma Dağılımı (Pie Chart): Laboratuvarın en çok hangi firmalara hizmet verdiğini oransal olarak gösterir.
- Personel Performansı (Bar Chart): Hangi personelin kaç adet deney gerçekleştirdiğini kıyaslar. İş yükü dağılımını dengelemek için kritiktir.
- Test Türü Analizi (Radar/Bar Chart): En çok talep edilen test türlerini (Çekme, Basma, Sertlik vb.) analiz eder.
Yönetici Analiz Paneli (Dashboard) Genel Görünüm
Zaman Bazlı Trendler, Firma Dağılımı ve Personel Performans Grafikleri
Laboratuvara gelen numunelerin sisteme ilk girişinin yapıldığı sayfadır.
- Dinamik Form Yapısı:
- Firma Seçimi: Veritabanındaki kayıtlı firmalar dropdown (açılır liste) olarak gelir.
- Deney Türü: Seçilen deney türüne göre (örn: TS EN ISO 6892-1) ilgili standartlar otomatik yüklenir.
- Fiyat Hesaplama: Deney türü seçildiğinde, sistemde tanımlı birim fiyat otomatik olarak forma yansır.
- Personel Atama: Deneyi yapacak personel listeden seçilir.
Geçmiş ve güncel tüm deneylerin listelendiği veri merkezidir.
- Gelişmiş Tablo: Deney tarihi, firma, test türü, personel ve durum bilgilerini içeren detaylı liste.
- Filtreleme:
- Tarih aralığına göre (Başlangıç - Bitiş).
- Firma adına göre arama.
- Deney durumuna göre (Tamamlandı/Bekliyor).
- Excel Export:
ExcelJSentegrasyonu sayesinde, filtrelenmiş veriler tek tuşla formatlı bir Excel raporu olarak indirilebilir.
Deney Raporlama Ekranı ve Otomatik Oluşturulan Excel Çıktısı
Laboratuvar envanterinin canlı takibini sağlar.
- Akıllı Renk Kodları:
- 🔴 Kırmızı: Kalibrasyon veya bakım tarihi geçmiş cihazlar.
- 🟡 Sarı: Kalibrasyonuna 30 günden az kalmış cihazlar (Uyarı).
- ⚪ Beyaz: Durumu normal cihazlar.
- Hızlı İşlemler: Her satırda bulunan butonlar ile o makineye ait "Kalibrasyon Geçmişi" veya "Bakım Geçmişi" görüntülenebilir.
- Modal Entegrasyonu: Liste üzerinden direkt olarak yeni bakım veya kalibrasyon kaydı girilebilir (
KalibrasyonModal,BakimModal).
Makine Envanter Listesi ve Durum Renk Kodları
Kalibrasyon/Bakım Ekleme Modalları ve Uyarı Sistemi
Envantere yeni bir cihaz eklemek için kullanılır.
- Veri Alanları: Marka, Model, Seri No, Üretim Yılı, Demirbaş No.
- Periyot Ayarları: Cihazın kalibrasyon periyodu (örn: 1 yıl) ve bakım periyodu (örn: 6 ay) burada tanımlanır. Sistem sonraki tarihleri buna göre hesaplar.
Sistemin dinamik yapısını besleyen veri giriş ekranlarıdır. Bu sayfalar genellikle sadece Admin yetkisine sahip kullanıcılar tarafından görüntülenir.
- Personel Yönetimi (
src/pages/PersonelEkle):- Yeni laboratuvar personeli ekleme, unvan ve iletişim bilgilerini girme.
- Firma Yönetimi (
src/pages/KullaniciEkle):- Hizmet verilen müşteri firmaların vergi no, adres ve yetkili kişi bilgileriyle kaydı.
- Deney Türü Tanımlama (
src/pages/DeneyTuruEkle):- Laboratuvarda yapılan testlerin standart kodları (ISO, EN, TS), süreleri ve güncel birim fiyatları buradan yönetilir.
- Dış Kaynak Yönetimi:
- Kalibrasyon Kuruluşları (
src/pages/KalibrasyonKurulusEkle): Cihazların kalibrasyonunu yapan akredite kuruluşların kaydı. - Bakım Kuruluşları (
src/pages/BakimKurulusEkle): Cihazların bakımını yapan yetkili servislerin kaydı.
- Kalibrasyon Kuruluşları (
Temel Varlık Tanımlama Ekranları (Makine, Firma, Personel)
Sistem Parametreleri ve Dış Kaynak Yönetimi
Kullanıcı müdahalesi gerektirmeyen, arka planda çalışan akıllı raporlama sistemidir.
- Teknoloji:
node-cronkütüphanesi ile zamanlanmış görevler (Cron Jobs) oluşturulur. - Çalışma Mantığı:
- Her Pazartesi saat 09:00'da tetiklenir.
- Veritabanına bağlanarak "Son 7 gün içinde tamamlanan" deneyleri sorgular.
- Bu verileri işleyerek okunabilir bir Excel dosyası oluşturur.
Nodemailerservisi üzerinden, sistemde tanımlı yönetici e-posta adreslerine bu Excel dosyasını ek olarak gönderir.
- Avantajı: Yöneticilerin sisteme girmesine gerek kalmadan haftalık performansı e-posta kutularında görmelerini sağlar.
Otomatik Gönderilen Haftalık Bilgilendirme E-postası
| Teknoloji | Açıklama |
|---|---|
| React 19 | Modern ve reaktif kullanıcı arayüzü |
| TypeScript | Tip güvenli kod yapısı |
| Vite | Hızlı geliştirme ve derleme aracı |
| Recharts | Veri görselleştirme ve grafik kütüphanesi |
| ExcelJS | Excel raporlama işlemleri |
| React Router | Sayfa yönlendirme yönetimi |
| Teknoloji | Açıklama |
|---|---|
| Node.js & Express | RESTful API sunucusu |
| PostgreSQL | Prodüksiyon ortamı için ilişkisel veritabanı |
| SQLite | Geliştirme ortamı için hafif veritabanı |
| Better-SQLite3 | Yüksek performanslı SQLite sürücüsü |
| JWT & BCrypt | Güvenli kimlik doğrulama ve şifreleme |
| Araç | Kullanım |
|---|---|
| Docker | Konteynerizasyon ve servis yönetimi |
| Nodemailer | E-posta gönderim servisi |
| Node-Cron | Zamanlanmış görevler (Cron jobs) |
| ESLint | Kod kalitesi ve standartlaştırma |
- Node.js (v18 veya üzeri)
- Docker & Docker Compose (PostgreSQL veritabanı için önerilir)
- Git
git clone https://github.com/LabXpert/TSE_Automation_WEB.git
cd TSE_Automation_WEBProjenin çalışması için gerekli konfigürasyonları yapın.
Kök Dizin (.env):
POSTGRES_USER=admin
POSTGRES_PASSWORD=secret
POSTGRES_DB=tse_db
VITE_API_BASE_URL=http://localhost:5000Server Dizini (server/.env):
# Geliştirme için SQLite, Prodüksiyon için postgres
DB_DRIVER=sqlite
SQLITE_PATH=./data/tse.db
JWT_SECRET=cokgizlisifreSeçenek A: Geliştirme Modu (Hızlı Başlangıç) Bu modda veritabanı olarak yerel SQLite dosyası kullanılır, Docker gerektirmez.
# Terminal 1: Backend'i başlat
cd server
npm install
npm run dev
# Terminal 2: Frontend'i başlat
cd ..
npm install
npm run devSeçenek B: Prodüksiyon Modu (Docker) Tüm sistemi (Frontend, Backend, PostgreSQL, PGAdmin) konteynerler içinde ayağa kaldırır.
docker-compose up -d --build- Frontend: http://localhost:5173
- Backend API: http://localhost:5000
- PGAdmin: http://localhost:5050
