@if (session('dashboard_status'))
{{ session('dashboard_status') }}
@endif

Total Pengguna

{{ number_format($stats['users'], 0, ',', '.') }}

{{ number_format($stats['active_users'], 0, ',', '.') }} akun aktif dari database.

Sesi Aktif

{{ number_format($stats['active_sessions'], 0, ',', '.') }}

{{ number_format($stats['completed_today'], 0, ',', '.') }} tes selesai hari ini.

Rata-rata Skor

{{ $stats['average_score'] ?: '-' }}

Dihitung dari sesi dengan total scaled score.

Paket Published

{{ number_format($stats['published_packages'], 0, ',', '.') }}

{{ number_format($stats['packages'], 0, ',', '.') }} total paket TOEFL.

Tren Rata-rata Skor

30 hari terakhir, berdasarkan sesi yang sudah submit.

Database
@php $validTrend = $scoreTrend->filter(fn ($point) => filled($point['average'])); $points = $validTrend->values()->map(function ($point, $index) use ($validTrend) { $count = max(1, $validTrend->count() - 1); $x = 30 + (($index / $count) * 560); $score = max(300, min(677, $point['average'])); $y = 180 - ((($score - 300) / 377) * 140); return round($x, 1) . ',' . round($y, 1); })->implode(' '); @endphp
@if ($validTrend->isNotEmpty()) 600 500 400 300 {{ $scoreTrend->first()['label'] }} {{ $scoreTrend->last()['label'] }} @else

Belum ada data skor

Grafik akan muncul setelah peserta menyelesaikan tes.

@endif

Distribusi Skor

Bucket skor dari `exam_sessions.total_scaled_score`.

@foreach ($scoreDistribution as $bucket)
{{ $bucket['label'] }}
{{ $bucket['count'] }} sesi
@endforeach

Aktivitas Ujian Terbaru

Diambil dari log attempt peserta.

@forelse ($recentLogs as $log)

{{ str($log->event)->replace('_', ' ')->title() }}

{{ $log->session?->user?->name ?? 'Peserta tidak ditemukan' }} @if ($log->session?->package) - {{ $log->session->package->code }} @endif

{{ $log->created_at?->diffForHumans() }}
@empty
Belum ada aktivitas ujian yang tercatat.
@endforelse

Package Governance

Draft {{ $stats['draft_packages'] }}
In Review {{ $stats['review_packages'] }}
Published {{ $stats['published_packages'] }}

Bank Konten TOEFL

Soal

{{ number_format($stats['questions'], 0, ',', '.') }}

Passage

{{ number_format($stats['passages'], 0, ',', '.') }}

Panel ini membaca isi bank soal yang saat ini tersimpan, bukan estimasi atau data contoh.

Sesi Terbaru

@forelse ($recentSessions as $session)

{{ $session->user?->name ?? 'Peserta tidak ditemukan' }}

{{ $session->package?->code ?? 'Paket tidak ditemukan' }} - {{ $session->currentSection?->name ?? 'Belum ada section' }}

{{ str($session->status)->replace('_', ' ')->title() }}
@empty
Belum ada sesi ujian.
@endforelse

Users & Roles

Kelola akses operator ujian

Tambah akun, assign role, dan aktif/nonaktifkan akses pengguna dari halaman khusus.

Exam Sessions

Pantau sesi peserta

Lihat sesi aktif, section berjalan, dan status peserta secara institusional.

Package Governance

Audit paket TOEFL

Pantau draft, review, publish, aktivasi, dan kesiapan konten paket.