Aplikasi CLI berbasis Playwright untuk membantu otomatisasi isian field GC berdasarkan data Excel, dilengkapi log untuk pemantauan. Tersedia GUI berbasis PyQt5 + QFluentWidgets untuk pengguna non-terminal.
Tersedia dua versi: GUI dan Script atau Terminal. Alur singkatnya: mulai dari Persiapan (Python dan Git), lanjut ke Unduh Project dan Instal Dependensi, siapkan File Excel, lalu jalankan via GUI atau Script atau Terminal, jangan lupa Konfigurasi Akun SSO jika memilih via terminal.
Jika ingin langsung menggunakan versi Installer GUI, lihat packaging. Tersedia juga versi .exe yang siap pakai, lihat di https://drive.google.com/drive/folders/1VxFIrrrOWCIpvV0NofT4r3zBD1O5CGhZ?usp=sharing. Namun, sebaiknya baca dokumentasi ini dulu agar alur kerjanya lebih jelas.
- Ringkasan
- Struktur Folder
- Persiapan (Python dan Git)
- Unduh Project
- Instal Dependensi
- File Excel
- Cara Menjalankan - GUI
- Detail Mode Validasi GC (GUI)
- Cara Menjalankan - Script atau Terminal
- Konfigurasi Akun SSO
- Catatan
- Output Log Excel
- Kredit
.
|- dirgc/ # Modul utama aplikasi
| |- browser.py # Util Playwright: login/redirect DIRGC, filter, rate limit, pilih hasil GC
| |- cli.py # Parsing argumen CLI + orkestrasi run (Playwright -> proses Excel)
| |- credentials.py # Load kredensial dari env/JSON + fallback path
| |- excel.py # Baca Excel + normalisasi kolom/nilai (idsbr, nama, alamat, koordinat, hasil_gc)
| |- logging_utils.py # Logger konsol + formatter (juga untuk GUI via handler)
| |- matching.py # Pencocokan usaha dari hasil filter (token match + scoring)
| |- processor.py # Proses utama per baris Excel: filter, pilih usaha, isi form, submit, log
| |- run_logs.py # Generate path & tulis file log Excel (logs/run/YYYYMMDD/runN_HHMM.xlsx)
| |- settings.py # Konstanta & default config (URL, timeout, file default, dsb)
| `- gui/ # GUI (PyQt5 + QFluentWidgets)
| `- app.py # Seluruh UI: halaman Run/Update/Validasi GC/Recap/SSO/Settings + worker thread
|- config/ # Konfigurasi lokal (contoh: credentials)
|- data/ # File input (Excel)
|- logs/ # Output log per run/update (Excel)
|- run_dirgc.py # Entry point CLI (wrapper -> dirgc.cli.main)
|- run_dirgc_gui.py # Entry point GUI (wrapper -> dirgc.gui.app.main)
|- requirements.txt
`- README.md
Bagian ini untuk pengguna awam. Jika Python dan Git sudah terpasang, lanjut ke Unduh Project.
Unduh dan instal Python 3 dari: https://www.python.org/downloads/
Saat instalasi di Windows, centang opsi "Add Python to PATH", lalu lanjutkan sampai selesai.
Unduh dan instal Git dari: https://git-scm.com/downloads
Buka PowerShell atau CMD, lalu jalankan:
python --versionContoh output yang benar:
Python 3.11.6
Lalu cek Git:
git --versionContoh output yang benar:
git version 2.44.0.windows.1
Jika python tidak dikenali, tutup dan buka ulang terminal. Jika masih gagal, ulangi instalasi Python dan pastikan opsi "Add Python to PATH" dicentang.
Buka PowerShell atau CMD, lalu jalankan perintah berikut satu per satu:
git clone https://github.com/bpskabbulungan/otomatisasidirgc-6502.gitPerintah di atas mengunduh project dari GitHub.
cd otomatisasidirgc-6502Perintah di atas masuk ke folder project (wajib sebelum menjalankan perintah lain).
Pastikan masih berada di folder project otomatisasidirgc-6502, lalu jalankan:
python -m pip install -r requirements.txtPerintah di atas menginstal semua library Python yang dibutuhkan.
python -m playwright install chromiumPerintah di atas mengunduh browser Chromium yang diperlukan Playwright. Cukup dijalankan sekali per environment.
Default: data/Direktori_SBR_20260114.xlsx (bisa diganti via --excel-file).
Jika file tidak ditemukan, sistem akan mencoba Direktori_SBR_20260114.xlsx di root project.
Kolom yang dikenali:
idsbrnama_usaha(ataunama usaha/namausaha/nama)alamat(ataualamat usaha/alamat_usaha)latitude/latlongitude/lon/longhasil_gc/hasil gc/hasilgc/ag/keberadaanusaha_gc
Kode hasil_gc yang valid:
- 0 / 99 = Tidak Ditemukan
- 1 = Ditemukan
- 3 = Tutup
- 4 = Ganda
Jika kolom hasil_gc tidak ditemukan, sistem memakai kolom ke-6 (keberadaanusaha_gc).
GUI direkomendasikan untuk pengguna non-terminal. Pastikan semua langkah di atas sudah dilakukan.
Jalankan perintah berikut dari folder project:
python run_dirgc_gui.pySetelah GUI terbuka:
- Buka menu
Akun SSO, isi username dan password jika ingin auto-login. - Pilih file Excel (atau pastikan file default sudah ada di
data/). - Buka menu
Rununtuk input baru,Updateuntuk edit hasil GC, atauValidasi GCuntuk kirim laporan validasi. - Klik tombol mulai/update/validasi sesuai menu yang dipilih.
- Di menu
UpdatedanValidasi GC, pilih field yang ingin diproses (Hasil GC, Nama, Alamat, Koordinat). Jika field dipilih tetapi nilai Excel kosong, baris akan ditolak (statusgagal), kecuali koordinat. Untuk koordinat, boleh isi salah satu saja (latitude atau longitude) atau kosong seluruhnya. - Jika sering muncul pesan Something Went Wrong saat submit, buka menu
Mode Stabilitasdan pilih mode agar jeda antar submit lebih panjang dan 429 lebih jarang muncul.
- Beranda: ringkasan singkat fungsi aplikasi dan cara pakai.
- Akun SSO: tempat mengisi kredensial SSO untuk auto-login (tidak disimpan ke file).
- Run: proses input GC dari Excel (operasional utama).
- Update: memperbarui data via tombol Edit Hasil (Hasil GC/Nama/Alamat/Koordinat).
- Validasi GC: validasi data via tombol Laporkan Hasil GC - Tidak Valid (Hasil GC/Nama/Alamat/Koordinat) dan submit KIRIM LAPORAN.
- Recap: menarik semua data via API dan menyimpan Excel rekap di
logs/recap/
Output otomatis terpisah 3 sheet: Sudah GC, Belum GC, Duplikat. - Mode Stabilitas: memilih profil rate limit untuk mengurangi HTTP 429.
- Settings: pengaturan lanjutan (idle timeout, web timeout, skala font, dsb).
Menu Validasi GC memakai alur seperti Update, tetapi tombol aksi pada kartu usaha berbeda:
- Filter data berdasarkan
idsbr/nama_usaha/alamatdari Excel. - Buka kartu usaha hasil cocok.
- Klik tombol Laporkan Hasil GC - Tidak Valid (
.btn-gc-report). - Isi form validasi report:
#report_hasil_gc#report_toggle_edit_nama+#report_nama_usaha_gc#report_toggle_edit_alamat+#report_alamat_usaha_gc#report_latitudedan#report_longitude
- Klik tombol KIRIM LAPORAN (
#submit-report-gc-btn). - Sistem membaca validasi dari web (SweetAlert/form validation). Jika muncul pesan error
seperti
Opsi keberadaan usaha hasil gc harus terisi!, baris ditandaigagaldan pesan disimpan ke kolomcatatanpada log.
Jalankan perintah berikut dari folder project:
python run_dirgc.pyPerintah ini akan menggunakan file Excel default di data/ dan mencoba auto-login jika kredensial tersedia.
python run_dirgc.py --excel-file data/Direktori_SBR_20260114.xlsx --credentials-file config/credentials.jsonPerintah di atas memakai file Excel tertentu dan kredensial dari file JSON.
python run_dirgc.py --start 1 --end 5Perintah di atas hanya memproses baris 1 sampai 5 (1-based, inklusif).
--headlessuntuk menjalankan browser tanpa UI (SSO sering butuh mode non-headless).--idle-timeout-msuntuk batas idle (default 1800000 / 30 menit).- Rekap via
--recapmenghasilkan Excel dengan 3 sheet:Sudah GC,Belum GC,Duplikat. --recap-backup-everyuntuk mengatur backup.baksetiap N batch (default: 10, gunakan 0 untuk mematikan).--web-timeout-suntuk toleransi loading web (default 300 detik).--manual-onlyuntuk selalu login manual (tanpa auto-fill kredensial).--dirgc-onlyuntuk berhenti di halaman DIRGC (tanpa filter/input).--edit-nama-alamatuntuk mengaktifkan toggle edit Nama/Alamat Usaha dan isi dari Excel.--keep-openuntuk menahan browser tetap terbuka setelah proses (default aktif). Gunakan--no-keep-openuntuk menutup otomatis.--update-modeuntuk menggunakan tombol Edit Hasil (update data).--validate-gc-modeuntuk mode validasi GC dari Excel (klik tombol Laporkan Hasil GC - Tidak Valid lalu submit KIRIM LAPORAN).--validate-gc-previewuntuk uji cepat buka form validasi dari card target (tanpa proses batch Excel).--prefer-web-coordsuntuk mempertahankan koordinat yang sudah terisi di web.--update-fieldsuntuk memilih field yang diproses saat--update-mode/--validate-gc-mode(contoh:hasil_gc,nama_usaha,alamat,koordinat).--rate-limit-profileuntuk mengatur kecepatan submit (normal/safe/ultra).--submit-mode requesttidak dipakai pada--validate-gc-mode(otomatis fallback keui).
Auto-login akan mencoba kredensial terlebih dulu; jika gagal/OTP muncul, akan beralih ke manual login. Secara default, koordinat diisi dari Excel (jika ada), meskipun web sudah berisi.
Untuk CLI, buat file config/credentials.json dengan isi berikut:
{
"username": "usernamesso",
"password": "passwordsso"
}Atau gunakan environment variables:
DIRGC_USERNAMEDIRGC_PASSWORD
Pencarian file kredensial juga mendukung fallback credentials.json di root project. Jika file dan environment variables tersedia, isi file akan diprioritaskan.
Untuk GUI, isi kredensial lewat menu Akun SSO (tidak disimpan ke file).
- Untuk login SSO, mode non-headless disarankan.
- Log terminal sudah diperkaya dengan timestamp dan detail langkah.
Setiap run akan menghasilkan file log Excel di folder logs/run/YYYYMMDD/.
Untuk mode update/validasi GC, log berada di logs/update/YYYYMMDD/.
Nama file mengikuti pola run{N}_{HHMM}.xlsx (contoh: run1_0930.xlsx).
Untuk rekap (--recap / menu Recap), file output ada di logs/recap/YYYYMMDD/
dengan nama rekap{N}_{HHMMSS}.xlsx. Penyimpanan rekap dibuat aman per batch:
- Sebelum menulis, file lama dibackup menjadi
.bak. - File baru ditulis ke file sementara, lalu di-
replacesecara atomik. - Jika file sedang terkunci (mis. dibuka di Excel), bisa muncul file
.new. Tutup Excel, lalu rename.newmenjadi.xlsx. Proses rekap tetap berjalan.
Jika terjadi error di batch tengah, batch sebelumnya tetap aman di file utama
atau backup .bak.
Frekuensi backup bisa diatur via --recap-backup-every (contoh: --recap-backup-every 5).
Kolom log:
noidsbrnama_usahaalamatkeberadaanusaha_gclatitudelatitude_source(web/excel/empty/missing/unknown)latitude_beforelatitude_afterlongitudelongitude_source(web/excel/empty/missing/unknown)longitude_beforelongitude_afterhasil_gc_beforehasil_gc_afternama_usaha_beforenama_usaha_afteralamat_beforealamat_afterstatus(berhasil/gagal/error/skipped)catatan
Nilai skipped biasanya muncul jika data sudah GC atau terdeteksi duplikat.
Semoga panduan ini membantu. Jika ada pertanyaan, hubungi tim IPDS BPS Kabupaten Bulungan.