Masalah
Mencatat uang sering berhenti di aplikasi kedua. Transaksinya sudah lewat di chat, tetapi mencatatnya berarti membuka aplikasi lain, memilih kategori, dan mengisi formulir. Bagi pemilik usaha kecil, pekerjaan itu jatuh ke malam hari atau tidak dikerjakan sama sekali. Catatan lalu tidak cocok dengan saldo, dan laporan bulanan kehilangan gunanya.
Yang kami bangun
Bot Telegram yang menerima teks bebas berbahasa Indonesia. "kopi 25rb", "gaji 5jt dari BCA", dan "listrik 350000 admin 2500" dibaca menjadi jenis transaksi, nominal, akun, biaya admin, dan kategori. Kalau ada yang ambigu, bot bertanya lewat tombol, bukan menebak diam-diam.
Di dalamnya ada akun tunai, bank, e-money, piutang, dan pinjaman; kategori dengan alias; perintah /tambah, /saldo, /ringkas, /riwayat, /hapus, /hutang, /cicilan, /kata, dan /export CSV. Laporan mencakup bulan, triwulan, dan tahun. Pengingat cicilan dan ringkasan harian pemilik berjalan dari penjadwal yang sama.
Pendaftaran disetujui manual, dengan masa coba dan langganan bulanan atau tahunan lewat transfer atau QRIS. Database SQLite dimigrasikan dengan Alembic, setiap pengguna hanya melihat datanya sendiri, dan log audit disimpan di berkas terpisah dari container.
Tidak ada webhook dan tidak ada port publik. Bot berjalan dengan long polling, satu proses, dan Docker Compose. Pekerjaan malam membaca koreksi pengguna: alias pribadi dipasang setelah kata yang sama diulang, sedangkan alias global menunggu beberapa pengguna sepakat.
Hasil
Berjalan sebagai bot Telegram di https://t.me/JumlahinBot. Satu transaksi cukup satu pesan, koreksi terakhir bisa dihapus, dan ekspor CSV membuka jalan ke spreadsheet tanpa mengunci data di dalam bot.
Suite tes mencakup parser, ledger, alur bot dengan sesi Telegram palsu, ekspor, dan lisensi. Image dibangun ulang tanpa kehilangan database atau log karena keduanya berada di volume, dan SQLite tetap bisa dicadangkan sebagai satu berkas.
