Nexa Intelligence Docs
Pipeline Data

issue_dashboard

Alur agregasi deteksi daun taksonomi isu per artikel, evaluasi 5 tingkat risiko (Aman, Rendah, Sedang, Tinggi, Kritis), geospasial provinsi terdampak, dan pengisian indeks Elasticsearch issue_dashboard untuk panel Issue Discovery.

Pipeline Data: issue_dashboard (Issue Discovery)

Pipeline ini bertugas mengolah deteksi isu dari seluruh artikel berita yang telah dianalisis kognitif oleh AI, mengelompokkannya per artikel induk, mengevaluasi band risiko keamanan, serta memetakan sebaran wilayahnya ke dalam indeks Elasticsearch issue_dashboard.

Indeks ini menjadi sumber data tunggal bagi panel Issue Discovery di layar utama /dashboard/overview (GET /overview/issue), yang memungkinkan analis intelijen menyaring isu-isu paling berbahaya berdasarkan kategori tematik dan lokasi geospasial.


1. Ringkasan Arsitektur Alur

[Elasticsearch: articles & PostgreSQL: articles]
(Artikel terdeduplikasi dengan label daun taksonomi: taxonomy_leaf_id)
                       │
                       ▼
           [nexa-aggregation Worker]
           • Filter dokumen per jendela harian (period: 24h, document_version >= 3)
           • Ekstraksi seluruh daun taksonomi per artikel (bisa mencapai puluhan daun)
           • Hitung bobot risiko (avg_risk) & klasifikasi 5 band (Aman s.d. Kritis)
           • Agregasi cakupan wilayah (province_count & centroid koordinat)
           • Hitung validitas jumlah sumber media peliput (sources)
                       │
                       ▼
         [Elasticsearch: issue_dashboard]
         (1 dokumen per daun taksonomi per jendela harian)
                       │
                       ▼
             [f1-api-backend: /overview/issue]
             • Pengelompokan respons: 1 item kartu = 1 artikel induk
             • Array `issues`: daftar daun taksonomi terdeteksi dalam artikel tsb
             • Sorting: max_risk_score ──► volume ──► judul

Alur Aggregation Worker (`nexa-aggregation`)

Kompilasi metrik statistik, rolling trends, agregasi sentimen wilayah, dan caching

01. Query Windowed IndicesElasticsearch: 1h / 24h / 7d

Menarik subset dokumen berita dan media sosial berdasarkan jendela waktu pemantauan.

02. Rolling Metric & Sentiment AggregatorVolume • Share of Voice • Net Sentiment

Menghitung agregasi volume postingan, rasio sentimen positif/negatif, dan lonjakan isu seketika.

03. Geo-Spatial & Topic ClusteringProvinsi / Kab / Kota

Mengelompokkan isu berdasarkan 38 provinsi di Indonesia untuk kebutuhan visualisasi peta digital twin.

04. Timescale Storage & Fast CachingPostgreSQL • Redis In-Memory

Menyimpan tabel agregasi ke database relasional dan memperbarui cache Redis untuk respons API instan.


2. Struktur Dokumen di Elasticsearch issue_dashboard

Worker nexa-aggregation menerbitkan tepat satu dokumen per daun taksonomi per jendela harian (24 jam). Contoh struktur dokumen mentah di indeks Elasticsearch:

{
  "_id": "issue_ketahanan_pangan_beras_2026-09-26",
  "title": "Stok Beras Nasional Surplus 2 Juta Ton Menjelang Akhir Tahun",
  "issue": "Ketersediaan & Stabilisasi Harga Beras",
  "taxonomy_leaf_id": "leaf_pangan_beras_001",
  "taxonomy_path": ["Pangan", "Pertanian", "Sembako", "Beras"],
  "categoryId": "pangan",
  "clusterId": "kesejahteraan_sosial",
  "feature": "stabilisasi_komoditas",
  "city": "Jakarta Pusat",
  "province": "DKI Jakarta",
  "province_count": 5,
  "lat": -6.1754,
  "lng": 106.8272,
  "severity": 1,
  "sources": 3,
  "article_count": 18,
  "total_event": 42,
  "avg_risk": 0.18,
  "risk_level": "AMAN",
  "sentiment": "Positif",
  "generated_at": "2026-09-26T04:00:00Z",
  "generated_from": {
    "start": "2026-09-25T00:00:00Z",
    "end": "2026-09-25T23:59:59Z"
  },
  "sample_articles": [
    {
      "article_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "title": "Stok Beras Nasional Surplus 2 Juta Ton Menjelang Akhir Tahun",
      "url": "https://nasional.kompas.com/read/2026/09/26/stok-beras-surplus",
      "source": "Kompas.com",
      "published_at": "2026-09-26T02:15:00Z"
    }
  ]
}

