Add DOKUMENTASI_FORM.md
This commit is contained in:
parent
63639965fc
commit
fde1ae4ae0
|
|
@ -0,0 +1,173 @@
|
|||
[cite\_start]Berdasarkan bedah dokumen **Surat Edaran (SE) Musrenbang RKPD 2027**[cite: 114], berikut adalah rancangan spesifikasi API (API Blueprint) untuk sistem **ORARIBET**.
|
||||
|
||||
Rancangan ini difokuskan untuk mengakomodasi alur bisnis, validasi, dan struktur data yang diwajibkan dalam SE tersebut. Anda bisa memberikan *prompt* ini langsung ke AI Copilot untuk mulai *coding*.
|
||||
|
||||
-----
|
||||
|
||||
### **Spesifikasi API Service: Modul Perencanaan (Renja RT)**
|
||||
|
||||
**Base URL:** `/api/v2/perencanaan`
|
||||
|
||||
#### **1. Master Data & Aturan Bisnis**
|
||||
|
||||
[cite\_start]Digunakan untuk mempopulate *dropdown* form dan validasi batasan anggaran sesuai Lampiran II SE[cite: 952].
|
||||
|
||||
* **Endpoint:** `GET /master/menu-kegiatan`
|
||||
* **Description:** Mengambil daftar menu kegiatan (Wajib/Pilihan/Tematik) beserta pagu harga dan aturan.
|
||||
* **Response Body:**
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": [
|
||||
{
|
||||
"id": 1,
|
||||
"kategori": "PELAYANAN DASAR",
|
||||
[cite_start]"sifat": "WAJIB", // [cite: 953]
|
||||
"menu": "PARENTING",
|
||||
"sub_menu": "Keluarga dengan anak usia 0-18 tahun",
|
||||
"pagu_max": 200000,
|
||||
"satuan_pagu": "per_keluarga_per_tahun",
|
||||
[cite_start]"opd_pengampu": "DPMP4KB" // [cite: 953]
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"kategori": "INFRASTRUKTUR LINGKUNGAN",
|
||||
"sifat": "PILIHAN",
|
||||
[cite_start]"menu": "RTLH", // [cite: 969]
|
||||
"pagu_max": 17500000,
|
||||
[cite_start]"syarat_dokumen": ["ktp", "kk", "surat_tanah", "foto_kondisi"] // [cite: 970]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### **2. Modul Profiling RT (Basis Data)**
|
||||
|
||||
[cite\_start]Sesuai Lampiran I, Profil RT wajib diisi sebelum Musrenbang[cite: 197]. Data ini sangat banyak, jadi dibagi per seksi.
|
||||
|
||||
* **Endpoint:** `POST /profil-rt/update`
|
||||
* **Description:** Menyimpan data profil (Perumahan, Individu, Aset, RTLH).
|
||||
* **Request Body:**
|
||||
```json
|
||||
{
|
||||
"tahun_anggaran": 2027,
|
||||
"kode_rt": "003",
|
||||
"kode_rw": "006",
|
||||
"kode_kelurahan": "REJOWINANGUN_SELATAN",
|
||||
[cite_start]"data_perumahan": { // [cite: 238-272]
|
||||
"status_lahan": {
|
||||
"milik_sendiri": 10,
|
||||
"sewa": 5
|
||||
},
|
||||
"sumber_air": {
|
||||
"pdam": 12,
|
||||
"sumur": 3
|
||||
},
|
||||
"sanitasi": {
|
||||
"jamban_sendiri": 15,
|
||||
"mc_umum": 0
|
||||
}
|
||||
},
|
||||
[cite_start]"data_individu": { // [cite: 273-331]
|
||||
"jumlah_penduduk": {
|
||||
"laki_laki": 20,
|
||||
"perempuan": 25
|
||||
},
|
||||
[cite_start]"disabilitas": { // [cite: 301]
|
||||
"tuna_daksa": 1,
|
||||
"tuna_netra": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### **3. Modul Input Usulan (Renja RT)**
|
||||
|
||||
[cite\_start]Ini adalah *core transaction* di mana RT menginput usulan kegiatan senilai Rp 50.000.000[cite: 146].
|
||||
|
||||
* **Endpoint:** `POST /renja/usulan`
|
||||
* **Description:** Tambah usulan baru ke dalam keranjang Renja RT.
|
||||
* **Request Body:**
|
||||
```json
|
||||
{
|
||||
"id_rt": "RT001",
|
||||
"tahun": 2027,
|
||||
[cite_start]"jenis_usulan": "UTAMA", // Enum: UTAMA, CADANGAN [cite: 219]
|
||||
"kategori_id": 2, // Referensi ke Master Menu
|
||||
[cite_start]"uraian_kegiatan": "Perbaikan Rumah Tidak Layak Huni Bpk. Fulan", // [cite: 409]
|
||||
"volume": 1,
|
||||
"satuan": "Unit",
|
||||
"harga_satuan": 17500000, // Harus validasi cross-check dengan SSH
|
||||
"total_biaya": 17500000,
|
||||
[cite_start]"lokasi_koordinat": "-7.4728, 110.2198", // [cite: 409]
|
||||
[cite_start]"rujukan_ssh": "Halaman 45, Item A.1", // [cite: 409]
|
||||
"dokumen_pendukung": {
|
||||
[cite_start]"surat_izin_lahan": "url_file.pdf", // Wajib jika di lahan pribadi [cite: 204]
|
||||
[cite_start]"proposal": "url_file.pdf" // Wajib jika Tematik Baru [cite: 214]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### **4. Modul Validasi Pagu (Logic Checker)**
|
||||
|
||||
Untuk memastikan total usulan tidak melebihi Rp 50 Juta sebelum submit.
|
||||
|
||||
* **Endpoint:** `GET /renja/summary/{id_rt}`
|
||||
* **Response Body:**
|
||||
```json
|
||||
{
|
||||
[cite_start]"total_alokasi": 50000000, // [cite: 146]
|
||||
"total_terpakai": 48500000,
|
||||
"sisa_anggaran": 1500000,
|
||||
"status_valid": true, // False jika minus
|
||||
"detail_per_kategori": {
|
||||
"pelayanan_dasar": 20000000,
|
||||
"tematik": 28500000
|
||||
},
|
||||
[cite_start]"usulan_cadangan_count": 2 // [cite: 219]
|
||||
}
|
||||
```
|
||||
|
||||
#### **5. Modul Berita Acara (Output)**
|
||||
|
||||
Untuk generate laporan PDF sesuai format lampiran.
|
||||
|
||||
* **Endpoint:** `POST /dokumen/generate-ba`
|
||||
* **Description:** Generate PDF Berita Acara Musrenbang RT.
|
||||
* **Request Body:**
|
||||
```json
|
||||
{
|
||||
"id_transaksi_renja": "TRX-2027-RT001",
|
||||
[cite_start]"tanggal_musrenbang": "2025-12-10", // [cite: 221]
|
||||
[cite_start]"jumlah_peserta": 45, // Validasi min 2/3 warga [cite: 393]
|
||||
"foto_dokumentasi": ["img1.jpg", "img2.jpg"],
|
||||
"ttd_ketua_rt": "base64_signature",
|
||||
"ttd_rw": "base64_signature",
|
||||
[cite_start]"ttd_fasilitator": "base64_signature" // [cite: 410]
|
||||
}
|
||||
```
|
||||
|
||||
#### **6. Modul Verifikasi (Kelurahan & Kecamatan)**
|
||||
|
||||
Digunakan oleh Kelurahan/Kecamatan untuk *Approval* usulan.
|
||||
|
||||
* **Endpoint:** `POST /verifikasi/approval`
|
||||
* **Request Body:**
|
||||
```json
|
||||
{
|
||||
"id_usulan": 12345,
|
||||
"level_verifikasi": "KELURAHAN", // Enum: KELURAHAN, KECAMATAN, KOTA
|
||||
"status": "DITOLAK", // Enum: DISETUJUI, DITOLAK
|
||||
[cite_start]"alasan_penolakan": "Tidak sesuai kriteria teknis RTLH", // Wajib jika ditolak [cite: 500]
|
||||
[cite_start]"id_usulan_pengganti": 67890 // ID dari Usulan Cadangan jika ada swap [cite: 501]
|
||||
}
|
||||
```
|
||||
|
||||
-----
|
||||
|
||||
### **Instruksi untuk Copilot/Developer**
|
||||
|
||||
1. [cite\_start]**Validasi Dokumen:** Pastikan pada endpoint `/renja/usulan`, jika kategori kegiatan adalah fisik di tanah bukan aset Pemkot, API wajib me-return error jika `surat_izin_lahan` null[cite: 204].
|
||||
2. [cite\_start]**Validasi Waktu:** Endpoint input Renja RT harus dikunci (read-only) setelah Minggu ke-2 Desember 2025[cite: 141].
|
||||
3. [cite\_start]**Logika Usulan Cadangan:** Saat verifikasi kelurahan (`/verifikasi/approval`), jika status `DITOLAK`, sistem harus menawarkan pop-up/opsi untuk mengambil data dari `jenis_usulan: CADANGAN`[cite: 501].
|
||||
4. **Integrasi Profil:** Data dari endpoint `/profil-rt/update` harus menjadi *baseline*. Misal: Jika di profil tercatat tidak ada RTLH, maka saat input usulan RTLH, berikan *warning* atau *blocker*.
|
||||
Loading…
Reference in New Issue