@extends('layouts.app', ['title' => 'Audit Bukti Generate AI']) @section('content') @php $prioritySourceGroups = data_get($priorityConfig, 'source_groups', []); $priorityDocumentTypes = data_get($priorityConfig, 'document_types', []); $meetingChecks = collect(data_get($consistencyReport, 'per_meeting', []))->keyBy('week_number'); $canonicalType = static function (?string $type): string { return $type === 'kurikulum_workshop' ? 'kurikulum' : (string) $type; }; @endphp
Kembali ke Detail RPS Profil Mata Kuliah AI Kesiapan Generate Review Usulan AI Edit Draft

Audit Bukti Generate AI

Halaman ini memperlihatkan dari mana AI mengambil dasar penyusunan RPS, seberapa kuat prioritas sumbernya, dan bagian mana yang masih perlu ditinjau sebelum Bapak menerapkan atau mengekspor dokumen.

@if (isset($generateReadiness)) @php $statusLabels = ['siap' => 'Siap', 'cukup' => 'Cukup', 'kurang' => 'Kurang', 'tidak_layak_generate' => 'Tidak layak generate', 'aman' => 'Aman', 'perlu_cek' => 'Perlu Cek', 'kurang_bukti' => 'Kurang Bukti']; $statusKey = $generateReadiness['status'] ?? 'tidak_layak_generate'; @endphp

Ringkasan Fondasi Generate

Status
{{ $generateReadiness['status_label'] ?? ($statusLabels[$statusKey] ?? ucfirst(str_replace('_', ' ', $statusKey))) }}
Skor
{{ $generateReadiness['score'] ?? 0 }}/100
Siap
{{ data_get($generateReadiness, 'summary.ready', 0) }}
Konflik
{{ count($generateReadiness['conflicts'] ?? []) }}
@endif @if (!empty($automaticSelfCheck)) @php $selfStatus = $automaticSelfCheck['status'] ?? 'perlu_tinjauan'; $selfStatusClass = str_replace('_', '-', $selfStatus); @endphp

AI Self-Check Setelah Draft Dibuat

Pemeriksaan otomatis ini berjalan setelah AI menyusun 14 Sub-CPMK dan pertemuan 1–7 serta 9–15. Self-check membantu memastikan hasil AI tidak keluar dari batas kerja dan tetap mengikuti opsi admin.

Status
{{ $automaticSelfCheck['status_label'] ?? strtoupper(str_replace('_', ' ', $selfStatus)) }}
Skor
{{ data_get($automaticSelfCheck, 'score', data_get($automaticSelfCheck, 'summary.score', 0)) }}/100
Lulus
{{ data_get($automaticSelfCheck, 'summary.passed', 0) }} / {{ data_get($automaticSelfCheck, 'summary.total', 0) }}
Perlu Cek
{{ data_get($automaticSelfCheck, 'summary.warning', 0) }} warning, {{ data_get($automaticSelfCheck, 'summary.critical', 0) }} kritis
@foreach (collect($automaticSelfCheck['checks'] ?? []) as $check) @endforeach
Pemeriksaan Status Tingkat Catatan
{{ $check['label'] ?? '-' }} {{ strtoupper(str_replace('_', ' ', (string) ($check['status'] ?? '-'))) }} {{ strtoupper((string) ($check['severity'] ?? '-')) }} {{ collect($check['notes'] ?? [])->implode(' ') ?: '-' }}
@endif @if (!empty($sourceTrace))

Jejak Sumber AI

Metadata ini hanya untuk audit. Sistem tidak menampilkan jejak sumber pada RPS utama dan tidak mengubah identitas, CPL, CPMK utama, pustaka, dosen, otorisasi, tanda tangan, SKS, semester, kode dokumen, atau tanggal penyusunan.

@if (!empty(data_get($sourceTrace, 'sub_cpmk', [])))

Dasar Penyusunan Sub-CPMK

@foreach (collect(data_get($sourceTrace, 'sub_cpmk', [])) as $item) @endforeach
No Sub-CPMK CPMK Bahan Kajian Basis Pengetahuan Referensi PDF
{{ $item['number'] ?? '-' }} {{ $item['description'] ?? '-' }} {{ collect(data_get($item, 'source_basis.cpmk', []))->implode(', ') ?: '-' }} {{ collect(data_get($item, 'source_basis.curriculum_material', []))->implode('; ') ?: '-' }} {{ collect(data_get($item, 'source_basis.knowledge_base', []))->implode(', ') ?: '-' }} {{ collect(data_get($item, 'source_basis.reference_pdf', []))->implode(', ') ?: '-' }}
@endif @if (!empty(data_get($sourceTrace, 'meetings', [])))

Dasar Penyusunan Pertemuan 1–7 dan 9–15

@foreach (collect(data_get($sourceTrace, 'meetings', [])) as $item) @endforeach
Pertemuan Sub-CPMK / Indikator Bahan Kajian Basis Pengetahuan Referensi PDF
{{ $item['meeting_number'] ?? '-' }} {{ $item['sub_cpmk'] ?? '-' }}
{{ $item['indicator'] ?? '-' }}
{{ collect(data_get($item, 'source_basis.curriculum_material', []))->implode('; ') ?: '-' }} {{ collect(data_get($item, 'source_basis.knowledge_base', []))->implode(', ') ?: '-' }} {{ collect(data_get($item, 'source_basis.reference_pdf', []))->implode(', ') ?: '-' }}
@endif
@endif

