aiMode: assist memakai AI enricher (apps/api/src/generation/enrichers/ai-enricher.ts).
- System prompt:
SYSTEM_PROMPT(versimaster-enricher-v3) - User prompt: dibangun di
buildPrompt()— menyertakancanonical_facts,allowed_fields,base_payload, dan opsionalsectionFocus
Aturan inti system prompt
Ringkasan (baca file lengkap untuk edit):- Output hanya JSON — nested sesuai
base_payload - Hanya ubah field di
allowed_fields - Narasi minimal 4–6 kalimat per field string; array minimal 3 item
- Dilarang kata meta: “simulasi”, “contoh”, “AI”, “belum tersedia”, dll.
- SKKNI: pakai
skkni_unit_referencelengkap (kode + Nomor Kepmen + Tahun) di bukti-1 & bukti-2 - Angka responden/peserta harus konsisten dengan
reference_figuresdi canonical facts
Grup prompt per dokumen
bukti-1 — TNA Makro
bukti-2 — TNA Mikro
bukti-6 / bukti-6-deck — Rencana Pemasaran
enrichmentGroup: marketing-plan-bukti6 — AI sekali, dipakai docx + pptx.
bukti-7 — Perjanjian Kerjasama
bukti-7 — field exact (tidak disentuh AI)
party_one.organization_name, representative_name, agreement_location, agreement_date
bukti-8 — Laporan Evaluasi
Dokumen tanpa AI narasi
Prompt khusus bukti-5 (Classroom)
File:apps/api/src/generation/composers/master/generate-classroom-assignment-content.ts
AI menghasilkan JSON: assignment_title, video_title, assignment_instructions (3 langkah), video_duration_minutes — untuk tugas Google Classroom di bukti pelaksanaan.
Contoh struktur user prompt (setelah system)
Fallback
Jika AI gagal parse JSON / timeout → enricher mengembalikanbase_payload asli (source: fallback). Job tidak stuck.
Di mana mengedit fokus per bukti
Ubah stringfocus dan fieldPaths di:
apps/api/src/generation/document-definitions/master-definitions.ts
Lalu deploy API worker. Tidak perlu ubah frontend.