INFRAIMPACT Research Data Studio — MVP 1a Handover
INFRAIMPACT Research Data Studio — MVP 1a Handover
Project: Kerangka Diagnostik Multidimensi INFRAIMPACT untuk Memutus Siklus Investment-in-Failure pada Infrastruktur Sanitasi APBN Indonesia 2015–2024 Researcher: Reza Prama Arviandi (UI – Civil Engineering / Project Management) Build date: 2026-05-16 Build tag: v1.0-MVP1a (local-first, IndexedDB, GitHub Pages compatible)
1. Status: 27 Deliverables → File Mapping
| # | Deliverable | File / Module | Status |
|---|---|---|---|
| 1 | Architecture diagnosis (current vs. needed) | docs/RESEARCH_DATA_STUDIO_PLAN.md §1–§3 | ✅ |
| 2 | 4-tier MVP roadmap (1a→1b→2→3→4) | docs/RESEARCH_DATA_STUDIO_PLAN.md §4 | ✅ |
| 3 | Repo file structure | docs/RESEARCH_DATA_STUDIO_PLAN.md §5 | ✅ |
| 4 | Admin shell with pseudo-login | admin.html, assets/js/admin/auth.js | ✅ |
| 5 | IndexedDB wrapper (13 stores) | assets/js/admin/db.js | ✅ |
| 6 | Seed loader (assets/observations/indicators) | db.js → seedIfEmpty() | ✅ |
| 7 | Raw Asset Database viewer (571 assets) | assets/js/admin/raw-viewer.js | ✅ |
| 8 | Filters (9) + pagination + column toggle | raw-viewer.js | ✅ |
| 9 | Asset drawer (Overview/Trajectory tabs) | raw-viewer.js + admin.html#assetDrawer | ✅ |
| 10 | Interview Input form (PII-safe) | form-schemas.js → SCHEMA_INTERVIEW + forms.js | ✅ |
| 11 | FGD Input form | form-schemas.js → SCHEMA_FGD | ✅ |
| 12 | Field Observation form | form-schemas.js → SCHEMA_FIELD | ✅ |
| 13 | Document Evidence form | form-schemas.js → SCHEMA_DOC | ✅ |
| 14 | BWM Weighting Studio (9-step wizard) | assets/js/admin/bwm-studio.js | ✅ |
| 15 | BWM approximate solver + Consistency Ratio | bwm-studio.js → solveBWMApprox() | ✅ |
| 16 | INFRAIMPACT Calculation Studio (9 transparent steps) | assets/js/admin/calc-studio.js | ✅ |
| 17 | 2×2 Diagnostic Quadrant + Risk Zone classifier | calc-studio.js (Step 7–8) | ✅ |
| 18 | Data Quality dashboard + audit log table | assets/js/admin/quality.js | ✅ |
| 19 | Audit trail (every CRUD) | assets/js/admin/audit.js | ✅ |
| 20 | Export Center (9 CSV exports) | assets/js/admin/export-center.js | ✅ |
| 21 | PDF reports (asset / province / methodology / dictionary) | assets/js/admin/pdf-export.js + export-center.js | ✅ |
| 22 | Backup / Restore / Templates / Reset | export-center.js | ✅ |
| 23 | Settings & Method version | assets/js/admin/settings.js | ✅ |
| 24 | Schema-driven form engine + PII guardrails | forms.js (consent gate, PII regex, coord truncation) | ✅ |
| 25 | Router + hash-based deep links | studio-app.js | ✅ |
| 26 | Supabase migration plan (MVP 2) | docs/SUPABASE_MIGRATION.md | ✅ (design only) |
| 27 | Open questions for researcher | docs/RESEARCH_DATA_STUDIO_PLAN.md §27 + below | ✅ |
2. File Inventory — New / Changed in MVP 1a
2.1 New shell + styling
admin.html(7.5 KB) — Studio shell, login gate, sidebar nav (10 views), asset drawer.assets/css/admin.css(19 KB) — Login UI, sidebar, forms, BWM/Calc wizards, drawer, quality cards.
2.2 New JS modules (assets/js/admin/ — 14 files, ~168 KB total)
db.js— IndexedDB v1, 13 object stores,seedIfEmpty(),exportAll(),importAll().auth.js— pseudo-login (DEFAULT_PASSCODE = 'infraimpact-2026'), sessionStorage.audit.js—logCreate/logUpdate/logDelete/logEvent+getRecentLogs(limit).csv.js— PapaParse wrapper,download()+downloadJSON().pdf-export.js— jsPDF + autotable; asset & province diagnostic reports.raw-viewer.js— 571 assets, 9 filters, pagination 50/page, column toggle, drawer.forms.js— schema-driven engine, consent gate, PII regex, coord truncation.form-schemas.js— 4 schemas (Interview / FGD / Field / Document).interview-form.js,fgd-form.js,field-form.js,doc-form.js— thin wrappers binding schemas to engine.bwm-studio.js— 9-step wizard, approximate Rezaei (2015) solver, CI fromCI_TABLE.calc-studio.js— 9-step transparent INFRAIMPACT calculation, saves toscores.quality.js— coverage cards, qualitative coding progress, audit log table.export-center.js— 9 CSV + 4 PDF + backup/restore/templates/reset.settings.js— metadata, threshold, store counts, session, indicator list.studio-app.js— router, hash routes, login gate flow,ensureSeed().
2.3 New docs (docs/)
RESEARCH_DATA_STUDIO_PLAN.md(36 KB) — Master plan, full schemas, pseudocode, acceptance criteria, security warnings, 10 open questions.SUPABASE_MIGRATION.md(14 KB) — MVP 2 SQL schema, RLS policies, auth flow, migration script.
2.4 Public dashboard — changed
index.html— header now contains link<a href="admin.html">Studio →</a>.
No deletions. All public dashboard functionality (MVP 1 public) preserved.
3. GitHub Desktop Upload Checklist (incremental, additive)
- Open GitHub Desktop → repo
infraimpact-dashboard(orrezaprama.github.io/infraimpact). - Confirm Changes tab shows the following new/modified paths:
admin.html(NEW)assets/css/admin.css(NEW)assets/js/admin/*.js(15 NEW files)docs/RESEARCH_DATA_STUDIO_PLAN.md(NEW)docs/SUPABASE_MIGRATION.md(NEW)MVP_1a_HANDOVER.md(NEW — this file)index.html(MODIFIED — added Studio link)
- Summary field:
feat(studio): MVP 1a — Research Data Studio with IndexedDB, BWM, calc engine. - Description field:
13 stores, 10 admin views, pseudo-login (NOT security), CSV+PDF export, audit trail. Reference docs/RESEARCH_DATA_STUDIO_PLAN.md. - Click Commit to main.
- Click Push origin.
- Wait 30–90 detik. Open
https://rezaprama.github.io/infraimpact/admin.html.
4. Smoke Test Checklist (post-deploy)
Open /admin.html and verify in order:
| Step | Expected behaviour | Status |
|---|---|---|
| 1 | Login gate visible. Passcode infraimpact-2026 → unlocks | ⬜ |
| 2 | Seed banner shows ✓ Seeded N record or ✓ DB siap | ⬜ |
| 3 | Raw Asset Database menampilkan ~571 baris | ⬜ |
| 4 | Filter quadrant = IIF mengurangi tabel ke ~150–200 baris | ⬜ |
| 5 | Klik salah satu asset → drawer terbuka, tab Overview & Trajectory bekerja | ⬜ |
| 6 | Interview Input → simpan minimal 1 record → audit log mencatat create | ⬜ |
| 7 | BWM Studio → jalankan 9 step → bobot tersimpan, CR < 0.25 untuk uji | ⬜ |
| 8 | Calc Studio → pilih 1 asset → 9 step jalan → quadrant + zone tampil | ⬜ |
| 9 | Quality view → coverage cards & audit log table terisi | ⬜ |
| 10 | Export Center → CSV assets ter-download, file > 0 byte | ⬜ |
| 11 | Export Center → Asset diagnostic PDF ter-generate (1 halaman) | ⬜ |
| 12 | Export Center → Backup JSON ter-download, file > 100 KB | ⬜ |
| 13 | Logout → kembali ke login gate | ⬜ |
| 14 | Re-login → semua data sebelumnya masih ada (IndexedDB persisten) | ⬜ |
5. Sparring-Partner Caveats — Wajib Dibaca Sebelum Field
5.1 Pseudo-login bukan keamanan
- Passcode di-hash SHA-256 di
auth.jstetapi salt & hash visible di source publik (GitHub Pages = static hosting). - Siapa pun yang membaca
assets/js/admin/auth.jsdi repo dapat menghitung passcode dari hash. - Implication: jangan input data sensitif (PII identifikasi langsung, koordinat presisi tinggi, transcript verbatim) di studio publik. Tunggu MVP 2 (Supabase + Row-Level Security).
- Referensi ancaman model: Khanna & Palepu (2010) tentang institutional voids — di sini analog: void = ketidaktersediaan backend autentikasi.
5.2 IndexedDB = browser-local
- Data hanya ada di browser yang sama. Hilang jika:
- User clear browsing data / clear site data.
- User pakai mode Incognito.
- User pindah laptop tanpa export backup.
- Mitigasi wajib: lakukan Backup → JSON (Export Center) setelah setiap sesi entri data. Simpan di drive cloud yang Anda kontrol.
- Anti-pattern: mengandalkan persistence IndexedDB untuk klaim audit trail di publikasi Q1. Wajib export periodik + commit ke repo privat.
5.3 Semua 571 record adalah simulated_placeholder_v2_571
- Generated oleh
scripts/etl/generate_synthetic_571.pydenganrandom.seed(42). - Field
data_source = 'simulated_placeholder_v2_571'ada di setiap record. - Wajib: sebelum publikasi atau presentasi, ganti dengan data riil hasil ETL dari sumber otoritatif (SIPPa, KemenPUPR, BPKP, BPS). Tag
data_sourceke source aktualnya. - Tanpa langkah ini, semua tampilan kuadran / trend / ranking adalah artefak simulasi — bukan temuan empiris.
5.4 BWM solver = approximate, bukan exact LP
- Implementasi sekarang pakai approximate closed-form (Rezaei, 2015, eq. 4 sebelum LP). Untuk publikasi Q1 sebaiknya:
- Gunakan solver LP eksak (
glpk.jsatau panggil R/Python offline) untuk panel pakar final. - Laporkan CR dengan
CI_TABLERezaei (2015) Table 2. - Sensitivity analysis: variasi bobot ±10% dan cek apakah ranking aset bergeser.
- Gunakan solver LP eksak (
5.5 S_CAUSE ≠ S_IMPACT; jangan kolapskan ke 1 skor
- Studio sengaja menampilkan keduanya terpisah + memetakan ke 2×2 quadrant.
- Kolaps ke 1 skor komposit (rata-rata aritmatika S_CAUSE+S_IMPACT) → menutupi insight diagnostik utama Anda: Compensated Failure vs Investment-in-Failure.
- Jika reviewer Q1 meminta single composite score, jawab dengan teori principal-agent (Eisenhardt, 1989; Holmström, 1979): dua dimensi mengukur dua jenis kegagalan governance berbeda → tidak agregabel tanpa kehilangan informasi diagnostik.
5.6 Ecological fallacy risk
- Quadrant assignment di level provinsi/kabupaten tidak boleh diinterpretasi sebagai sifat individual aset (Robinson, 1950).
- Drawer asset selalu tampilkan trajectory per-aset, bukan rata-rata provinsi.
5.7 Audit trail belum tamper-evident
audit_logsada di IndexedDB yang sama dengan data → seseorang dengan akses devtools bisa hapus rows.- Untuk publikasi: export audit log ke CSV + commit ke repo privat dengan Git timestamp signature. Pertimbangkan hash-chain (block-style) di MVP 2.
6. 10 Open Questions — Wajib Diputuskan Sebelum Field (Mei 2026)
| # | Pertanyaan | Default sementara | Implikasi metodologis |
|---|---|---|---|
| 1 | Ukuran panel BWM (n pakar)? | 7–12 (Rezaei, 2015) | n<7 → reliabilitas rendah; n>15 → koordinasi panel sulit |
| 2 | Regime consent (recorded / written / both)? | Written + opt-in recording | Affects right to full_transcript_optional |
| 3 | Klasifikasi data: siapa boleh akses restricted? | Hanya researcher + supervisor | Perlu MoU jika data dipakai pihak Kementerian |
| 4 | Update indicator definitions: by whom & how often? | Researcher only, lock setelah field | Versioning di settings → indicator_definition_version |
| 5 | Sumber threshold (0.33/0.66/0.5)? | Default literatur INFRAIMPACT v1 | Wajib sensitivity analysis di publikasi |
| 6 | Bahasa PDF report? | Bilingual (id + executive summary en) | Affects template PDF dan time-to-render |
| 7 | Branding logo (UI + PUPR + supervisor)? | UI logo wajib, PUPR opsional | Affects PDF header & web favicon |
| 8 | Kapan submit DOI Zenodo untuk dataset? | Setelah field selesai, sebelum journal submission | Trade-off: terlalu cepat → data masih revisi; terlalu lambat → reviewer tidak bisa cek |
| 9 | Berapa enumerator tambahan & training? | Opsi A: solo; Opsi B: 2–3 enumerator terlatih | Affects inter-rater reliability (Cohen κ) |
| 10 | Tanggal mulai field & target N kab/kota? | Mei–Juli 2026; minimum 12 kab/kota purposive | Affects saturation argument di Q1 reviewer response |
7. Critical References (APA 7)
- Eisenhardt, K. M. (1989). Agency theory: An assessment and review. Academy of Management Review, 14(1), 57–74. https://doi.org/10.5465/amr.1989.4279003
- Hart, O., Shleifer, A., & Vishny, R. W. (1997). The proper scope of government: Theory and an application to prisons. The Quarterly Journal of Economics, 112(4), 1127–1161. https://doi.org/10.1162/003355300555448
- Holmström, B. (1979). Moral hazard and observability. The Bell Journal of Economics, 10(1), 74–91. https://doi.org/10.2307/3003320
- Khanna, T., & Palepu, K. G. (2010). Winning in emerging markets: A road map for strategy and execution. Harvard Business Press.
- North, D. C. (1990). Institutions, institutional change and economic performance. Cambridge University Press. https://doi.org/10.1017/CBO9780511808678
- Rezaei, J. (2015). Best-worst multi-criteria decision-making method. Omega, 53, 49–57. https://doi.org/10.1016/j.omega.2014.11.009
- Robinson, W. S. (1950). Ecological correlations and the behavior of individuals. American Sociological Review, 15(3), 351–357. https://doi.org/10.2307/2087176
- Williamson, O. E. (2000). The new institutional economics: Taking stock, looking ahead. Journal of Economic Literature, 38(3), 595–613. https://doi.org/10.1257/jel.38.3.595
8. Next Milestones
| MVP | Trigger condition | Scope summary |
|---|---|---|
| 1b | MVP 1a smoke test 14/14 ✅ | Educational page “Bagaimana INFRAIMPACT Bekerja?”, BWM exact LP (glpk.js), sensitivity simulator at scale, ZIP bundle export (JSZip), traceability chain UI |
| 2 | Sebelum field deployment Mei–Juli 2026 | Migrasi ke Supabase per docs/SUPABASE_MIGRATION.md. Real auth + RLS + per-row provenance + tamper-evident audit |
| 3 | Setelah n≥3 kolaborator | Role-based access (admin / researcher / enumerator / viewer), per-region scoping |
| 4 | Setelah supervisor approve & PII anonymization audit | Public release: anonymized dataset + DOI Zenodo + read-only public studio |
End of handover. Open issues di docs/RESEARCH_DATA_STUDIO_PLAN.md §27. File path: E:\00 Claude\infraimpact-dashboard\MVP_1a_HANDOVER.md.
