Deploy Laravel rebuild via Coolify

Point Docker and Coolify compose to the Laravel rebuild app so mahasiswa, dosen, and admin flows are served from the new Laravel public entrypoint.
This commit is contained in:
Power BI Dev
2026-05-03 18:50:29 +07:00
parent 89ce9d30a7
commit dab8ea396b
107 changed files with 17544 additions and 20 deletions

View File

@@ -0,0 +1,70 @@
<x-dosen.partials.page-shell :title="$title" :sidebar="$sidebar" :page-title="$pageTitle" :page-description="$pageDescription" :page-date="$pageDate" :user="$user">
<section class="grid gap-5 lg:grid-cols-6">
<article class="rounded-xl border border-[#3B0A0A] bg-[#FFF1F1] p-5 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
<p class="text-sm font-semibold uppercase tracking-[0.16em] text-[#7F1D1D]">Ancaman DO</p>
<p class="mt-3 text-3xl font-bold text-[#3B0A0A]">{{ $summary['dropoutCount'] }}</p>
<p class="mt-2 text-sm leading-6 text-[#7F1D1D]">Mahasiswa angkatan lama di ambang akhir masa studi.</p>
</article>
<article class="rounded-xl border border-rose-300 bg-rose-50 p-5 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
<p class="text-sm font-semibold uppercase tracking-[0.16em] text-rose-700">Kritis</p>
<p class="mt-3 text-3xl font-bold text-rose-800">{{ $summary['criticalCount'] }}</p>
<p class="mt-2 text-sm leading-6 text-rose-700">Tahun akhir studi dan berisiko tinggi.</p>
</article>
<article class="rounded-xl border border-rose-200 bg-rose-50 p-5 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
<p class="text-sm font-semibold uppercase tracking-[0.16em] text-rose-700">Warning</p>
<p class="mt-3 text-3xl font-bold text-rose-800">{{ $summary['warningCount'] }}</p>
<p class="mt-2 text-sm leading-6 text-rose-700">Sudah masuk fase studi lanjut dan perlu follow-up.</p>
</article>
<article class="rounded-xl border border-amber-200 bg-amber-50 p-5 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
<p class="text-sm font-semibold uppercase tracking-[0.16em] text-amber-700">Perlu Pantau</p>
<p class="mt-3 text-3xl font-bold text-amber-800">{{ $summary['watchCount'] }}</p>
<p class="mt-2 text-sm leading-6 text-amber-700">Mulai masuk tahun studi yang perlu perhatian.</p>
</article>
<article class="rounded-xl border border-emerald-200 bg-emerald-50 p-5 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
<p class="text-sm font-semibold uppercase tracking-[0.16em] text-emerald-700">Aman</p>
<p class="mt-3 text-3xl font-bold text-emerald-800">{{ $summary['safeCount'] }}</p>
<p class="mt-2 text-sm leading-6 text-emerald-700">Masih dalam rentang monitoring rutin.</p>
</article>
<article class="rounded-xl border border-[#E5E7EB] bg-white p-5 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
<p class="text-sm font-semibold uppercase tracking-[0.16em] text-[#979797]">Total Data</p>
<p class="mt-3 text-3xl font-bold text-[#15171A]">{{ $summary['totalCount'] }}</p>
<p class="mt-2 text-sm leading-6 text-[#4B5563]">Seluruh mahasiswa bimbingan yang termonitor.</p>
</article>
</section>
<section class="rounded-xl border border-[#E5E7EB] bg-white p-6 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
<div class="mb-5 rounded-xl border border-rose-200 bg-rose-50 p-4 text-sm leading-7 text-rose-800">
Prioritaskan mahasiswa dengan status <strong>Ancaman DO</strong>, <strong>Kritis</strong>, dan <strong>Warning</strong>. Penilaian risiko memakai angkatan mahasiswa dan umur studi, dengan fallback pembacaan angkatan dari pola NIM.
</div>
<div class="space-y-4">
@forelse ($records as $item)
<article class="rounded-xl border border-[#E5E7EB] bg-[#F9FAFB] p-5">
<div class="flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between">
<div class="min-w-0 flex-1">
<div class="flex flex-wrap items-center gap-2">
<h3 class="text-lg font-semibold text-[#15171A]">{{ $item['mahasiswa'] }}</h3>
<span class="rounded-full px-2.5 py-1 text-[11px] font-semibold {{ $item['statusClass'] }}">{{ $item['status'] }}</span>
</div>
<p class="mt-3 break-words text-sm leading-7 text-[#4B5563]">{{ $item['judul'] }}</p>
<div class="mt-3 flex flex-wrap gap-3 text-sm text-[#6B7280]">
<span>Angkatan {{ $item['angkatan'] ?? '-' }}</span>
<span>{{ !is_null($item['tahunStudi']) ? $item['tahunStudi'].' tahun studi' : 'Tahun studi tidak diketahui' }}</span>
<span>{{ $item['tanggal'] }}</span>
@if (!is_null($item['days']))
<span>{{ $item['days'] }} hari sejak keputusan</span>
@endif
</div>
<p class="mt-3 text-sm leading-6 {{ in_array($item['severity'], ['dropout', 'critical', 'warning'], true) ? 'text-rose-700' : ($item['severity'] === 'watch' ? 'text-amber-700' : 'text-emerald-700') }}">{{ $item['warningText'] }}</p>
</div>
<div class="shrink-0">
<a href="{{ $item['detailHref'] }}" target="_blank" rel="noreferrer" class="inline-flex rounded-md border border-[#D1D5DB] bg-white px-3 py-2 text-xs font-medium text-[#15171A] hover:bg-[#F9FAFB]">Buka Monitoring Lengkap</a>
</div>
</div>
</article>
@empty
<div class="rounded-xl border border-dashed border-[#D1D5DB] bg-[#F9FAFB] p-6 text-center text-[#6B7280]">Belum ada data early warning.</div>
@endforelse
</div>
</section>
</x-dosen.partials.page-shell>