🚀 Features Implemented: - Full-stack SvelteKit application with Express backend - Role-based authentication (Admin, Fuel Manager, Goods Manager) - Real-time notifications with Socket.IO - SQLite database with auto-initialization in /db directory - Comprehensive user management and fuel slip tracking - Responsive design with Turkish language support 🏗️ Architecture: - Frontend: Svelte + SvelteKit + Vite - Backend: Node.js + Express + Socket.IO - Database: SQLite3 with automatic schema creation - Security: bcrypt password hashing + session management - Real-time: Socket.IO for instant notifications 📁 Project Structure: - Organized documentation in /docs directory - Database files in /db directory with auto-setup - Clean separation of API routes and UI components - Comprehensive documentation including processes, architecture, and user guides 📚 Documentation: - PROJECT_PROCESSES.md: Comprehensive project documentation - KNOWLEDGE_BASE.md: Quick reference and user guide - TEST_GUIDE.md: Testing and quality assurance guide - README_ADMIN_FEATURES.md: Admin functionality guide - Full API documentation and system architecture 🔒 Security Features: - Role-based authorization system - Encrypted password storage with bcrypt - Session-based authentication - SQL injection protection with parameterized queries - CORS configuration and input validation 🎯 Key Features: - Fuel slip creation and approval workflow - Real-time notifications between users - PDF generation for fuel slips - User and vehicle management - Comprehensive audit logging 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
319 lines
9.4 KiB
Markdown
319 lines
9.4 KiB
Markdown
# Yakıt Takip Sistemi - Test Rehberi
|
||
|
||
## 🎯 **Sistem Genel Bakış**
|
||
|
||
KNOWLEDGE_BASE.md'deki iş akışlarına göre implement edilen tam fonksiyonel yakıt takip sistemi.
|
||
|
||
### 🚀 **Sunucu Durumu**
|
||
- **Frontend**: `http://localhost:5174/` (SvelteKit)
|
||
- **Backend**: `http://localhost:3000` (Express/Socket.IO)
|
||
- **Status**: ✅ Çalışıyor
|
||
|
||
## 🔐 **Test Kullanıcıları**
|
||
|
||
| Kullanıcı Adı | Şifre | Rol | Yetkiler | Yönlendirme |
|
||
|---------------|--------|-----|----------|------------|
|
||
| `admin` | `admin123` | Sistem Yöneticisi | Araç, birlik, personel yönetimi | `/dashboard` |
|
||
| `fuel` | `fuel123` | Yakıt Sorumlusu | Fiş oluşturma, takip | `/fuel-slips` |
|
||
| `goods` | `goods123` | Mal Sorumlusu | Fiş onay/reddetme | `/goods-manager` |
|
||
|
||
## 📋 **Test Senaryoları**
|
||
|
||
### 1. Admin Panel Testleri
|
||
|
||
#### 1.1 Giriş Testi
|
||
```bash
|
||
✓ Adım 1: http://localhost:5174/ adresine git
|
||
✓ Adım 2: "admin" / "admin123" ile giriş yap
|
||
✓ Beklenen: /dashboard sayfasına yönlendirme
|
||
✓ Kontrol: Sol menüde "Yönetim Paneli" başlığı
|
||
```
|
||
|
||
#### 1.2 Araç Yönetimi Testi
|
||
```bash
|
||
✓ Adım 1: Sol menüden "Araç Yönetimi" seç
|
||
✓ Adım 2: Boş state kontrolü ("Henüz Araç Yok" mesajı)
|
||
✓ Adım 3: "Yeni Araç Ekle" butonuna tıkla
|
||
✓ Adım 4: Form doldur:
|
||
- Marka: Toyota
|
||
- Model: Corolla
|
||
- Yıl: 2022
|
||
- Plaka: 34TEST123
|
||
✓ Adım 5: "Kaydet" butonuna tıkla
|
||
✓ Beklenen: Araç kartları görüntülenmeli
|
||
✓ Adım 6: Araç kartındaki "Düzenle" butonunu test et
|
||
✓ Adım 7: Araç bilgilerini güncelle
|
||
✓ Adım 8: "Sil" butonunu test et
|
||
```
|
||
|
||
#### 1.3 Birlik Yönetimi Testi
|
||
```bash
|
||
✓ Adım 1: Sol menüden "Birlik Yönetimi" seç
|
||
✓ Adım 2: "Yeni Birlik Ekle" butonuna tıkla
|
||
✓ Adım 3: Form doldur:
|
||
- Birlik Adı: 1. Test Birliği
|
||
- Adres: Test Adresi
|
||
- STK: STK-001
|
||
- BTK: BTK-001
|
||
- Sorumlu Bilgileri:
|
||
* Adı Soyadı: Test Personel
|
||
* Rütbesi: Yüzbaşı
|
||
* Sicil: TEST001
|
||
* TC Kimlik: 12345678901
|
||
* İrtibat: 05321234567
|
||
✓ Adım 4: "Kaydet" butonuna tıkla
|
||
✓ Beklenen: Birlik kartı görüntülenmeli
|
||
✓ Validasyon Testi: TC Kimlik 11 hane kontrolü
|
||
```
|
||
|
||
#### 1.4 Personel Yönetimi Testi
|
||
```bash
|
||
✓ Adım 1: Sol menüden "Yakıt Personeli" seç
|
||
✓ Adım 2: "Yeni Personel Ekle" butonuna tıkla
|
||
✓ Adım 3: Form doldur:
|
||
- Adı Soyadı: Test Personel
|
||
- Rütbesi: Üsteğmen
|
||
- Sicil: TEST002
|
||
- TC Kimlik: 98765432109
|
||
- İrtibat: 05339876543
|
||
✓ Adım 4: "Kaydet" butonuna tıkla
|
||
✓ Adım 5: Personel durumunu test et (Aktif/Pasif)
|
||
✓ Adım 6: "Pasif Yap" butonunu test et
|
||
```
|
||
|
||
#### 1.5 Mal Sorumluları Yönetimi Testi
|
||
```bash
|
||
✓ Adım 1: Sol menüden "Mal Sorumluları" seç
|
||
✓ Adım 2: Boş state kontrolü ("Henüz Mal Sorumlusu Yok" mesajı)
|
||
✓ Adım 3: "Yeni Mal Sorumlusu Ekle" butonuna tıkla
|
||
✓ Adım 4: Modal form doldur:
|
||
- Adı Soyadı: Test Mal Sorumlusu
|
||
- Rütbesi: Binbaşı
|
||
- Sicil Numarası: GM001
|
||
- TC Kimlik: 12345678901
|
||
- İrtibat: 05321234567
|
||
- E-posta: test.mal@mil.tr
|
||
✓ Adım 5: "Kaydet" butonuna tıkla
|
||
✓ Beklenen: Mal sorumlusu kartı görüntülenmeli
|
||
✓ Adım 6: Mal sorumlusu kartındaki "Düzenle" butonunu test et
|
||
✓ Adım 7: Mal sorumlusu bilgilerini güncelle
|
||
✓ Adım 8: "Pasif Yap/Aktif Yap" durum değiştirme testi
|
||
✓ Adım 9: "Sil" butonunu test et
|
||
✓ Validasyon Testleri:
|
||
- TC Kimlik 11 hane kontrolü
|
||
- E-posta format kontrolü
|
||
- Sicil numarası tekrar kontrolü
|
||
```
|
||
|
||
### 2. Yakıt Sorumlusu Testleri
|
||
|
||
#### 2.1 Giriş ve Fiş Oluşturma
|
||
```bash
|
||
✓ Adım 1: "fuel" / "fuel123" ile giriş yap
|
||
✓ Beklenen: /fuel-slips sayfasına yönlendirme
|
||
✓ Adım 2: Boş state kontrolü ("Henüz Fiş Yok" mesajı)
|
||
✓ Adım 3: "Yeni Fiş Oluştur" butonuna tıkla
|
||
✓ Adım 4: Modal form doldur:
|
||
- Tarih: Bugünün tarihi
|
||
- Kuvvet Komutanı: Test Komutan
|
||
- Birlik: 1. Motorlu Piyade Tugayı (Admin ekledi)
|
||
- Araç: Toyota Corolla (Admin ekledi)
|
||
- Yakıt Türü: Benzin
|
||
- Litre: 45
|
||
- KM: 125000
|
||
- Personel: Test Personel (Admin ekledi)
|
||
- Notlar: Test yakıt ikmali
|
||
✓ Adım 5: "Fiş Oluştur" butonuna tıkla
|
||
✓ Beklenen: Başarı mesajı ve fiş kartı
|
||
```
|
||
|
||
#### 2.2 Fiş Durumları Testi
|
||
```bash
|
||
✓ Adım 1: Oluşturulan fişin durumunu kontrol et ("Beklemede")
|
||
✓ Adım 2: PDF İndir butonunu test et (placeholder)
|
||
✓ Adım 3: Filtreleme testi
|
||
✓ Adım 4: Tarih sıralaması testi
|
||
```
|
||
|
||
### 3. Mal Sorumlusu Testleri
|
||
|
||
#### 3.1 Giriş ve Atanan Fişler
|
||
```bash
|
||
✓ Adım 1: "goods" / "goods123" ile giriş yap
|
||
✓ Beklenen: /goods-manager sayfasına yönlendirme
|
||
✓ Adım 2: Sol menüde "Onay Paneli" başlığı
|
||
✓ Adım 3: Yakıt sorumlusunun oluşturduğu fişi bekle
|
||
✓ Beklenen: Atanan fişin listelenmesi
|
||
✓ Adım 4: Öncelik sistemi testi:
|
||
- 50L altı: Düşük öncelik (yeşil)
|
||
- 50-100L: Orta öncelik (sarı)
|
||
- 100L üstü: Yüksek öncelik (kırmızı)
|
||
```
|
||
|
||
#### 3.2 Onay ve Reddetme Testleri
|
||
```bash
|
||
✓ Onay Testi:
|
||
✓ Adım 1: "Onayla" butonuna tıkla
|
||
✓ Adım 2: Onay modalini kontrol et
|
||
✓ Adım 3: Onay notu ekle (opsiyonel)
|
||
✓ Adım 4: "Onayla" butonuna tıkla
|
||
✓ Beklenen: "Onaylı" durumuna geçiş
|
||
|
||
✓ Reddetme Testi:
|
||
✓ Adım 1: "Reddet" butonuna tıkla
|
||
✓ Adım 2: Reddetme modalini kontrol et
|
||
✓ Adım 3: Red gerekçesi gir (zorunlu)
|
||
✓ Adım 4: "Reddet" butonuna tıkla
|
||
✓ Beklenen: "Reddedildi" durumuna geçiş ve gerekçe görünümü
|
||
```
|
||
|
||
### 4. Cross-Role Testleri
|
||
|
||
#### 4.1 Rol Değiştirme Testi
|
||
```bash
|
||
✓ Adım 1: Admin olarak çıkış yap
|
||
✓ Adım 2: Fuel Manager olarak giriş yap
|
||
✓ Adım 3: Fiş oluştur
|
||
✓ Adım 4: Çıkış yap
|
||
✓ Adım 5: Goods Manager olarak giriş yap
|
||
✓ Adım 6: Oluşturulan fişi onayla
|
||
✓ Adım 7: Çıkış yap
|
||
✓ Adım 8: Admin olarak giriş yap
|
||
✓ Adım 9: Fiş durumunu kontrol et ("Onaylı")
|
||
```
|
||
|
||
#### 4.2 Yetki Kontrol Testi
|
||
```bash
|
||
✓ Fuel Manager testleri:
|
||
✓ Araç yönetimi sayfasına erişim denemesi → 403
|
||
✓ Birlik yönetimi sayfasına erişim denemesi → 403
|
||
✓ Personel yönetimi sayfasına erişim denemesi → 403
|
||
|
||
✓ Goods Manager testleri:
|
||
✓ Araç yönetimi sayfasına erişim denemesi → 403
|
||
✓ Birlik yönetimi sayfasına erişim denemesi → 403
|
||
✓ Personel yönetimi sayfasına erişim denemesi → 403
|
||
✓ Mal sorumluları yönetimi sayfasına erişim denemesi → 403
|
||
|
||
✓ Admin testleri:
|
||
✓ Tüm sayfalara erişim ✅
|
||
```
|
||
|
||
### 5. Responsive Tasarım Testleri
|
||
|
||
#### 5.1 Mobil Görünüm Testi
|
||
```bash
|
||
✓ Adım 1: Tarayıcıyı daralt (mobile view)
|
||
✓ Adım 2: Menu butonunun görünürlüğü
|
||
✓ Adım 3: Mobil menü açma/kapama
|
||
✓ Adım 4: Form alanlarının mobil uyumluluğu
|
||
✓ Adım 5: Buton boyutlarının dokunma için uygunluğu
|
||
```
|
||
|
||
#### 5.2 Tablet Görünüm Testi
|
||
```bash
|
||
✓ Adım 1: Tarayıcıyı tablet boyutuna getir
|
||
✓ Adım 2: Layout'ın adaptasyonu
|
||
✓ Adım 3: Grid sistem çalışması
|
||
```
|
||
|
||
### 6. Form Validasyon Testleri
|
||
|
||
#### 6.1 Zorunlu Alan Testleri
|
||
```bash
|
||
✓ Araç formu:
|
||
✓ Boş marka → Hata mesajı
|
||
✓ Boş plaka → Hata mesajı
|
||
|
||
✓ Birlik formu:
|
||
✓ Boş birlik adı → Hata mesajı
|
||
✓ Geçersiz TC → Hata mesajı
|
||
|
||
✓ Mal sorumlusu formu:
|
||
✓ Boş ad soyad → Hata mesajı
|
||
✓ Boş rütbe → Hata mesajı
|
||
✓ Boş sicil numarası → Hata mesajı
|
||
✓ Geçersiz TC Kimlik (11 hane değil) → Hata mesajı
|
||
✓ Geçersiz e-posta formatı → Hata mesajı
|
||
✓ Boş irtibat numarası → Hata mesajı
|
||
|
||
✓ Fiş formu:
|
||
✓ Boş litre → Hata mesajı
|
||
✓ Negatif KM → Hata mesajı
|
||
✓ Boş personel → Hata mesajı
|
||
```
|
||
|
||
#### 6.2 Veri Format Testleri
|
||
```bash
|
||
✓ TC Kimlik: 11 hane kontrolü
|
||
✓ E-posta: Format kontrolü (@ ve . içermeli)
|
||
✓ Sicil numarası: Tekrar kontrolü
|
||
✓ Plaka: Format kontrolü
|
||
✓ Sayısal alanlar: Negatif değer kontrolü
|
||
✓ Tarih: Geçerli tarih aralığı
|
||
```
|
||
|
||
### 7. Hata Yönetimi Testleri
|
||
|
||
#### 7.1 Bağlantı Hataları
|
||
```bash
|
||
✓ Backend kapalıyken API çağrıları
|
||
✓ Hata mesajlarının kullanıcı dostu olması
|
||
✓ Loading state'lerin düzgün çalışması
|
||
```
|
||
|
||
#### 7.2 Edge Case Testleri
|
||
```bash
|
||
✓ Çok uzun metin girişleri
|
||
✓ Özel karakterli veriler
|
||
✓ Çok hızlı art arda buton tıklamaları
|
||
✓ Browser refresh durumları
|
||
```
|
||
|
||
## 🔧 **Troubleshooting**
|
||
|
||
### Yaygın Sorunlar
|
||
|
||
1. **404 Hatası**: Sayfa bulunamadı
|
||
- ✅ Çözüm: Sunucunun çalıştığını kontrol et (`npm run dev`)
|
||
|
||
2. **Erişim Reddedildi**: Yetki hatası
|
||
- ✅ Çözüm: Doğru kullanıcı adı/şifre ile giriş yap
|
||
|
||
3. **Form Gönderilmiyor**: Validasyon hatası
|
||
- ✅ Çözüm: Tüm zorunlu alanları doldur
|
||
|
||
4. **Veri Gözükmüyor**: API hatası
|
||
- ✅ Çözüm: Browser console'da hata mesajlarını kontrol et
|
||
|
||
### Debug Adımları
|
||
|
||
1. **Console Kontrolü**: F12 → Console sekmesi
|
||
2. **Network Kontrolü**: F12 → Network sekmesi
|
||
3. **Storage Kontrolü**: F12 → Application → Local Storage
|
||
4. **Backend Logları**: Terminal çıktısını kontrol et
|
||
|
||
## 📊 **Test Sonuçları Template**
|
||
|
||
```
|
||
Test Tarihi: ___________
|
||
Test Edilen: ___________
|
||
Sonuç: ✅ Başarılı / ❌ Başarısız
|
||
|
||
Notlar:
|
||
- Test adımları
|
||
- Beklenen sonuçlar
|
||
- Gerçekleşen sonuçlar
|
||
- Hata mesajları
|
||
- Ekran görüntüleri
|
||
```
|
||
|
||
## 🎯 **Başarı Kriterleri**
|
||
|
||
- ✅ Tüm kullanıcı rolleri giriş yapabiliyor
|
||
- ✅ Role-based yönlendirme çalışıyor
|
||
- ✅ Form validasyonları doğru çalışıyor
|
||
- ✅ CRUD işlemleri tamamlanıyor
|
||
- ✅ Responsive tasarım tüm cihazlarda çalışıyor
|
||
- ✅ Hata mesajları kullanıcı dostu
|
||
- ✅ Cross-role iş akışları tamamlanıyor |