Initial commit: Yakıt Takip Modülü - Akaryakıt İstasyonu Yönetim Sistemi

🚀 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>
This commit is contained in:
2025-11-05 08:35:13 +03:00
commit 4205a8d387
31 changed files with 11678 additions and 0 deletions

319
docs/TEST_GUIDE.md Normal file
View File

@@ -0,0 +1,319 @@
# 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