3. Evaluasi 5 Tingkat Band Risiko (Risk Levels)

Indeks issue_dashboard mengklasifikasikan setiap isu ke dalam salah satu dari 5 band risiko keamanan & stabilitas:

Band RisikoRange Skor (avg_risk)Warna UIKarakteristik Isu
AMAN0.00 - 0.20Emerald (Hijau)Narasi positif, keberhasilan program pemerintah, situasi kondusif terkendali.
RENDAH0.21 - 0.40Blue (Biru)Gesekan opini minor, keluhan layanan administratif lokal, dinamika rutin.
SEDANG0.41 - 0.60Amber (Kuning)Polemik kebijakan publik daerah, fluktuasi harga komoditas, unjuk rasa skala kecil.
TINGGI0.61 - 0.80Orange (Jingga)Unjuk rasa buruh serentak, kelangkaan energi regional, eskalasi konflik horizontal.
KRITIS0.81 - 1.00Rose / Red (Merah)Kerusuhan massal, ancaman terorisme, bencana berskala masif, krisis konstitusional.

4. Mekanisme Pengelompokan Kartu di API (/overview/issue)

Satu artikel berita di dunia nyata seringkali mengandung banyak topik (misalnya satu artikel kriminal narkoba juga mencantumkan korupsi oknum aparat dan pencucian uang).

Pada lapisan API backend (f1-api-backend/src/feature/issue):

  1. Pengelompokan per Artikel: Baris-baris dokumen issue_dashboard dikelompokkan berdasarkan article_id dari artikel induknya, sehingga pembaca melihat 1 kartu artikel yang merangkum seluruh isu di dalamnya.
  2. Tag Analitik Dinamis: API memperkaya kartu isu dengan penanda analitik:
    • viral: Volume pemberitaan berada di persentil ke-90 pada jendela tersebut.
    • kritis: Mengandung isu dengan band risiko KRITIS.
    • multi-provinsi: Isu terdeteksi menyebar di lebih dari 1 provinsi (province_count > 1).
    • sumber-banyak: Diliput oleh banyak domain media terverifikasi (sources >= 5).
  3. Penyortiran Kartu: Kartu diurutkan secara hierarkis:
    Order by: max_risk_score DESC, total_issues DESC, title ASC

5. Ringkasan Parameter Operasional Pipeline

ParameterKonfigurasiKeterangan
Indeks Targetissue_dashboard (Elasticsearch)Klaster OLAP penopang panel Issue Discovery.
Worker Pemrosesnexa-aggregationBatch aggregator harian berbasis jendela 24 jam.
Sumber Masukanarticles (Elasticsearch & PostgreSQL)Artikel dengan enrichment label taksonomi dari worker D1.
Format Dokumen1 Dokumen per Daun TaksonomiMenjaga granularitas pencarian hingga level sub-isu terkecil.
Endpoint APIGET /overview/issueMenghasilkan struktur kartu artikel terkelompok untuk frontend Next.js.

6. Spesifikasi Payload Request Pipeline

Payload query agregasi yang dijalankan oleh worker nexa-aggregation ke indeks articles untuk mengekstrak daun isu dan bukti artikel terkait:

POST /articles/_search
{
  "size": 0,
  "query": {
    "range": {
      "processed_at": {
        "gte": "2026-09-25T00:00:00",
        "lt": "2026-09-26T00:00:00",
        "time_zone": "+07:00"
      }
    }
  },
  "aggs": {
    "by_taxonomy_leaf": {
      "terms": {
        "field": "taxonomy.lineages.keyword",
        "size": 500
      },
      "aggs": {
        "avg_risk": { "avg": { "field": "risk_score" } },
        "unique_sources": {
          "cardinality": { "field": "source_name.keyword" }
        },
        "sample_articles": {
          "top_hits": {
            "size": 3,
            "sort": [ { "processed_at": "desc" } ],
            "_source": ["id", "title", "url", "source_name", "published_at"]
          }
        }
      }
    }
  }
}

On this page