INFRAIMPACT — Data Dictionary
INFRAIMPACT — Data Dictionary
Schema of every JSON file in /data and /geo. All field names are stable across versions; deprecated fields must be retained until next major version bump.
provinces.json
| Field | Type | Required | Example | Notes |
|---|---|---|---|---|
| province_code | string(2) | Y | “32” | BPS code, zero-padded |
| province_name_id | string | Y | “Jawa Barat” | display name (ID) |
| province_name_en | string | N | “West Java” | display name (EN) |
| region_group | string | Y | “Java” | Sumatera/Java/Kalimantan/Sulawesi/BaliNT/Maluku/Papua |
| centroid_lat | float | Y | -6.9 | for fallback marker |
| centroid_lng | float | Y | 107.6 | for fallback marker |
| population | int | N | 48783000 | BPS reference |
districts.json
| Field | Type | Required | Example | Notes |
|---|---|---|---|---|
| district_code | string(4) | Y | “3201” | BPS code |
| province_code | string(2) | Y | “32” | FK |
| district_name_id | string | Y | “Kabupaten Bogor” | |
| district_type | string | Y | “kabupaten” | {kabupaten, kota} |
| centroid_lat | float | Y | -6.6 | |
| centroid_lng | float | Y | 106.8 | |
| population | int | N | 5489000 | |
| uptd_aldald_status | string | N | “uptd_generic” | {none, ad_hoc, uptd_generic, uptd_spesifik} |
| perda_alD_exists | bool | N | true | |
| perda_alD_year | int | N | 2017 | required if perda_alD_exists = true |
assets.json
| Field | Type | Required | Example | Notes |
|---|---|---|---|---|
| asset_id | string | Y | “AST-0030” | unique |
| asset_name | string | Y | “IPLT Keputih” | |
| asset_type | string | Y | “IPLT” | {IPLT, IPAL_komunal, IPAL_kawasan, TPA, TPST, SPALDT} |
| province_code | string(2) | Y | “35” | FK |
| district_code | string(4) | Y | “3578” | FK |
| latitude | float | Y | -7.295 | masked in public mode |
| longitude | float | Y | 112.795 | masked in public mode |
| construction_year | int | Y | 2015 | left-censoring boundary |
| handover_year | int | N | 2016 | BAST year |
| funding_source | string | Y | “APBN” | {APBN, APBD_I, APBD_II, Hibah, PHLN, Mixed} |
| capex_value_idr | int | N | 62000000000 | IDR |
| design_capacity_m3_day | float | Y | 400 | |
| operator_entity | string | N | “UPTD PALD Surabaya” |
yearly_observations.json
| Field | Type | Required | Example | Notes |
|---|---|---|---|---|
| observation_id | string | Y | “OBS-2024-AST-0030” | unique |
| year | int | Y | 2024 | 2015–2024 |
| asset_id | string | Y | “AST-0030” | FK |
| province_code | string(2) | Y | “35” | denorm for fast filter |
| district_code | string(4) | Y | “3578” | denorm |
| design_capacity | float | N | 400 | |
| actual_capacity | float | N | 290 | |
| utilization_rate | float | N | 0.725 | |
| idle_capacity_ratio | float | N | 0.275 | |
| service_coverage | float | N | 0.41 | |
| effluent_compliance_rate | float | N | 0.88 | triggers absolute override if < 0.50 |
| o_and_m_budget | int | N | 1250000000 | |
| cost_recovery_ratio | float | N | 0.48 | |
| institution_status | string | N | “uptd_spesifik” | enum (see C-I1) |
| regulation_status | string | N | “full” | {none, partial, full} |
| cause_score | float | N | 0.74 | precomputed S_CAUSE |
| impact_score | float | N | 0.71 | precomputed S_IMPACT |
| usefulness_score | float | N | 0.62 | |
| functionality_score | float | N | 0.76 | |
| sustainability_score | float | N | 0.78 | |
| operational_status | string | Y | “operating” | {operating, underutilized, idle, failed, not_yet_constructed, data_unavailable} |
| risk_zone | string | Y | “green” | {green, yellow, red, gray} |
| diagnostic_quadrant | string | Y | “resilient” | {resilient, operational_decay, compensated_failure, investment_in_failure, unknown} |
| data_quality_flag | string | Y | “estimated” | {observed, estimated, imputed, missing} |
| data_source | string | Y | “simulated_placeholder” | |
| scoring_method_version | string | Y | “v1.0” | |
| last_updated | date | Y | “2026-05-12” | ISO-8601 |
| notes | string | N | free text |
indicators.json
See data/indicators.json. Schema: { indicator_id, block, dimension, name_id, observation_field, orientation, normalization, ... }.
absolute_threshold + absolute_override (optional) → zona merah otomatis.
weights.json
{
"weight_id": "W-2026-v1",
"scoring_method_version": "v1.0",
"block_weights": { "CAUSE": 0.5, "IMPACT": 0.5 },
"dimension_weights": { "institusi": 0.30, ... },
"indicator_weights": { "C-I1": 0.40, ... },
"bwm_consistency_ratio": 0.18,
"panel_id": "PANEL-SIM-A",
"valid_from": "2026-01-01"
}
thresholds.json
{
"quadrant_threshold": 0.50,
"risk_zones": { "red_max": 0.33, "yellow_max": 0.66 },
"absolute_overrides": [
{ "indicator_id": "I-T3", "indicator_field": "effluent_compliance_rate", "operator": "<", "threshold": 0.50, "action": "red" }
]
}
recommendations.json
Array of { recommendation_id, trigger_quadrant, action_id_text, action_en_text, severity }.
metadata.json
Global dataset metadata (publisher, license, cut-off date, version, warnings).
geo/indonesia_provinces.geojson
Fallback FeatureCollection. Properties keys are normalized at load (_code, _displayName). Primary source is jsDelivr CDN; local fallback only used if CDN fails.
Versioning rules
- Adding optional fields: minor version bump.
- Removing or renaming fields: major version bump + migration note.
- Changing scoring semantics: bump
scoring_method_version, add entry toscoring_versions.json. - Boundary file replacement (BPS): bump
boundary_versioninmetadata.json.
