20 Şubat 2026 tarihinde saat 15:00 sonrası gözlemlenen keskin düşüşün teknik analizi
Veri kaybı yok! Bu bir görsel anomali. Dashboard bileşeni bugünün verilerini gösterirken şu anki saati hariç tutuyor. Saat 15:00'da sadece 0-14 saatlerin verileri gösterildiği için grafikte düşüş gibi görünüyor.
Muzibu admin panelinde günlük dinleme istatistiklerini gösteren grafikte, saat 15:00'dan sonra aniden düşüş gözlemlendi. Bu, sanki kullanıcılar müzik dinlemeyi bırakmış gibi görünüyordu.
Dashboard (yönetim paneli) bugünün verilerini gösterirken, henüz tamamlanmamış saatin verilerini göstermiyor. Böylece yanıltıcı istatistikler oluşmasını engelliyor.
Örnek: Saat 15:30'da bakıyorsanız, 15. saat henüz tamamlanmadığı için sadece 0-14 saatlerin (00:00-14:59) verileri gösterilir. 15. saat (15:00-15:59) hariç tutulur.
Saat tam 15:00'a geldiğinde sistem "artık 15. saatteyiz, bu saati göstermeyelim" diyor. O ana kadar 14. saat gösteriliyordu, şimdi hariç tutuluyor. Bu geçiş anında grafikte düşüş gibi görünüyor.
| Saat | Sistem Saati | Gösterilen Saatler | Görsel Etki |
|---|---|---|---|
| 14:45 | 14 | 0-13 saatler | ✓ Normal |
| 15:00 | 15 | 0-14 saatler | ⚠️ Düşüş (14. saat hariç) |
| 15:30 | 15 | 0-14 saatler | − Stabil (değişim yok) |
| 16:00 | 16 | 0-15 saatler | ✓ İyileşme (14-15 geri döner) |
Henüz tamamlanmamış bir saatin verilerini göstermek yanıltıcı olabilir. Örneğin saat 15:10'da 15. saati gösterseniz, sadece 10 dakikalık veri olacağı için çok düşük görünür. Bu yüzden tamamlanmamış saat hariç tutuluyor.
deleted_at alanı yok. Soft delete kullanılmıyor, veri kaybı riski yok.// Satır 127
$currentHour = $date->isToday() ? now()->hour : 24;
// Satır 134-135 - hourlyStats() metodunda
->when($date->isToday(), function($q) use ($currentHour) {
$q->whereRaw('HOUR(created_at) < ?', [$currentHour]);
})
now()->hour kullan
HOUR(created_at) < currentHour
now()->hour = 15$currentHour = 15HOUR(created_at) < 15 → Sadece 0-14 saatler (00:00-14:59)// Satır 97
$endOfDay = now()->subHour()->endOfHour();
Bugün ise son saati hariç tutar (performans optimizasyonu)
// Satır 127
$currentHour = $date->isToday() ? now()->hour : 24;
// Satır 135
$q->whereRaw('HOUR(created_at) < ?', [$currentHour]);
Şu anki saati hariç tutar
Kernel.php içinde tanımlı tüm zamanlanmış görevler tarandı:
| Saat | Görev | Durum |
|---|---|---|
| 02:00 | Log cleanup, Telescope prune | ✓ İlgisiz |
| 03:00 (Pazar) | Session cleanup | ✓ İlgisiz |
| 06:00 | Subscription verification, renewal | ✓ İlgisiz |
| 09:00 | Trial expiry check | ✓ İlgisiz |
| 10:00 | Renewal reminders | ✓ İlgisiz |
| 15:00 | - Hiçbir görev yok - | ❌ Cron job sebep değil |
| Her 5/10/15 dk | Queue health, statistics | ✓ İlgisiz |
| Saatlik | Blog generation, Subscription transitions | ✓ İlgisiz |
// DashboardComponent.php, satır 43-46
private function cacheTTL(): int
{
return 300; // 5 dakika
}
Dashboard istatistikleri 5 dakikalık cache ile saklanıyor. Bu cron job'larla ilgili değil.
| Sistem Saati | now()->hour | $currentHour | SQL Koşulu | Gösterilen Saatler | Görsel Etki |
|---|---|---|---|---|---|
| 14:45 | 14 | 14 | HOUR < 14 | 0-13 saatler (00:00-13:59) | ✓ Normal |
| 15:00 | 15 | 15 | HOUR < 15 | 0-14 saatler (00:00-14:59) | ⚠️ DÜŞÜŞ |
| 15:30 | 15 | 15 | HOUR < 15 | 0-14 saatler (00:00-14:59) | − Stabil |
| 16:00 | 16 | 16 | HOUR < 16 | 0-15 saatler (00:00-15:59) | ✓ İyileşme |
| 16:30 | 16 | 16 | HOUR < 16 | 0-15 saatler (00:00-15:59) | ✓ Normal |
Henüz tamamlanmamış saatin verilerini "kısmi" olarak göster. Kullanıcı güncel durumu görebilir.
// Değişiklik önerisi
$currentHour = $date->isToday() ? now()->hour + 1 : 24;
// Veya
$q->whereRaw('HOUR(created_at) <= ?', [$currentHour]);
Grafikte "Mevcut saat tamamlanmamış, kısmi veriler gösteriliyor" notu ekle.
Grafikte tamamlanan saatler düz çizgi, tamamlanmamış saat kesikli çizgi ile göster.
5 dakika yerine 10-15 dakika cache kullan. Sunucu yükünü azaltır, görsel anomali sıklığını düşürür.
private function cacheTTL(): int
{
return 900; // 15 dakika
}
DashboardComponent.hourlyStats() ve
listeningStats() metodlarının
bugünün mevcut saatini hariç tuttuğu logic'te saklıdır.
Bu performans ve doğruluk için tasarımsal bir seçim olabilir.
Dashboard'a "Bugünün mevcut saati tamamlanmamış veriler içerir" notu ekle
Şu anki saati de dahil et ama "kısmi" olarak işaretle
Tamamlanan/tamamlanmamış saatleri farklı görselleştir
Tespit edilen durum bir bug değil, performans ve doğruluk için alınmış tasarımsal bir karardır. Veri kaybı, güvenlik açığı veya sistem hatası yoktur. Kullanıcılar normal şekilde müzik dinlemeye devam ediyor.