@extends('admin.layouts.app') @section('title', 'Kullanıcı Analitiği') @section('content')

Kullanıcı Analitiği

Gerçek kullanıcılar, bot trafiği, ülke dağılımı ve aktivite takibi

@if($country) {{ $country }} @endif
{{-- Overview Cards --}}
{{ number_format($totalReal) }}
Toplam Kullanıcı
+{{ number_format($newReal) }}
Yeni Üye
{{ number_format($active30) }}
Aktif Kullanıcı
{{ number_format($realViews) }}
Gerçek Görüntüleme
{{ number_format($botViews) }}
Bot Görüntüleme
@php $ratio = ($realViews+$botViews) > 0 ? round($botViews/($realViews+$botViews)*100,1) : 0; @endphp
{{ $ratio }}%
Bot Oranı
{{-- Tabs --}} {{-- ── Overview Tab ──────────────────────────────────────────────────────────── --}} @if($tab === 'overview')
{{-- Daily new users chart --}}
Günlük Yeni Üye
{{-- Device breakdown --}}
Cihaz Dağılımı (gerçek kullanıcı)
@foreach($deviceBreakdown as $dev) @php $pct = $realViews > 0 ? round($dev->cnt/$realViews*100,1) : 0; @endphp
{{ $dev->device ?: 'bilinmiyor' }}
{{ number_format($dev->cnt) }} ({{ $pct }}%)
@endforeach
{{-- Top active users --}}
En Aktif Kullanıcılar
@foreach($topUsers as $i => $tu) @php $u = $topUserMap[$tu->user_id] ?? null; @endphp @endforeach
#KullanıcıAksiyon
{{ $i+1 }} @if($u) {{ $u->name }}
{{ $u->email }} @else #{{ $tu->user_id }} @endif
{{ number_format($tu->actions) }}
{{-- Action breakdown --}}
Aksiyon Dağılımı
@foreach($actionBreakdown as $ab) @php $labels = \App\Models\UserActivityLog::$actionLabels; @endphp
{{ $labels[$ab->action] ?? $ab->action }} {{ number_format($ab->cnt) }}
@endforeach @if($actionBreakdown->isEmpty())

Henüz aktivite yok

@endif
{{-- ── Activity Tab ──────────────────────────────────────────────────────────── --}} @elseif($tab === 'activity')
Aktivite Günlüğü
@forelse($actLogs as $log) @php $labels = \App\Models\UserActivityLog::$actionLabels; @endphp @empty @endforelse
KullanıcıAksiyonKonuIPÜlkeCihazZaman
@if($log->user) {{ $log->user->name }} @else Misafir @endif {{ $labels[$log->action] ?? $log->action }} {{ $log->subject_type ? class_basename($log->subject_type).'#'.$log->subject_id : '—' }} {{ $log->ip }} @if($log->country) {{ $log->country }} @else — @endif {{ $log->device }} {{ \Carbon\Carbon::parse($log->created_at)->diffForHumans() }}
Kayıt bulunamadı
{{-- ── Bots Tab ──────────────────────────────────────────────────────────────── --}} @elseif($tab === 'bots')
Bot Trafik Analizi
@forelse($botStats as $b) @empty @endforelse
Bot / AraçAksiyonİstek
{{ $b->bot_name }} {{ $b->action }} {{ number_format($b->cnt) }}
Bot logu bulunamadı
En Fazla İstek Atan IP'ler (Botlar)
@forelse($topBotIps as $bip) @php $blocked = $blockedIps->firstWhere('ip', $bip->ip); @endphp @empty @endforelse
IPİstekDurum
{{ $bip->ip }} {{ number_format($bip->cnt) }} @if($blocked) Engelli @else Serbest @endif @if(!$blocked)
@csrf
@else
@csrf
@endif
Bot IP kaydı yok
Engelli IP'ler ({{ $blockedIps->count() }})
@forelse($blockedIps as $bi) @empty @endforelse
IPSebepOtomatikEngellenmeBitiş
{{ $bi->ip }} {{ $bi->reason }} {{ $bi->auto_blocked ? 'Otomatik' : 'Manuel' }} {{ \Carbon\Carbon::parse($bi->blocked_at)->format('d.m.Y H:i') }} {{ $bi->expires_at ? \Carbon\Carbon::parse($bi->expires_at)->diffForHumans() : 'Kalıcı' }}
@csrf
Engelli IP yok
{{-- ── Country Tab ───────────────────────────────────────────────────────────── --}} @elseif($tab === 'country')
Ülke Bazlı Trafik (Gerçek Kullanıcı)
@php $totalViews = $countries->sum('views'); @endphp @forelse($countries as $i => $c) @php $pct = $totalViews > 0 ? round($c->views/$totalViews*100,1) : 0; @endphp @empty @endforelse
#ÜlkeGörüntülemeBenzersiz KullanıcıOran
{{ $i+1 }} {{ $c->country ?: 'Bilinmiyor' }} {{ number_format($c->views) }} {{ number_format($c->users) }}
{{ $pct }}%
Aktivite
Ülke verisi bulunamadı
@endif @endsection @push('scripts') @endpush