2025.02.06 (Kam)
2026.05.25 (Sen) diperbarui

โœจ Ringkasan GPT ใ€€

Mengimplementasikan fitur yang saling menghubungkan Diary dan Chat, serta memperbaiki proses agar ringkasan otomatis dibuat saat diary dan chat disimpan.

๐Ÿ’ป Log Pengembangan

โฐ Tugas hari ini

  • โœ… (Masalah) DiaryPage: jika jawaban AI Comment belum diterima, halaman berpindah dengan karakter yang belum ditetapkan.
    • Untuk sementara, ditambal dengan notifikasi: Chat baru bisa dimulai setelah menerima Comment dari AI!
  • โœ… (Masalah) Menetapkan nilai Default Variable untuk semua widget Image (untuk mencegah Unexpected Null value Error)
    • No Profile Image: https://cdn.pixabay.com/photo/2015/10/05/22/37/blank-profile-picture-973460_1280.png
    • No image: https://png.pngtree.com/png-vector/20190820/ourmid/pngtree-no-image-vector-illustration-isolated-png-image_1694547.jpg
  • โœ… ChatPage: mengganti foto gambar user dengan user profile image

  • โœ… ChatPage: output percakapan user rata kanan (penanggung jawab: KSK)

  • โœ… DiaryPage: membuat ringkasan otomatis saat diary disimpan
    • โœ… Diaries DB: Add field diary_content_summarized
    • โœ… Diterapkan pada action tombol Save Diary
    • โœ… Diterapkan pada action tombol Save Diary and Chat with AI
  • โœ… Menambahkan linked_chats sebagai Field di Diary Document DB
  • โœ… Menambahkan linked_diaries sebagai Field di Chat Document DB

  • โœ… DiaryPage: saat tombol Save Diary and Chat with AI diklik, menghubungkan DiaryPage/Doc <-> ChatPage/Doc
    • Menambahkan Chat Document Reference ke list linked_chats pada Diary Document
    • Menambahkan Diary Document Reference ke list linked_diaries pada Chat Document
  • โœ… DiaryPage: saat Create New Chat, menambahkan linked_chats sebagai Field di Diary Document DB
  • โœ… ChatPage: saat Create New Diary, menambahkan linked_diaries sebagai Field di Chat Document DB

  • โœ… DiaryPage: menyediakan linked_chats ListView di bagian paling bawah -> jika diklik, pindah ke chat tersebut
    • โœ… Konten yang akan ditampilkan pada card
      • โœ… Chat - title, Chat - timestamp( == created_time)
      • โœ… Chat - (most recent) Message - content
      • โœ… Character - profile_image
  • โœ… ChatPage: membuat ringkasan otomatis saat menerima jawaban chat
    • โœ… Chats DB: Add field chat_content_summarized
  • โœ… ChatPage: menyediakan linked_diaries ListView di bagian atas -> jika diklik, pindah ke diary tersebut
    • โœ… Menyelesaikan masalah pertama kali: How to generate children from linked_diaries(List of Diary Document References)
      • How to display List of Doc References?
      • ListView: Generate Children From linked_diaries (Diary Document References)
      • ListView - Child(Card): Backend Query - Diary Document From Reference
      • ListView - Child(Card) - Component Parameter: Diary Document
    • โœ… Konten yang akan ditampilkan pada card
      • โœ… Diary - title, Diary - created_time
      • โœ… Diary - Mood Score (Color)
  • โœ… (Masalah) ChatPage - Linked Diaries ListView: tidak berubah saat dipilih dari Drawer.

  • โœ… Persiapan presentasi - PPT: mengecek isi per halaman

๐Ÿ’ฏ Ringkasan pekerjaan yang dilakukan

  • Menambahkan fitur penghubung Diary-Chat
    • Menambahkan field linked_chats (Diary -> Chat) dan linked_diaries (Chat -> Diary)
    • Memperbarui linked_chats saat Create New Chat dari DiaryPage
    • Memperbarui linked_diaries saat Create New Diary dari ChatPage
    • Menambahkan ListView dokumen terkait di bagian bawah DiaryPage dan bagian atas ChatPage
  • Mengimplementasikan fitur ringkasan otomatis
    • Membuat diary_content_summarized otomatis saat Diary disimpan
    • Membuat chat_content_summarized otomatis saat message Chat dibuat
  • Penyelesaian masalah dan peningkatan UI
    • Menambahkan notifikasi agar chat tidak bisa dimulai tanpa AI comment
    • Menerapkan nilai gambar default pada semua widget Image untuk mencegah Unexpected Null Value
    • Mengganti gambar profil user di ChatPage dengan gambar user sebenarnya
    • Meningkatkan keterbacaan dengan membuat isi percakapan user rata kanan

