2026.07.08 (Rab)
2026.07.16 (Kam) diperbarui

โœจ Ringkasan GPT-5.5

Catatan tentang bagaimana, saat memindahkan data acuan yang terus berubah di antara JSON, CSV, dan DuckDB ke PostgreSQL, aku memisahkan evidence sumber, observation, data acuan, snapshot eksekusi, dan artefak delivery.

Data acuan terus berubah di antara JSON, CSV, dan DuckDB

Selama beberapa hari, saat men-setup flow pengumpulan, review, eksekusi, dan delivery data, berbagai masalah terus muncul. Karena aku memang belum pernah benar-benar belajar atau menangani DB, cara menyimpan data sering berubah, dan setiap perubahan tidak pernah selesai sebagai penggantian sederhana.

Awalnya data dikumpulkan dalam JSON/CSV, lalu DuckDB dipasang untuk melihatnya. Namun artefak worker bercampur dengan struktur tempat coordinator terus membangun ulang DB, sehingga batas antara data sumber dan data acuan terus berubah.

Aku juga sempat membuat rencana untuk membangun DB dengan MySQL. Tapi masalahnya bukan MySQL itu sendiri, melainkan struktur di mana beberapa worker atau script langsung memperbarui data acuan. Dengan cara itu, masalah concurrent update, konflik, ownership, dan rollback kemungkinan besar akan terus berulang.

Setelah itu aku juga meninjau berbagai alternatif, tetapi masalah intinya sama. Kalau batas antara data yang dikumpulkan, data acuan, data eksekusi, dan artefak delivery kabur, masalah yang sama akhirnya muncul lagi.

Yang utama bukan jenis DB yang dipakai, melainkan tanggung jawab atas mutasi

Pindah ke PostgreSQL tidak otomatis menyelesaikan masalah. Sebelum menentukan DB mana yang dipakai, aku harus menetapkan siapa yang boleh mengubah data acuan.

Worker meninggalkan evidence sumber dan observation secara append-only. Mereka tidak langsung mengubah data acuan. Coordinator mereview evidence dan observation, lalu memperbarui data acuan dan nilai acuan. Dengan memusatkan tanggung jawab untuk mengubah data acuan di satu tempat, aku juga bisa melacak apa yang perlu dipulihkan ketika terjadi konflik.

Aku memisahkan peran di dalam PostgreSQL

Jadi hari ini, sambil pindah ke PostgreSQL, aku juga merapikan seluruh flow yang sudah disetup selama beberapa hari. Alih-alih memperlakukan semuanya sebagai satu bongkahan DB, aku memisahkan perannya.

  • Evidence sumber
    • Menyimpan bukti dan nilai asli yang dikumpulkan dari sumber publik
    • Nilai yang sudah diproses dan statusnya dicatat dalam riwayat terpisah tanpa menimpa sumber
    • File JSON/CSV boleh menjadi mirror evidence, tetapi bukan data acuan
  • Observation
    • Setiap worker hanya mengirimkan nilai yang diamati dari channel pengumpulannya ke ledger append-only
    • Discovery dan enrichment dipisahkan menjadi peran yang berbeda
    • Worker tidak langsung mengubah data acuan
  • Data acuan
    • Coordinator mereview evidence dan observation
    • Hanya nilai yang sudah direview yang dimasukkan ke data acuan sesuai struktur yang ditentukan
    • View dipakai sebagai permukaan untuk perhitungan, review, dan export
  • Snapshot eksekusi
    • View pengumpulan tidak langsung dipakai sebagai dasar eksekusi yang sebenarnya
    • Target yang lolos deduplikasi dan quality gate dikunci sebagai snapshot pada satu titik waktu
    • Hasil eksekusi serta status pengecualian dan tindak lanjut dikelola terpisah dari data acuan
  • Artefak delivery
    • File untuk CSV, Google Sheet, Excel, atau vox.ai dibuat dari data acuan atau snapshot eksekusi
    • Itu adalah artefak untuk ditampilkan atau dikirim
    • Artefak tidak diubah lagi seolah-olah merupakan data acuan

Evidence, eksekusi, dan delivery kini bisa dilacak

Dengan begitu, flow yang bisa melacak di mana evidence terkumpul, apa yang ditinggalkan worker, nilai mana yang menjadi acuan, snapshot mana yang dipakai untuk eksekusi nyata, dan apa yang menjadi artefak delivery akhirnya terbentuk.

Tentu, struktur ini masih banyak kekurangan, jadi masih banyak yang harus disentuh. Aku akan terus menguji, menerima feedback, dan memperbaiki, dan mungkin akan ada berbagai perubahan besar lagi. Dengan begitu flow, struktur harness, dan intuisiku juga akan terus berkembang.

Aku membagikannya karena mungkin cara men-setup flow ini bisa membantu seseorang.

Tinggalkan komentar