Saved in:
Bibliographic Details
Main Author: Akhmad Khudri
Format: Recurso digital
Language:
Published: Zenodo 2025
Online Access:https://doi.org/10.5281/zenodo.16792529
Tags: Add Tag
No Tags, Be the first to tag this record!
Table of Contents:
  • <h1>STC Analytics — Hybrid Dashboard</h1> <p>Satu tempat buat pantau <strong>biaya gas (Vision)</strong>, <strong>temuan keamanan (SWC)</strong>, dan <strong>hasil benchmark (Bench)</strong> — cepat, ringan, dan terstruktur. Dibangun dengan <strong>Streamlit</strong> + <strong>DuckDB</strong>.</p> <p><strong>Live app:</strong> https://stc-analytics.streamlit.app/<br> <strong>GasVision (untuk sumber CSV Vision):</strong> https://stc-gasvision.streamlit.app/</p> <h2>✨ Fitur</h2> <ul> <li><strong>Cost (Vision):</strong> unggah CSV/NDJSON dari STC GasVision, lihat metrik & tren biaya gas per fungsi.</li> <li><strong>Security (SWC):</strong> unggah temuan SWC (CSV/NDJSON), filter per network/severity, heatmap <em>SWC × Severity</em>, dan <strong>SWC Knowledge</strong> (penjelasan/mitigasi dari <code>swc_kb.json</code>).</li> <li><strong>Performance (Bench):</strong> unggah hasil benchmark (<code>bench_runs.csv</code> & opsional <code>bench_tx.csv</code>), grafik TPS vs concurrency dan latensi p50/p95.</li> <li><strong>Templates & contoh data:</strong> tombol unduh di setiap tab untuk memudahkan format.</li> <li><strong>Export hasil filter:</strong> unduh CSV dari tabel yang sedang ditampilkan.</li> <li><strong>Privasi:</strong> semua data lokal di <strong>DuckDB</strong>; tidak ada pengiriman data ke pihak ketiga.</li> </ul> <h2> Quick Start (Local)</h2> <pre><code># 1) Clone git clone https://github.com/mrbrightsides/stc-analytics.git cd stc-analytics # 2) (Disarankan) Buat & aktifkan virtualenv python -m venv .venv # Windows PowerShell . .venv\Scripts\Activate.ps1 # macOS/Linux # source .venv/bin/activate # 3) Install dependency pip install -r requirements_stc.txt # 4) Jalankan streamlit run app_stc_analytics.py </code></pre> <blockquote> <p><strong>Catatan Windows:</strong> Bila PowerShell memblokir eksekusi, jalankan PS sebagai Admin lalu: <code>Set-ExecutionPolicy -Scope CurrentUser RemoteSigned</code> (setelah itu tutup PS, buka lagi).</p> </blockquote> <h2> ️ Struktur Repo (ringkas)</h2> <pre><code>stc-analytics/ ├─ app_stc_analytics.py # Aplikasi Streamlit (UI + logic) ├─ requirements_stc.txt # Daftar dependency ├─ templates/ # Template & contoh data │ ├─ vision_template.csv │ ├─ vision_sample.ndjson │ ├─ swc_findings_template.csv │ ├─ swc_findings_sample.ndjson │ ├─ bench_runs_template.csv │ └─ bench_tx_template.csv ├─ swc_kb.json # (Opsional) Pengetahuan SWC (judul, deskripsi, mitigasi) ├─ README.md # Dokumen ini └─ .gitignore </code></pre> <h2> Format Input Data</h2> <h3>1) Vision (Cost)</h3> <ul> <li><strong>CSV (dari GasVision):</strong> gunakan tombol <strong>Template CSV (Vision)</strong> atau <strong>Contoh NDJSON (Vision)</strong> di tab <strong>Cost</strong>.</li> <li>Kolom standar (contoh header CSV): <code>Network, Tx Hash, From, To, Block, Gas Used, Gas Price (Gwei), Estimated Fee (ETH), Estimated Fee (Rp), Contract, Function, Timestamp, Status</code></li> </ul> <blockquote> <p><strong>Sumber CSV:</strong> buka <strong>GasVision</strong> → pilih <strong>Network</strong> → (opsional) masukkan Tx Hash yang ingin dicek → <strong>Download CSV</strong> → unggah ke tab Cost.</p> </blockquote> <h3>2) Security (SWC)</h3> <ul> <li><strong>CSV/NDJSON</strong> dengan kolom: <code>finding_id (opsional), timestamp, network, contract, file, line_start, line_end, swc_id, title, severity, confidence, status, remediation, commit_hash</code></li> <li>Jika <code>finding_id</code> kosong, aplikasi akan mengisi otomatis <code>contract::swc_id::line_start</code> dan <em>de-dup</em> per batch.</li> </ul> <h3>3) Performance (Bench)</h3> <ul> <li><strong>bench_runs.csv:</strong> <code>run_id, timestamp, network, scenario, contract, function_name, concurrency, tx_per_user, tps_avg, tps_peak, p50_ms, p95_ms, success_rate</code></li> <li><strong>bench_tx.csv (opsional):</strong> <code>run_id, tx_hash, submitted_at, mined_at, latency_ms, status, gas_used, gas_price_wei, block_number, function_name</code></li> </ul> <h2>⚙️ Variabel Lingkungan (opsional)</h2> <ul> <li><code>EDA_DB_PATH</code> — path file DuckDB untuk penyimpanan lokal (default: <code>stc_analytics.duckdb</code>).</li> <li><code>SWC_KB_PATH</code> — path ke file pengetahuan SWC (default: <code>swc_kb.json</code>).</li> </ul> <h2> Alur Pakai (singkat)</h2> <ol> <li><strong>Upload</strong> data (CSV/NDJSON) di tab yang sesuai.</li> <li>(Opsional) aktifkan <strong>Load existing stored data</strong> untuk memuat data lokal yang sudah ada di DuckDB.</li> <li>Gunakan <strong>filter & date range</strong> untuk eksplorasi.</li> <li><strong>Export</strong> hasil filter via tombol <strong>Download CSV</strong>.</li> <li>Untuk <strong>SWC Knowledge</strong>, pastikan <code>swc_kb.json</code> tersedia (format <em>list</em> atau <em>dict</em> berindeks SWC-ID).</li> </ol> <h2> Troubleshooting</h2> <ul> <li><strong>Data tidak tampil:</strong> pastikan format kolom sesuai template; periksa encoding UTF-8; cek log saat upload.</li> <li><strong>PK/duplikasi:</strong> untuk SWC, <code>finding_id</code> unik. Kosong? Aplikasi membuat fallback <code>contract::swc_id::line_start</code>.</li> <li><strong>DuckDB terkunci:</strong> tutup sesi Streamlit lain yang masih mengakses file DB, lalu jalankan ulang.</li> <li><strong>Performa lambat:</strong> bagi file besar menjadi beberapa berkas; kurangi jumlah kolom non-esensial saat eksplorasi.</li> </ul> <h2> ️ Roadmap (ringkas)</h2> <ul> <li>Tambah date range picker untuk Vision (berbasis sumber data).</li> <li>Ringkasan otomatis temuan SWC per kontrak.</li> <li>Penyimpanan konfigurasi user (dark/light, default network).</li> </ul> <h2> Lisensi</h2> <p>MIT — silakan gunakan dan sesuaikan sesuai kebutuhan.</p> <h2> Kontribusi & Kontak</h2> <ul> <li>Laporkan bug/fitur baru: <strong>Issues</strong> pada repo.</li> <li>Hubungi: https://github.com/mrbrightsides</li> </ul>