{{-- resources/views/superadmin/falcon-room/performance.blade.php --}} @extends('layouts.superadmin') @section('content') @php use Illuminate\Support\Str; // مترجم بسيط يعتمد ملف config/page_names.php $pageMap = config('page_names', []); $toArabic = function($raw) use ($pageMap) { $key = Str::of((string)$raw)->lower() ->replace([' ','.','/'],'-') ->replaceMatches('/-+/', '-') ->trim('-') ->value(); return $pageMap[$key] ?? Str::of($key)->replace('-', ' ')->title(); }; $fmtMs = function($ms){ $ms = (int)round((float)$ms); if ($ms >= 1000) return number_format($ms/1000, 2).' ث'; return $ms.' ms'; }; $pct = function($x){ $x = (float)$x; return number_format($x, 1).'%'; }; // بيانات قد تكون غير موجودة — نعمل fallbacks $stats = $stats ?? []; $slowestPages = $slowestPages ?? collect(); $devicePerformance = $devicePerformance ?? collect(); $browserPerformance = $browserPerformance ?? collect(); $dailyActivity = $dailyActivity ?? []; $hourlyActivity = $hourlyActivity ?? []; // [{hour:0,count:..,avg_time:..},...] $statusCodes = $statusCodes ?? []; // [{code:200,count:..},...] $topErrors = $topErrors ?? []; // [{route:'',count:..,last_at:''},...] $perfNotes = $perfNotes ?? []; // نصائح/ملاحظات من الكنترولر (اختياري) // مؤشرات إضافية لو توفرها بالكنترولر $p95 = $stats['p95_today'] ?? null; $p99 = $stats['p99_today'] ?? null; $errorRate = $stats['error_rate_today'] ?? null; // نسبة % $slowRate = $stats['slow_rate_today'] ?? null; // نسبة % (مثلاً >1.5s) $avgToday = (float)($stats['avg_load_today'] ?? 0); $peakHour = $stats['peak_hour'] ?? 0; $totalReq = (int)($stats['total_requests_today'] ?? 0); $uniqueU = (int)($stats['unique_users_today'] ?? 0); // SLA تقديري (تقدر تغيّره حسب سياستك) $SLA_OK_MS = 800; // ممتاز $SLA_WARN_MS = 1500; // تحذير $slaLabel = function($avg) use ($SLA_OK_MS,$SLA_WARN_MS){ $avg = (float)$avg; if ($avg >= $SLA_WARN_MS) return ['حرج','bg-rose-500/15 text-rose-200 ring-rose-400/30']; if ($avg >= $SLA_OK_MS) return ['تحذير','bg-amber-500/15 text-amber-200 ring-amber-400/30']; return ['ممتاز','bg-emerald-500/15 text-emerald-200 ring-emerald-400/30']; }; @endphp
{{-- HERO (Socratic / Falcon Room) --}}

إحصائيات الأداء والتحميل — سقراط

أسئلة سقراط: أين يضيع الوقت؟ من المتضرر؟ ما الأكثر تأثيرًا على تجربة العضو؟

آخر تحديث
{{ now()->format('H:i:s') }}
{{-- شريط “لماذا هذا مهم؟” --}}
لماذا مهم؟
الأداء = ثقة المستخدم
كل 1 ثانية تأخير تقلل التفاعل وتزيد الأخطاء والشكاوى.
هدف اليوم
خفض الصفحات البطيئة
نركّز على الصفحات ذات زيارات أعلى + وقت أعلى.
مؤشر صحة سريع
@php [$slaText,$slaCls] = $slaLabel($avgToday); @endphp
{{ $fmtMs($avgToday) }}
{{ $slaText }}
متوسط زمن التحميل اليوم (AVG).
{{-- KPI Cards (Socratic Stats) --}}
{{-- AVG --}}
AVG اليوم
{{ $fmtMs($avgToday) }}
مؤشر عام — ممتاز للمقارنة اليومية
{{-- P95 --}}
P95 اليوم
{{ $p95 !== null ? $fmtMs($p95) : '—' }}
الواقع الحقيقي للمستخدمين (أفضل من AVG)
{{-- P99 --}}
P99 اليوم
{{ $p99 !== null ? $fmtMs($p99) : '—' }}
يكشف حالات “التهنيج” النادرة
{{-- Requests --}}
طلبات اليوم
{{ number_format($totalReq) }}
حجم الضغط على النظام
{{-- Unique Users --}}
مستخدمون فريدون
{{ number_format($uniqueU) }}
يربط الأداء بتجربة عدد أكبر
{{-- Peak hour --}}
ساعة الذروة
{{ (int)$peakHour }}:00
ركّز التحسين قبل الذروة
{{-- Socratic Health Row (Error/Slow) --}}

