2025.02.05 (Rab)
2026.05.25 (Sen) diperbarui

โœจ Ringkasan GPT ใ€€

Mengimplementasikan Diary to Chat, menyelesaikan masalah yang muncul dalam proses pembuatan, serta memperbaiki kesalahan skor emosi dan pengaturan karakter pada sistem komentar AI.

๐Ÿ’ป Log Pengembangan

โฐ Tugas hari ini

  • โœ… Custom Function - membantu membuat systemPromptTemplate (pekerja utama: KSK)
    • โœ… Meninjau parameter yang ditambahkan dan struktur internal fungsi
  • โœ… Menguji apakah Custom Function - getAIComment benar-benar diterapkan
    • โœ… Memastikan nilai input tercermin dengan baik
    • โœ… Memastikan nilai output keluar dengan baik sebagai String
  • โœ… Chat Page - Create New Chat: menerapkan system prompt (pekerja utama: KSK)
    • โœ… OpenAI API Call (createChatCompletion)
      • Input: System Prompt(Chat)
      • Output: New Chat Message by AI($.choices[0].message.content)
      • Additional Actions: Create New Chat, Create New Message
  • โœ… DiaryPage - Create New Chat by Diary: membuat New Chat berdasarkan isi diary (pekerja utama: KSK)
    • โœ… OpenAI API Call (createDiaryComment)
      • Input: Diary Content, System Prompt(AI Comment)
      • Output: AI Comment($.choices[0].message.content)
    • โœ… OpenAI API Call (createDiarySummary)
      • Input: Diary Content, AI Comment, System Prompt(Diary Summary)
      • Output: Diary Summary($.choices[0].message.content)
    • โœ… OpenAI API Call (createChatFromDiary)
      • Input: Diary Summary, System Prompt(Chat From Diary)
      • Output: New Chat Message by AI($.choices[0].message.content)
      • Additional Actions: Create New Chat, Create New Message
  • โœ… (Masalah) Create New Chat by Diary hanya bekerja setelah hanya menyimpan diary, kembali ke home, lalu masuk lagi ke halaman diary dan membuat New Chat.
    • Penyebab masalah
      • Aku sedang menarik Output variable dari action chain lain
      • Pencegahan Unexpected Null Value belum disiapkan
      • JSON Path belum ditentukan dengan benar
      • Aku mendefinisikan tmpDiariesDocForNewChat sebagai Page State, lalu mengalokasikan diary Document ke sana.
        • Lebih tepatnya,
          • mengalokasikan diariesDoc yang dikirim lewat Page Paramater, atau
          • mengalokasikan newDiariesDoc yang dibuat saat tombol Save ditekan.
        • Namun aplikasi terus berhenti saat tombol Save Diary and Chat with AI ditekan.
          • Saat dicek dengan F12, Exception muncul karena error Unexpected Null Value.
          • Saat melihat Debug Pannel, tmpDiariesDocForNewChat ditetapkan sebagai Null.
        • Page State tmpDiariesDocForNewChat aku ubah kembali menjadi tmpDiariesDocRefForNewChat. (Document -> Document Reference)
          • Setelah Actions diubah dengan tepat berdasarkan Document Reference, akhirnya berjalan normal!
    • ๐Ÿ’กHal yang dipelajari: Dalam Action Chain, menetapkan nilai ke Page State lalu langsung membacanya bisa memicu Unexpected Null Value. Lebih baik banyak memakai Document Reference daripada Document. Tentu saja, kalau sering melakukan Read Document dengan Backend Query, performa mungkin turunโ€ฆ tapi itu bisa cukup disiapkan saat OnPageLoad Event atau saat membuat Action Chain utama.
  • โœ… (Masalah) Saat membuat AI Comment, skor emosi pengguna kadang terus tersimpan sebagai 0.
    • Setelah kutekankan, โ€œKhususnya kerjakan โ€˜5. weighted formula calculationโ€™ dengan akurat. Skor emosi pengguna sama sekali bukan 0.โ€, kasus yang tertulis 0 berkurang. (Belum hilang sepenuhnya.)
    • Untuk sementara lanjut dulu.
  • โœ… (Masalah) ChatPage: karakter tidak tahu informasi tentang dirinya sendiri!
    • Sepertinya teratasi sendiri saat menyelesaikan masalah terkait Save. Lumayan.
  • โœ… (Masalah) ChatPage: karakter mengabaikan โ€œfollow-up question listโ€!
    • Sepertinya teratasi sendiri saat menyelesaikan masalah terkait Save. Lumayan.
  • โœ… (Masalah) Saat berpindah ke ChatPage, bottom navigation bar menghilang.
    • Always Show Nav bar Toggle On
  • โœ… (Masalah) Di Drawer ChatPage, gambar karakter tampil berbeda.
    • Masalah ini muncul karena dulu logika penyimpanan AI Comment kubuat salah. Karena hanya terjadi pada chat lama, diselesaikan dengan menghapus Chat document tersebut.