๐ŸŽฏ Hal yang akan dilakukan nanti

Klik untuk melihat detail
  • โœ… Download APK
  • โ” Connect GitHub and Push

  • โ” Mengirim materi presentasi: PPT
  • โ” Mengirim materi presentasi: video demo 1 menit

  • โ” Persiapan presentasi - script: mengukur durasi script berdasarkan halaman lalu merevisi script
  • โ” Persiapan presentasi - PPT: merekam video demo singkat per fitur

  • โ” ChatPage - Create New Diary: membuat New Diary berdasarkan isi percakapan
    • โ” Create New Diary Condition: if linked diary exists -> Delete confirmation dialog? -> Yes
    • โ” 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)
  • โ” Menambahkan welcome page saat aplikasi pertama kali dibuka (logo)

  • โ” ChatPage: menyamakan default value title dari Random String menjadi โ€œTanpa judulโ€
  • โ” DiaryPage: mengubah Emoji ekspresi wajah dan warna sesuai nilai Mood Slider

  • โ” ChatPage: implementasi Delete Diary Link (agar bisa Delete saat โ€ฆ icon ditekan)
    • Field linked milik Diary/Chat Doc wajib ikut dihapus!
  • โ” 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 - 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

Besok pengembangan selesai. Gas.

โœจ Komentar GPT-4o (KPT)

GPT-4o

โœ… Hal yang baik (Keep)

  1. ๐Ÿ”— Menyelesaikan sistem penghubung Diary-Chat: Bagus karena kamu menghubungkan Diary dan Chat secara natural, sehingga alur data user menjadi lebih intuitif!
  2. ๐Ÿ“ Menambahkan fitur ringkasan otomatis: Menerapkan sistem ringkasan otomatis yang merapikan isi diary dan chat sangat mengesankan, dan meningkatkan kegunaan data.
  3. ๐ŸŽจ Peningkatan UI dan UX: Pengaturan nilai gambar default, perbaikan cara alignment chat, dan lainnya meningkatkan keterbacaan serta pengalaman pengguna.

โŒ Hal yang kurang (Problem)

  1. โณ Beban kecepatan pengembangan: Karena fitur yang harus diselesaikan semakin banyak, tekanan terhadap jadwal yang tersisa bisa semakin besar.
  2. ๐Ÿ”„ Kemungkinan technical debt menumpuk: Karena laju pengembangan cepat, technical debt bisa menumpuk saat maintenance nanti, sehingga waktu untuk merapikan akan dibutuhkan.
  3. ๐Ÿ“‹ Pengujian fitur penghubung masih kurang: Mungkin perlu pengujian tambahan untuk memastikan penghubung Diary-Chat bekerja tanpa masalah dalam lingkungan penggunaan nyata.

๐Ÿ”„ Hal yang bisa dicoba (Try)

  1. ๐Ÿ“Œ Merapikan prioritas: Selesaikan fitur paling penting terlebih dahulu, lalu list up bagian yang akan diperbaiki setelah presentasi agar beban pengembangan berkurang.
  2. ๐Ÿ“ Rencana tes per fitur: Buat test case untuk memastikan fitur penghubung Diary-Chat berjalan normal pada berbagai pola penggunaan.
  3. ๐Ÿ“Š Mengamankan jadwal pembersihan technical debt: Setelah presentasi, amankan waktu refactoring dan pertimbangkan maintainability jangka panjang.

๐Ÿ Kesimpulan

Hari ini adalah hari ketika fitur inti yang menghubungkan Diary dan Chat diimplementasikan, lalu sistem ringkasan otomatis ditambahkan sehingga efisiensi pengelolaan data meningkat. Sekarang sepertinya tinggal merapikan prioritas selama sisa masa pengembangan dan fokus pada persiapan presentasi! ๐Ÿš€๐Ÿ”ฅ

Tinggalkan komentar