fix: Socket.io real-time güncelleme sistemi tamamen düzeltildi
- Socket.IO client modülü oluşturuldu (socketClient.js) - SvelteKit API route'larından Socket.IO event gönderimi için client kullanımı - fuel-slips API'de HTTP fetch yerine Socket.IO client kullanımı - Server'da API event'larını dinleyip broadcast etme eklendi - GoodsManagerContent component'inde Socket.IO dinleyicileri düzeltildi - Dashboard'da Mal Sorumlusu content render düzeltmesi - İbrahim Kara kullanıcısı ve mal sorumlusu kaydı eklendi - Login endpoint'inde goods_manager ID mapping düzeltmesi - fuel-slips/+page.svelte'de eksik fonksiyonlar eklendi - Kapsamlı debug logları tüm Socket.IO işlemlerine eklendi Çalışma prensibi: 1. Yakıt fişi oluşturulduğunda -> api-fuel-slip-assigned -> broadcast fuel-slip-assigned 2. Fiş onaylandığında/reddedildiğinde -> api-fuel-slip-updated -> broadcast fuel-slip-updated 3. Tüm değişiklikler anlık olarak ilgili ekranlarda güncelleniyor
This commit is contained in:
@@ -114,12 +114,22 @@
|
||||
|
||||
// Fiş durumu güncellendiğinde listeyi yenile
|
||||
socket.on('fuel-slip-updated', (data) => {
|
||||
console.log('Dashboard - fuel-slip-updated received:', data);
|
||||
if (data.fuel_manager_id === user.id) {
|
||||
loadFuelData();
|
||||
formSuccess = `Fiş durumu güncellendi: ${data.status === 'approved' ? 'Onaylandı' : 'Reddedildi'}`;
|
||||
setTimeout(() => formSuccess = '', 3000);
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('connect', () => {
|
||||
console.log('Dashboard - Socket.IO connected for fuel_manager:', socket.id);
|
||||
});
|
||||
}
|
||||
|
||||
// Eğer goods_manager ise socket bağlantısı kur (GoodsManagerContent component'i kendi socket'ini kullanacak)
|
||||
if (user.role === 'goods_manager') {
|
||||
console.log('Dashboard - goods_manager logged in, user:', user);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -371,7 +381,7 @@
|
||||
}
|
||||
|
||||
if (page === 'goods-manager' && user?.role === 'goods_manager') {
|
||||
console.log('🎯 Setting showGoodsManager to true');
|
||||
console.log('🎯 Navigating to goods-manager, user:', user);
|
||||
showGoodsManager = true;
|
||||
showMobileMenu = false;
|
||||
return;
|
||||
@@ -696,31 +706,7 @@
|
||||
</div>
|
||||
{:else if user.role === 'goods_manager' && showGoodsManager}
|
||||
<!-- Goods Manager Content -->
|
||||
<div class="goods-manager-content">
|
||||
<div class="content-header">
|
||||
<h1 class="content-title">Atanan Yakıt Fişleri</h1>
|
||||
<div class="stats-badge">
|
||||
<span class="count">0</span>
|
||||
<span>Bekleyen Fiş</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="empty-state">
|
||||
<div class="empty-icon">
|
||||
<svg width="64" height="64" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||
<path d="M9 11H3v10h6V11z"/>
|
||||
<path d="M21 11h-6v10h6V11z"/>
|
||||
<path d="M14 3v4h-4V3"/>
|
||||
<path d="M17 7V3h-4v4"/>
|
||||
<path d="M7 7V3H3v4"/>
|
||||
<path d="M21 7v-4h-4v4"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h3>Onay Bekleyen Fiş Yok</h3>
|
||||
<p>Size atanan yeni yakıt fişleri olmadığında burada görünecekler.</p>
|
||||
<p style="margin-top: 1rem; color: var(--primary-color); font-weight: 600;">✅ SPA navigasyonu başarıyla çalışıyor!</p>
|
||||
</div>
|
||||
</div>
|
||||
<GoodsManagerContent {user} />
|
||||
{:else if user.role === 'admin'}
|
||||
<!-- Admin Dynamic Content -->
|
||||
|
||||
|
||||
Reference in New Issue
Block a user