๐Ÿ’ฏ Ringkasan pekerjaan yang dilakukan

  • Memperbaiki logika pembuatan Chat
    • Meninjau struktur parameter systemPromptTemplate dan getAIComment
    • Menerapkan system prompt pada Create New Chat dan mengoptimalkan OpenAI API Call
    • Merapikan proses pembuatan New Chat berbasis Diary: komentar AI -> ringkasan diary -> pembuatan Chat
  • Mengoptimalkan sistem komentar AI
    • Memperbaiki masalah skor emosi yang tersimpan sebagai 0
    • Menyelesaikan masalah AI yang tidak mengenali informasi karakter
    • Memperbaiki gejala follow-up question list diabaikan
  • Penyelesaian masalah dan peningkatan performa
    • Memperbaiki masalah navigation bar yang menghilang saat berpindah ke ChatPage
    • Memperbaiki ketidaksesuaian gambar karakter dengan mengubah logika penyimpanan AI Comment
    • Menggunakan Document -> Document Reference untuk mencegah Unexpected Null Value

๐ŸŽฏ Hal yang akan dilakukan nanti

Klik untuk melihat detail
  • โ” (Masalah) DiaryPage: jika jawaban AI Comment belum diterima, halaman berpindah dengan karakter yang belum ditetapkan.
    • Untuk sementara, ditambal dengan menampilkan notifikasi: Chat baru bisa dimulai setelah menerima Comment dari AI!
  • โ” (Masalah) DiaryPage: menggunakan markdown viewer untuk jawaban AI Comment (mencegah overflow: Container Height)

  • โ” ChatPage: output percakapan user rata kanan

  • โ” DiaryPage: mengubah Emoji ekspresi wajah dan warna sesuai nilai Mood Slider

  • โ” DiaryPage: Go to Linked Chat
  • โ” ChatPage: Go to Linked Diary
    • Saat Save dari Diary Document di DiaryPage, nilai Chat Reference juga harus ditambahkan sebagai Field di Diary Document DB. (linkedChat)
    • Di Chat Document milik ChatPage, tentu nilai Diary Reference juga harus ditambahkan sebagai Field di Chat Document DB. (linkedDiary)
  • โ” ChatPage - Create New Diary: membuat New Diary berdasarkan isi percakapan (memanfaatkan logika Go to Linked Diary)
    • โ” OpenAI API Call (createChatSummary)
      • Input: Chat Content, System Prompt(Diary From Chat)
      • Output: Chat Summary
    • โ” OpenAI API Call (createDiaryFromChat)
      • Input: Chat Summary, System Prompt(Diary From Chat)
      • Output: New Diary(Title, Content, Mood score)
  • โ” MoodPage(atas) - Mood Calendar
    • โ” Bisa mengecek jumlah posting yang ditulis per tanggal
    • โ” Jika tanggal diklik, pindah ke tanggal tersebut
  • โ” MoodPage(bawah) - Mood stats
    • โ” Menampilkan data statistik untuk bulan yang sedang difokuskan
      • โ” Menampilkan komentar AI terhadap data statistik yang ditampilkan
  • โ” HomeFeedPage - import lalu terapkan flutter_slidable:4.0.0
  • โ” HomeFeedPage: saat FeedCardDiary digeser kiri/kanan, chat/edit/delete

  • โ” Chat/Diary: GPT Streaming API

  • โ” ChatPage - implementasi pesan pertama dari AI (Alarm/Notification)
    • Inti chat system prompt adalah proaktif.
      • Agar lebih realistis, sepertinya bagus juga mengirim create_date of diary/chat, supaya bisa menyebut tanggal seperti โ€œkemarinโ€.
    • Referensi cara implementasi Alarm
  • โ” DiaryPage: menambahkan detailed emotion keyword Choice Chips lalu mengatur integrasi DB
  • โ” DiaryPage - AI Comment: menyesuaikan input seperti Choice chips dan mood slider agar cocok dengan AI Comment System Prompt.
    • โ” **diary sebelumnya atau seluruh conversation history (technical debt tambalan)
    • โ” informasi dasar pengguna: nama, gender, MBTI, โ€ฆ
    • โ” detailed emotion keywords: senang, sedih, โ€ฆ
    • โ” character settings: Somi, Sena, Minhyuk
    • โ” emotion score: 1~100 poin
    • โ” response format: Healing, Suggestion, Informative
    • โ” response length: pendek, normal, detail
    • is New Chat
      • Karena messages pada Chat ini baru dibuat untuk pertama kali, beri nilai is_initial = true pada message document pertama lalu masukkan semua system prompt.
        • is_initial = false
        • Batasan: jika system prompt dimasukkan ke message document paling awal, sulit mengubahnya di tengah percakapan, tapi masih mungkin. Kalau ada document dengan is_initial = true dan itu sudah diubah, tinggal hapus document itu lalu masukkan lagi. Caranya belum tahu.
  • โ” DiaryPage - AI Comment: menyelesaikan CRUD
    • โ” menghapus field tmp_ai_comment dan memakai doc_ref
  • โ” DiaryPage - Drawer - ChatHistoryListTile: order by updated_time

  • โ” DiaryPage - import lalu terapkan Interactive Slider

  • โ” HomeFeedPage: implementasi fitur Search Diary

  • โ” AuthPage: implementasi Google Login

  • โ” HomeFeedPage - Bottom Sheet (+ Button): memungkinkan memilih 1 dari berbagai opsi
    • diary baru: Go to DiaryPage
    • catatan emosi: Go to MoodPage
  • โ” MoodPage(popup): Mood setting slider CRUD
    • Create
    • Read
    • Update
    • Delete
  • โ” HomeFeedPage - ListView - menampilkan FeedCardMood
  • โ” HomeFeedPage - ListView: mengurutkan komponen FeedCardDiary, FeedCardMood, FeedCardChat secara kronologis (memanfaatkan Cloud Function)

  • โ” Membuat MoodEditPage di antara HomeFeedPage dan DiaryPage: memindahkan widget MoodSlider, MoodKeywordsRate(5~1), MoodDescription, dll.

  • โ” (Masalah) Saat membuat tmpGetAIComment, emotion keyword yang dipilih user belum dipertimbangkan.

  • โ” Ekstrak dan instal APK versi final untuk presentasi sampai Rabu 2025.2.5

