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
Menarik subset dokumen berita dan media sosial berdasarkan jendela waktu pemantauan.
Menghitung agregasi volume postingan, rasio sentimen positif/negatif, dan lonjakan isu seketika.
Mengelompokkan isu berdasarkan 38 provinsi di Indonesia untuk kebutuhan visualisasi peta digital twin.
Menyimpan tabel agregasi ke database relasional dan memperbarui cache Redis untuk respons API instan.
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)- Kalkulasi Baseline 7 Hari:
Sistem menghitung rata-rata kemunculan artikel per jam
Mean(V_baseline)dan standar deviasinyaSigmaselama periode 7 hari sebelumnya untuk topik yang sama. - 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). - 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).
- Nilai positif (
3. Struktur Dokumen di Elasticsearch trending_topics
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"
}
}4. Rekonstruksi Sebutan Artikel (Trending Mentions)
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:
- Frontend memanggil endpoint API
GET /trending-topics/:id/mentions. - Backend merekonstruksi daftar artikel yang relevan dengan melakukan query pencarian teks ke indeks
articlesberdasarkan kombinasi frasaissuedantaxonomy.leaf. - 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
| Parameter | Konfigurasi | Keterangan |
|---|---|---|
| Indeks Target | trending_topics (Elasticsearch) | Klaster OLAP penopang panel Trending Topics. |
| Worker Pemroses | nexa-aggregation | Velocity engine dan daily ranking aggregator. |
| Batas Ranking | Top 10 per Hari (Window 24h) | Menampilkan 10 isu teratas dengan volume dan lonjakan tertinggi. |
| Formula Anomali | Ambang batas 3.5 * Sigma | Mendeteksi ledakan berita viral yang tidak biasa. |
| Endpoint API | GET /trending-topicsGET /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 }
}
}
}
}
}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.
pillar_intelligence
Alur sintesis penalaran LLM batch harian (03:00 WIB) untuk menghasilkan rekomendasi mitigasi pimpinan ke dalam indeks Elasticsearch pillar_intelligence.