@extends('layouts.admin') @section('title', 'Chunk #' . ($chunk->chunk_index + 1) . ' — ' . Str::limit($chunk->document->title, 30)) @section('breadcrumb') @endsection @section('content') {{-- Flash Messages --}} @if(session('success'))
{{ session('success') }}
@endif @if(session('error'))
{{ session('error') }}
@endif {{-- Header Row --}}

Chunk #{{ $chunk->chunk_index + 1 }}

{{ $chunk->getStatusLabel() }} @if($chunk->is_edited) Telah Diedit @endif @if($chunk->parent_chunk_id) Hasil Split @endif

{{ $chunk->document->title }} — v{{ $chunk->documentVersion->version_number }} @if($chunk->page_number) · ms. {{ $chunk->page_number }} @endif @if($chunk->section_heading) · {{ $chunk->section_heading }} @endif

{{-- Action buttons --}}
Senarai Chunk @if(!$chunk->isSuperseded()) Split Chunk @if($chunk->exclude_from_index)
@csrf
@else
@csrf
@endif @if($chunk->isIndexable())
@csrf
@endif @endif
{{-- Metadata Cards --}}

CHUNK INDEX

#{{ $chunk->chunk_index + 1 }}

QDRANT POINT ID

{{ $chunk->qdrant_point_id ?? '—' }}

LAST EMBEDDED

{{ $chunk->last_embedded_at?->format('d/m/Y H:i') ?? '—' }}

DIEDIT OLEH

{{ $chunk->editor?->name ?? '—' }} @if($chunk->edited_at)
{{ $chunk->edited_at->format('d/m/Y H:i') }} @endif

{{-- Parent Chunk Info (jika ini adalah hasil split) --}} @if($chunk->parentChunk)
Chunk ini adalah hasil split daripada Chunk #{{ $chunk->parentChunk->chunk_index + 1 }} ({{ $chunk->parentChunk->getStatusLabel() }}). Urutan dalam split: {{ $chunk->split_order + 1 }} / dalam kumpulan yang sama.
@endif {{-- Superseded Warning --}} @if($chunk->isSuperseded())
Chunk ini telah digantikan oleh chunk-chunk baharu hasil split. Ia tidak lagi digunakan dalam Qdrant.
@endif {{-- ===================================================================== --}} {{-- TEXT PREVIEW — 3 Panel --}} {{-- ===================================================================== --}}
{{-- raw_text --}}

Teks asal hasil extraction PDF. Tidak boleh diubah. Ini adalah source of truth untuk chunk ini.

{{ $chunk->content }}
{{-- cleaned_text --}}
@if($chunk->cleaned_text)

Teks selepas auto cleanup. Jika final_text tidak ditetapkan, ini digunakan untuk embedding.

{{ $chunk->cleaned_text }}
@else

cleaned_text tidak ditetapkan.

raw_text (content) digunakan untuk embedding.

@endif
{{-- final_text --}}
@if($chunk->final_text)

Teks yang sebenarnya dihantar ke Qdrant untuk embedding. Diedit oleh admin.

{{ $chunk->final_text }}
@else

final_text tidak ditetapkan.

Sistem menggunakan cleaned_text atau raw_text untuk embedding.

@endif
{{-- ===================================================================== --}} {{-- EDIT FINAL TEXT FORM --}} {{-- ===================================================================== --}} @if(!$chunk->isSuperseded())
Edit final_text

Edit teks yang akan dihantar untuk embedding. raw_text tidak akan diubah. Selepas simpan, reindex akan diantrikan secara automatik.

@csrf @method('PATCH') @error('final_text')
{{ $message }}
@enderror
Minimum 20 aksara, maksimum 10,000 aksara. 0 aksara
{{-- Quick-fill dari raw_text --}}
raw_text: {{ number_format(mb_strlen($chunk->content)) }} aksara, {{ number_format(str_word_count($chunk->content)) }} patah
@endif {{-- ===================================================================== --}} {{-- CHILD CHUNKS (jika chunk ini pernah di-split) --}} {{-- ===================================================================== --}} @if($chunk->childChunks->count() > 0)
Chunk Baharu Hasil Split {{ $chunk->childChunks->count() }}
@foreach($chunk->childChunks as $child)
{{ $child->getStatusLabel() }} #{{ $child->chunk_index + 1 }}

{{ Str::limit($child->getEmbeddableText(), 100) }}

Lihat
@endforeach
@endif {{-- ===================================================================== --}} {{-- AUDIT TRAIL --}} {{-- ===================================================================== --}} @if($chunk->audits->count() > 0)
Audit Trail {{ $chunk->audits->count() }} rekod
@foreach($chunk->audits as $audit)
{{ $audit->getOperationLabel() }} @if($audit->old_status && $audit->new_status) {{ $audit->old_status ?? '—' }} → {{ $audit->new_status }} @endif {{ $audit->user?->name ?? 'System' }} · {{ $audit->created_at->format('d/m/Y H:i') }}
@if($audit->notes)

{{ $audit->notes }}

@endif @if($audit->operation === \App\Models\ChunkAudit::OP_EDIT_FINAL_TEXT && $audit->old_final_text)
Lihat perubahan teks

SEBELUM

{{ Str::limit($audit->old_final_text, 300) }}

SELEPAS

{{ Str::limit($audit->new_final_text, 300) }}
@endif
@endforeach
@endif @endsection @push('scripts') @endpush