Prioritas Sumber AI yang Aktif

@foreach ($priorityLabels['source_groups'] as $key => $label)
{{ $label }}
{{ $prioritySourceGroups[$key] ?? 0 }}
@endforeach
@foreach ($priorityLabels['document_types'] as $key => $label) @endforeach
Jenis Dokumen Bobot Prioritas
{{ $label }} {{ $priorityDocumentTypes[$key] ?? 0 }}
@if (isset($approvedExemplars, $templateReference))

Exemplar dan Template Kampus

Jumlah Exemplar Mata Kuliah Ini
{{ $approvedExemplars->count() }}
Judul Template
{{ data_get($templateReference, 'template_identity.document_title', 'RPS') }}
Orientasi
{{ data_get($templateReference, 'template_identity.orientation', '-') }}

Generator AI juga mempertimbangkan template kampus resmi dan exemplar RPS final yang sudah disetujui untuk mata kuliah ini.

@if ($approvedExemplars->isNotEmpty())
@foreach ($approvedExemplars as $item) @endforeach
RPS Exemplar Kode / Semester Disetujui
{{ $item->course_name }} {{ $item->course_code ?: '-' }} / {{ $item->semester ?: '-' }} {{ optional($item->ai_exemplar_approved_at)->format('d-m-Y H:i') ?: '-' }}
@endif
@endif

Dokumen Referensi yang Dibaca

@forelse ($rps->referenceDocuments as $document) @php $typeKey = $canonicalType($document->document_type); @endphp @empty @endforelse
Judul Jenis Status Prioritas Halaman
{{ $document->title }} {{ $documentTypeLabels[$typeKey] ?? ($documentTypeLabels[$document->document_type] ?? strtoupper(str_replace('_', ' ', $document->document_type))) }} {{ strtoupper($document->extraction_status) }} {{ $priorityDocumentTypes[$typeKey] ?? 0 }} {{ $document->page_count ?: ($document->pages->count() ?: '-') }}
Belum ada referensi PDF yang dipakai untuk generate.

Audit CPL / CPMK / Sub-CPMK

@foreach (['cpl_items' => 'CPL', 'cpmk_items' => 'CPMK', 'sub_cpmk_items' => 'Sub-CPMK'] as $traceKey => $label) @forelse (collect($evidenceTrace[$traceKey] ?? []) as $item) @empty @endforelse @endforeach
Bagian Isi Kecocokan Kurikulum Bobot Dokumen Pendukung Rasional AI
{{ $label }} {{ trim(($item['code'] ?? '').' '.($item['description'] ?? '')) ?: '-' }} {{ data_get($item, 'sources.curriculum_match') ?: '-' }} {{ data_get($item, 'sources.priority_weight', '-') }} {{ collect(data_get($item, 'sources.reference_documents', []))->implode(', ') ?: '-' }} {{ data_get($item, 'sources.rationale') ?: '-' }}
{{ $label }} Belum ada data {{ $label }} pada audit ini.

Audit Bahan Kajian dan Pustaka

@forelse (collect($evidenceTrace['study_material_lines'] ?? []) as $item) @empty @endforelse @foreach (collect(data_get($evidenceTrace, 'references.main', [])) as $item) @endforeach @foreach (collect(data_get($evidenceTrace, 'references.supporting', [])) as $item) @endforeach
Bagian Isi Kecocokan Kurikulum Bobot Dokumen Pendukung
Bahan Kajian {{ $item['text'] ?? '-' }} {{ data_get($item, 'sources.curriculum_match') ?: '-' }} {{ data_get($item, 'sources.priority_weight', '-') }} {{ collect(data_get($item, 'sources.reference_documents', []))->implode(', ') ?: '-' }}
Belum ada audit bahan kajian.
Pustaka Utama {{ $item['citation'] ?? '-' }} - {{ data_get($item, 'sources.priority_weight', '-') }} {{ collect(data_get($item, 'sources.reference_documents', []))->implode(', ') ?: '-' }}
Pustaka Pendukung {{ $item['citation'] ?? '-' }} - {{ data_get($item, 'sources.priority_weight', '-') }} {{ collect(data_get($item, 'sources.reference_documents', []))->implode(', ') ?: '-' }}

Audit Pekan 1–16

@forelse (collect($evidenceTrace['meetings'] ?? []) as $item) @php $week = (int) ($item['week_number'] ?? 0); $check = $meetingChecks->get($week, []); @endphp @empty @endforelse
Pekan Status Validator Sub-CPMK / Materi Topik Bukti Bobot Dokumen Pendukung Catatan
{{ $week ?: '-' }} {{ strtoupper(str_replace('_', ' ', (string) ($check['status'] ?? '-'))) }} {{ $item['sub_cpmk'] ?: ($item['study_material'] ?: '-') }} {{ data_get($item, 'sources.topic_evidence') ?: '-' }} {{ data_get($item, 'sources.priority_weight', '-') }} {{ collect(data_get($item, 'sources.reference_documents', []))->implode(', ') ?: '-' }} {{ collect($check['notes'] ?? [])->implode(' ') ?: '-' }}
Belum ada audit pertemuan.
@endsection