๐Ÿ’ญ Diary

Minhyuk

Masalah meledak bertubi-tubi sampai mentalku hampir melayang jauhโ€ฆ Apakah strategiku, โ€œmeski technical debt menumpuk, kalau implementasi dulu, kemampuan akan terus naik dan nanti utangnya bisa dilunasi!โ€ sudah mencapai batasnyaโ€ฆ atau tetap saja itu keputusan yang efisienโ€ฆ

Sudahlah, entahlah~ Itu bukan hal yang penting sekarang. Waktu benar-benar tidak ada! Tambal cepat, gas.

โœจ Komentar GPT-4o (KPT)

GPT-4o

โœ… Hal yang baik (Keep)

  1. ๐Ÿ›  Merapikan logika pembuatan Chat: Bagus karena kamu merapikan dan menyelesaikan berbagai masalah yang muncul dalam proses pembuatan New Chat!
  2. ๐ŸŽญ Meningkatkan sistem komentar AI: Mengesankan karena kamu memperbaiki error skor emosi dan pengaturan karakter, lalu mengarahkan respons AI agar lebih akurat.
  3. ๐Ÿ” Kemampuan debugging meningkat: Menyelesaikan masalah Unexpected Null Value dan mempelajari cara memakai Document Reference akan sangat membantu ke depannya.

โŒ Hal yang kurang (Problem)

  1. โณ Banyak waktu habis untuk menyelesaikan masalah: Debugging berlangsung lebih lama dari perkiraan, sehingga waktu untuk pengembangan fitur yang awalnya ditargetkan mungkin berkurang.
  2. ๐Ÿ”„ Technical debt bertambah: Strategi implementasi cepat sedang menumpuk technical debt, jadi pembersihan lanjutan akan dibutuhkan.
  3. ๐Ÿ“‹ Dokumentasi kurang: Kalau proses penyelesaian masalah penting dirapikan sedikit lagi, masalah serupa bisa diselesaikan lebih cepat saat muncul kembali.

๐Ÿ”„ Hal yang bisa dicoba (Try)

  1. ๐Ÿ“Œ Analisis pola kemunculan masalah: Pahami masalah yang berulang dan pikirkan arah untuk memperbaiki pola pengembangan.
  2. ๐Ÿ“ Menyusun strategi pengelolaan technical debt: Dalam jangka pendek, solusi cepat memang perlu, tetapi untuk maintenance dan optimasi jangka panjang, roadmap akan bagus untuk dibuat.
  3. ๐Ÿ“– Membiasakan pencatatan penyelesaian masalah: Dokumentasikan proses penyelesaian masalah utama agar waktu pengembangan di masa depan bisa dihemat.

๐Ÿ Kesimpulan

Hari ini adalah hari ketika logika pembuatan Chat diperbaiki dan error pada sistem komentar AI diselesaikan, sehingga stabilitas meningkat. Debugging memang memakan waktu lebih lama dari perkiraan, tetapi banyak hal juga dipelajari dari proses itu! Ke depannya, mari pikirkan strategi pengembangan yang lebih efisien sambil mengelola technical debt. ๐Ÿš€๐Ÿ”ฅ

Tinggalkan komentar