§ Ringkasan
Ringkasan berita pribadi bertenaga AI yang di-hosting sendiri dan dikirim lewat Telegram. Sistem ini memantau sejumlah feed RSS pilihan, memakai Claude (Haiku 4.5) untuk menilai setiap artikel sesuai minat pengguna, lalu mengirim ringkasan harian berisi 5–7 berita pilihan setiap pukul 7 pagi waktu setempat. Dirancang untuk satu pengguna lebih dulu, dengan arsitektur heksagonal dalam sekitar 3.500 baris kode.
§ Fitur utama
- 01Polling RSS dengan upsert tiga kemungkinan yang aman dari race condition (insert / tambah sumber / duplikat) dalam satu statement SQL
- 02Penilaian LLM terhadap profil minat yang berversi — mengubah minat hanya menilai ulang baris yang sudah usang
- 03Output terstruktur dari Claude divalidasi dengan skema Pydantic di batas API
- 04Scheduler berbasis database yang disinkronkan setiap 60 detik — tambah, jeda, atau hapus sumber dari Telegram tanpa restart
- 05Deploy dua proses (scheduler + bot worker) yang berbagi satu Postgres, keduanya dibangun dari satu Dockerfile
- 06Antarmuka sengaja hanya lewat Telegram — tanpa dashboard web, tanpa port publik, tanpa domain, tanpa TLS
- 07Cakupan tes sekitar 71% terhadap database Postgres sungguhan (tanpa mocking SQLAlchemy)
§ Tantangan & solusi
Merancang untuk satu pengguna dengan batas biaya bulanan yang tetap memengaruhi setiap keputusan arsitektur: tidak ada multi-tenancy, tidak ada dashboard web, dan tidak ada deduplikasi berbasis embedding di versi pertama. Struktur heksagonal (Protocol domain dipisah dari adapter Postgres) membuat urusan LLM dan Telegram masing-masing cukup diganti di satu file, sehingga pindah ke model lokal atau platform chat lain nanti tetap terkendali. Loop penilaiannya juga butuh kolom minat yang berversi, supaya mengubah minat lewat Telegram hanya menilai ulang baris yang usang, bukan seluruh tabel.