🧠 سؤال سقراط

Health
ما الذي يؤثر أكثر على العضو: “الصفحات البطيئة” أم “الأخطاء”؟
معدل الأخطاء
{{ $errorRate !== null ? $pct($errorRate) : '—' }}
كل 1% خطأ = نزف ثقة
نسبة البطيء
{{ $slowRate !== null ? $pct($slowRate) : '—' }}
> 1.5s (مثال) حسب تعريفك
@if(!empty($perfNotes))
ملاحظة تشغيلية
    @foreach($perfNotes as $n)
  • {{ $n }}
  • @endforeach
@endif
{{-- Status code chart --}}

📦 توزيع الاستجابات

Status Codes
@if(!empty($statusCodes)) @else
لا توجد بيانات لتوزيع الأكواد.
@endif
لماذا مهم؟ ارتفاع 4xx/5xx يعني مشاكل تجربة أو سيرفر — غالبًا أكثر إلحاحًا من البطء.
{{-- Hourly chart --}}

⏱️ نبض الساعات

Hourly
@if(!empty($hourlyActivity)) @else
لا توجد بيانات للساعات.
@endif
أين الذروة؟ هذه اللوحة تساعدك تعرف هل البطء مرتبط بالضغط أو صفحة محددة.
{{-- Slowest Pages (SLA badges + focus) --}}

🐌 أبطأ الصفحات تحميلًا

سقراط: هل هذه الصفحة “مهمة كثيرًا” أم “بطيئة بلا فائدة”؟ رتّب حسب (زيارات × وقت).

Top Slow Pages
@forelse($slowestPages as $p) @php $avg = (float)($p->avg_time ?? 0); $max = (float)($p->max_time ?? 0); $avgClass = $avg > 1500 ? 'text-rose-600 font-extrabold' : ($avg > 800 ? 'text-amber-700 font-bold' : 'text-emerald-700 font-bold'); [$slaText,$slaCls] = $slaLabel($avg); @endphp @empty @endforelse
الصفحة (عربي) المفتاح AVG MAX الزيارات SLA
{{ $toArabic($p->page_title) }} {{ $p->page_title ?? '—' }} {{ $fmtMs($avg) }} {{ $fmtMs($max) }} {{ number_format($p->visits ?? 0) }} {{ $slaText }}
لا توجد بيانات.
{{-- Device + Browser (Charts + list fallback) --}}

📱 الأداء حسب نوع الجهاز

Devices
@if($devicePerformance->count()) @else
لا توجد بيانات.
@endif
@foreach($devicePerformance as $d)
{{ $d->device_type ?? 'غير محدد' }}
{{ $fmtMs($d->avg_time ?? 0) }}
{{ number_format($d->requests ?? 0) }} طلب
@endforeach

🌐 الأداء حسب المتصفح

Browsers
@if($browserPerformance->count()) @else
لا توجد بيانات.
@endif
@foreach($browserPerformance as $b)
{{ $b->browser ?? 'غير محدد' }}
{{ $fmtMs($b->avg_time ?? 0) }}
{{ number_format($b->requests ?? 0) }} طلب
@endforeach
{{-- Daily chart (30 days) --}}

📊 النشاط اليومي (آخر 30 يوم)

Daily

سقراط: هل التحسن مستمر أم مجرد يوم واحد؟ تابع trend وليس رقم لحظي.

@endsection @push('scripts') @endpush