Ekstensi Chrome untuk otomatisasi ekstraksi data dari portal FASIH BPS dengan arsitektur modular, manajemen JWT otomatis, dan export lengkap.
Mulai Cepat · Fitur · Arsitektur · Instalasi · Konfigurasi · Changelog
BPS Automation adalah ekstensi browser Chromium yang mengotomatisasi ekstraksi data dari portal FASIH BPS (Badan Pusat Statistik) dan menyediakan kemampuan Manajemen Mitra yang komprehensif. Dibangun untuk enumerator dan administrator BPS, ekstensi ini menyederhanakan pengumpulan data survei, alokasi pengguna, dan pelacakan mitra dengan arsitektur ES6 modular yang modern.
Prasyarat: Chrome 88+ atau Edge 88+ (browser berbasis Chromium)
# 1. Clone repository
git clone https://github.com/akhirmbrk/bps-automation.git
cd bps-automation
# 2. Muat sebagai ekstensi
# Buka chrome://extensions/ → Mode Pengembang → Muat Ekstensi Terbongkar → Pilih folder iniEkstrak data survei dalam tiga mode: Dasar (data inti), Ekstra (data pra-terdefinisi), dan Detail (jawaban lengkap). Mendukung export CSV dan Excel dengan cache riwayat yang kedaluwarsa otomatis.
Kelola data mitra KEPKA dengan profil lengkap. Lihat riwayat partisipasi survei dan status ujian. Cari, filter, dan export data mitra dengan mudah.
Upload template Excel untuk mengalokasikan enumerator. Resolusi hierarki wilayah otomatis dengan pelacakan progress real-time dan rate limiting yang dapat dikonfigurasi.
Secara otomatis mengekstrak dan mempertahankan token JWT dari manajemen-mitra.bps.go.id melalui content script, menghilangkan kebutuhan input token manual.
Toast pemeriksaan sesi modern dengan loading state dan kartu status floating untuk memverifikasi kesehatan sesi sekilas.
Dukungan mode gelap penuh dengan desain responsif yang berfungsi di desktop dan tablet.
┌─────────────────────────────────────────────────────┐
│ Dashboard (HTML/CSS) │
├─────────────────────────────────────────────────────┤
│ App Controller (app.js) │
├───────────┬───────────┬───────────┬─────────────────┤
│ Auth │ Surveys │ Scraper │ Exporter │
│ Module │ Module │ Module │ Module │
├───────────┴───────────┴───────────┴─────────────────┤
│ Infrastruktur Inti │
│ ┌─────────┬─────────┬──────────┬────────┐ │
│ │API │Config │Event Bus │Logger │ │
│ │Client │Manager │(Pub/Sub) │ │ │
│ └─────────┴─────────┴──────────┴────────┘ │
├─────────────────────────────────────────────────────┤
│ Lapisan Ekstensi Chrome │
│ ┌──────────────┬──────────────────────────────────┐ │
│ │Background.js │Content Scripts (JWT Injection) │ │
│ └──────────────┴──────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘
Prinsip Desain:
- Event-driven — Modul berkomunikasi melalui EventBus terpusat (pola pub/sub)
- Singleton services — Setiap modul mengekspor satu singleton instance untuk state konsisten
- Centralized constants — Semua magic numbers dan konfigurasi ada di
constants.js
# Install dependencies
npm install
# Jalankan linter
npm run lint
# Format kode otomatis
npm run format-
Clone repository
git clone https://github.com/akhirmbrk/bps-automation.git cd bps-automation -
Buka Ekstensi Chrome — Navigasi ke
chrome://extensions/ -
Aktifkan Mode Pengembang — Klik toggle di pojok kanan atas
-
Muat Ekstensi Terbongkar — Klik "Muat ekstensi yang dibongkar" dan pilih folder repository (yang berisi
manifest.json) -
Verifikasi — Ikon BPS Automation akan muncul di toolbar Anda
- Login ke https://fasih-sm.bps.go.id di browser
- Login ke https://manajemen-mitra.bps.go.id (untuk fitur Mitra)
- Klik ikon BPS AUTOMATION di toolbar
- Dashboard akan terbuka di tab baru
Ekstensi menggunakan constants terpusat di src/constants.js. Pengaturan utama:
| Pengaturan | Default | Deskripsi |
|---|---|---|
| URL FASIH | https://fasih-sm.bps.go.id |
URL server FASIH |
| URL Mitra API | https://mitra-api.bps.go.id |
Endpoint API Mitra |
| Rate Limit | 300ms |
Jeda antar request API |
| Detail Rate Limit | 100ms |
Jeda untuk mode detail |
| Batch Size | 100 |
Record per request |
| Max Pagination | 50 |
Halaman pagination maksimal |
- Tidak ada kredensial hardcoded — Autentikasi menggunakan cookie sesi browser
- JWT disimpan dengan aman — Token disimpan di
chrome.storage.local(dienkripsi oleh Chromium) - Rate limiting — Jeda built-in mencegah overload API dan server
- CSP compliant — Content Security Policy dikonfigurasi dengan benar untuk lingkungan ekstensi Chrome
bps-automation/
├── manifest.json # Manifest ekstensi Chrome v3
├── background.js # Service worker (messaging, cookies)
├── dashboard.html # Dashboard UI utama
├── main.css # Stylesheet
├── xlsx.full.min.js # Library SheetJS untuk export Excel
├── .gitignore # Aturan git ignore
├── content/
│ └── mitra-jwt-inject.js # Content script untuk JWT extraction
├── icons/ # Ikon ekstensi
└── src/
├── app.js # Aplikasi utama (controller)
├── constants.js # Konstanta & konfigurasi terpusat
├── core/ # Modul infrastruktur
├── modules/ # Modul fitur
└── storage/ # Cache riwayat
Kami menerima kontribusi! Baca CONTRIBUTING.md untuk panduan lengkap termasuk standar kode, proses pull request, dan commit message guide.
Melaporkan kerentanan? Baca SECURITY.md untuk proses pelaporan.
🔧 Perbaikan
- App/kode-duplikat: hapus fungsi duplikat
updateJwtStatus,checkJwtStatus, dancheckAllSessionsagar handler JWT/session yang rusak tidak lagi menyebabkan error saat runtime - App/filterAkunMitra: hapus fungsi duplikat
filterAkunMitraagar pencarian data cache berjalan benar tanpa mengubah data service - Utils/debounce: perbaiki binding
thispada fungsi debounce dan throttle agar bekerja benar di luar konteks class
✨ Perubahan Baru
- App/JWT: tambah fitur auto-capture JWT dari manajemen-mitra.bps.go.id via content script agar autentikasi terjaga tanpa input token manual
- App/monitoring-sesi: tambah kartu status floating dan toast pemeriksaan sesi modern dengan loading state agar pengguna bisa verifikasi status sesi sekilas
- Constants/konfigurasi: gabungkan magic numbers ke konstanta bernama agar konfigurasi terpusat dan mudah dikelola
📈 Peningkatan
- Code/konsistensi: standarisasi penamaan, optional chaining, dan sintaks ES6+ modern di semua modul agar kode mengikuti praktik terbaik industri
- Code/pembersihan: hapus kode tak terjangkau, fungsi mati, dan import tidak perlu agar ukuran bundle dan kompleksitas berkurang
- Struktur: pindahkan semua file dari folder
extension/ke root repository agar struktur ekstensi Chrome mengikuti konvensi standar
BPS Kabupaten Kutai Kartanegara
Penggunaan internal — BPS Kabupaten Kutai Kartanegara