Submission V2 Structure Rules (Prompt-Ready)
1. Prinsip Utama
submission-v2adalah context orkestrasi transisi workflow berbasis action.- Orkestrator harus tetap tipis: koordinasi flow di
submission-v2.service.ts, detail domain/persistence dipisah ke service khusus. - Behavior perubahan status harus tetap traceable ke log
wxl_submission_log. - Semua perubahan harus behavior-preserving kecuali ada kebutuhan bisnis baru yang eksplisit.
2. Struktur Folder Standar
submission-v2/
docs/
STRUCTURE-RULES.md
submission-v2-system-behavior.md
submission-v2.service.ts
submission-v2-snapshot.service.ts
submission-v2-persistence.service.ts
submission-v2-log.service.ts
submission-v2.types.ts
submission-v2.service.spec.ts
3. Tanggung Jawab Tiap File
3.1 submission-v2.service.ts
- Entry point
setSubmission(...). - Menentukan urutan orkestrasi flow end-to-end.
- Validasi guard orchestration (
overridesource, reason, status transition). - Tidak menyimpan query SQL langsung selain operasi insert/update final yang memang bagian orkestrasi.
3.2 submission-v2-snapshot.service.ts
- Resolve snapshot workflow dari submission existing atau load fresh dari tabel master.
- Validasi keberadaan workflow/action di snapshot.
- Tidak menangani update submission/entity.
3.3 submission-v2-persistence.service.ts
- Operasi persistence submission/entity dan sinkronisasi tabel native.
- Validasi keamanan identifier tabel (
isSafeIdentifier) dan validasi payload kolom. - Menjadi satu-satunya tempat query
information_schema.columnsuntuk context ini.
3.4 submission-v2-log.service.ts
- Hitung snapshot approval dari config action.
- Build payload log
wxl_submission_log. - Tidak melakukan insert DB langsung.
3.5 submission-v2.types.ts
- Kontrak payload/return/service internal (
SetSubmissionPayload,SetSubmissionResult,ApprovalSnapshot, dsb). - Menjadi referensi typing lintas service dalam context.
3.6 submission-v2.service.spec.ts
- Unit test utama untuk behavior
SubmissionServiceV2,SubmissionV2LogService, danSubmissionV2SnapshotService. - Menjaga regression untuk flow create/update submission, approval, native payload, dan snapshot.
3.7 docs/*
submission-v2-system-behavior.mdmenjelaskan behavior runtime implementasi saat ini.STRUCTURE-RULES.mdmenjadi aturan refactor dan penempatan logic context.
4. Aturan Boundary (Hitam Putih)
- Logic approval snapshot hanya di
submission-v2-log.service.ts. - Logic load snapshot workflow hanya di
submission-v2-snapshot.service.ts. - Logic sinkronisasi entity native (
status_id,submission_id, native payload) hanya disubmission-v2-persistence.service.ts. submission-v2.service.tstidak boleh menambahkan knowledge schema tabel entity native.- Integrasi transport (HTTP controller/worker consumer) tetap berada di context pemanggil, bukan di folder
submission-v2.
5. Aturan Refactor
- Ubah struktur/naming dulu, hindari ubah behavior dalam satu langkah besar.
- Jika menambah service baru, tentukan boundary sejak awal: snapshot, log, persistence, atau orchestration.
- Bila menambah field payload/return, update sekaligus:
submission-v2.types.ts- caller API/worker yang relevan
- test unit/integration terkait
- dokumentasi
submission-v2-system-behavior.md
- Jangan menghapus validasi guard (
override, reason, status transition) tanpa keputusan bisnis tertulis.
6. Aturan Testing Minimum
- Jalankan unit test context:
packages/lib/src/service/workflow-action/submission-v2/submission-v2.service.spec.ts
- Jalankan integration test endpoint v2:
apps/api/src/api/core/workflow/workflow.submission-v2.integration.spec.ts
- Verifikasi minimal skenario ini tetap lolos:
- create submission baru
- update submission existing
- guard error (
Submission not found, invalid override source, missing reason) - native payload filtering/validasi
- approval snapshot dan quorum behavior
7. Prompt Refactor (Siap Pakai)
Refactor `packages/lib/src/service/workflow-action/submission-v2` dengan aturan:
- pertahankan boundary orchestration/snapshot/persistence/log
- jangan ubah behavior runtime `setSubmission(...)` kecuali diminta
- jaga error contract yang sudah dipakai caller
- update docs `submission-v2-system-behavior.md` jika ada perubahan behavior
Setelah refactor:
1. jalankan unit test submission-v2
2. jalankan integration test endpoint `/api/workflow/submission/v2`
3. laporkan file yang dipindah/diubah dan risiko behavior