Nexa Intelligence Docs
Pipeline Data

trending_topics

Alur deteksi lonjakan kecepatan isu (velocity spike 3.5x SD), kalkulasi peringkat tren harian (Top 10), dan pengisian indeks Elasticsearch trending_topics untuk panel Trending Topics dan mentions.

Pipeline Data: trending_topics (Tren Topik Nasional)

Pipeline ini bertugas mendeteksi pergeseran topik pembicaraan publik terpopuler, menghitung momentum pergerakan peringkat isu (Top 10), serta mengidentifikasi anomali lonjakan kemunculan berita secara mendadak (velocity spike) untuk diindeks ke dalam indeks Elasticsearch trending_topics.

Berbeda dari issue_dashboard yang berfokus pada pemetaan band risiko dari seluruh daun taksonomi, indeks trending_topics berfokus pada peringkat popularitas (rank #1 s.d. #10), volume liputan media (article_count), dan dinamika percepatan narasi harian (trend trajectory).

Indeks ini menjadi pemasok data utama untuk widget Trending Topics di layar /dashboard/overview (GET /trending-topics) dan modal detail sebutan artikel (GET /trending-topics/:id/mentions).


1. Ringkasan Arsitektur Alur

[C2 Deduplication Worker & PostgreSQL: articles]
(Artikel unik & artikel sindikasi anak dari seluruh portal media)
                       │
                       ▼
           [nexa-aggregation Worker]
           • Hitung volume kemunculan artikel per topik per jendela 24 jam
           • Bandingkan volume per jam (Vt) terhadap baseline historis 7 hari
           • Evaluasi ambang batas lonjakan: Vt > Mean(V_baseline) + (3.5 * Sigma)
           • Hitung delta pergerakan peringkat (trend: naik / turun / baru)
           • Ekstraksi entitas kunci (top_entities) & frasa dominan (top_keywords)
                       │
                       ▼
        [Elasticsearch: trending_topics]
        (1 dokumen per topik peringkat harian, period: 24h)
                       │
                       ├─────────────────────────────────────┐
                       ▼                                     ▼
        [GET /trending-topics]             [GET /trending-topics/:id/mentions]
        (Daftar Top 10 Tren Nasional)      (Rekonstruksi artikel rujukan via ES)

ALUR AGGREGATION WORKER (`nexa-aggregation`)

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

01. Query Windowed Indices [Elasticsearch: 1h / 24h / 7d]

Mengambil snapshot artikel berita & postingan media sosial dalam rentang jendela waktu bergerak.

02. Compute Statistical Rollups [Trend Velocity • Sentiment Ratio]

Menghitung lonjakan isu per pilar, pergeseran polaritas opini publik, dan anomali frekuensi.

03. Regional Risk Aggregation [38 Provinsi • Kab/Kota]

Mengagregasikan status kerawanan wilayah untuk visualisasi choropleth map pada Digital Twin.

04. Multi-Sink Persistence & Caching [7 Indeks Elasticsearch • Redis Cache]

Menulis dokumen teragregasi siap-baca ke Elasticsearch dan memanaskan Redis cache untuk API sub-50ms.


2. Mesin Deteksi Kecepatan (Velocity Spike Engine)

Worker nexa-aggregation memantau laju pergerakan setiap topik secara berkala dengan algoritma statistik deteksi lonjakan anomali:

Formula Ambang Batas Lonjakan (Velocity Spike):
Vt > Mean(V_baseline) + (3.5 * Sigma)
  1. Kalkulasi Baseline 7 Hari: Sistem menghitung rata-rata kemunculan artikel per jam Mean(V_baseline) dan standar deviasinya Sigma selama periode 7 hari sebelumnya untuk topik yang sama.
  2. Evaluasi Laju Terkini (Vt): Jika laju kemunculan artikel dalam jendela terkini melampaui 3.5x standar deviasi di atas rata-rata baseline, topik tersebut otomatis ditandai sebagai mengalami lonjakan viralitas mendadak (Velocity Spike).
  3. Penentuan Nilai trend: Worker membandingkan posisi peringkat hari ini terhadap hari sebelumnya:
    • Nilai positif (+1, +2, ...): Peringkat naik dibandingkan hari sebelumnya.
    • Nilai nol (0): Peringkat stagnan / stabil.
    • Nilai negatif (-1, -2, ...): Peringkat menurun.
    • Nilai null: Topik baru muncul pertama kali pada jendela hari ini (new entry).

Worker menerbitkan tepat satu dokumen per topik per jendela harian (period: 24h):

{
  "_id": "trend_swasembada_energi_2026-09-26",
  "rank": 1,
  "issue": "Akselerasi Transisi Pembangkit Listrik EBT",
  "taxonomy": {
    "l1": "Energi",
    "l2": "Ketenagalistrikan",
    "l3": "Energi Terbarukan",
    "leaf": "Pembangkit Listrik Tenaga Surya"
  },
  "article_count": 86,
  "avg_risk": 0.24,
  "risk_level": "RENDAH",
  "sentiment": "Positif",
  "province": "DKI Jakarta",
  "top_entities": ["Kementerian ESDM", "PLN", "Bahlil Lahadalia"],
  "top_keywords": ["PLTS", "surplus listrik", "transisi energi"],
  "similarity": {
    "avg_score": 0.88,
    "duplicate_pair": 14
  },
  "trend": 2,
  "representative_article_id": "a9182374-f321-4a90-8e12-b09182374abc",
  "generated_at": "2026-09-26T04:00:00Z",
  "generated_from": {
    "start": "2026-09-25T00:00:00Z",
    "end": "2026-09-25T23:59:59Z"
  }
}

Dokumen di indeks trending_topics tidak menyimpan seluruh isi artikel di dalamnya untuk menjaga efisiensi penyimpanan (storage footprint).

Ketika pengguna mengklik salah satu baris topik tren di dashboard:

  1. Frontend memanggil endpoint API GET /trending-topics/:id/mentions.
  2. Backend merekonstruksi daftar artikel yang relevan dengan melakukan query pencarian teks ke indeks articles berdasarkan kombinasi frasa issue dan taxonomy.leaf.
  3. Menghasilkan daftar artikel rujukan yang memuat judul, nama penerbit portal media, waktu terbit, dan cuplikan kalimat yang menyebutkan isu tersebut.

5. Ringkasan Parameter Operasional Pipeline

ParameterKonfigurasiKeterangan
Indeks Targettrending_topics (Elasticsearch)Klaster OLAP penopang panel Trending Topics.
Worker Pemrosesnexa-aggregationVelocity engine dan daily ranking aggregator.
Batas RankingTop 10 per Hari (Window 24h)Menampilkan 10 isu teratas dengan volume dan lonjakan tertinggi.
Formula AnomaliAmbang batas 3.5 * SigmaMendeteksi ledakan berita viral yang tidak biasa.
Endpoint APIGET /trending-topics
GET /trending-topics/:id/mentions
Memasok widget tren di layar utama dan modal investigasi artikel.

6. Spesifikasi Payload Request Pipeline

Payload query agregasi harian yang dijalankan oleh worker nexa-aggregation ke indeks articles untuk menyusun peringkat topik:

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_topic": {
      "terms": {
        "field": "taxonomy.level_2.keyword",
        "size": 50
      },
      "aggs": {
        "avg_risk": { "avg": { "field": "risk_score" } },
        "dominant_sentiment": {
          "terms": { "field": "sentiment.label", "size": 1 }
        },
        "top_entities": {
          "terms": { "field": "entities.name.keyword", "size": 5 }
        }
      }
    }
  }
}

On this page