[๐ ] Dev Log Keymory #10: Menghubungkan Diary <-> Chat, Menambahkan Fitur Ringkasan Otomatis
โจ 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
- No Profile Image:
-
โ 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
- โ
Diaries DB: Add field
- โ
Menambahkan
linked_chatssebagai Field di Diary Document DB -
โ Menambahkan
linked_diariessebagai Field di Chat Document DB - โ
DiaryPage: saat tombol
Save Diary and Chat with AIdiklik, menghubungkan DiaryPage/Doc <-> ChatPage/Doc- Menambahkan Chat Document Reference ke list
linked_chatspada Diary Document - Menambahkan Diary Document Reference ke list
linked_diariespada Chat Document
- Menambahkan Chat Document Reference ke list
- โ
DiaryPage: saat Create New Chat, menambahkan
linked_chatssebagai Field di Diary Document DB -
โ ChatPage: saat Create New Diary, menambahkan
linked_diariessebagai Field di Chat Document DB - โ
DiaryPage: menyediakan
linked_chatsListView 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
- โ
Konten yang akan ditampilkan pada card
- โ
ChatPage: membuat ringkasan otomatis saat menerima jawaban chat
- โ
Chats DB: Add field
chat_content_summarized
- โ
Chats DB: Add field
- โ
ChatPage: menyediakan
linked_diariesListView 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)
- โ
Menyelesaikan masalah pertama kali: How to generate children from linked_diaries(List of Diary Document References)
-
โ (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) danlinked_diaries(Chat -> Diary) - Memperbarui
linked_chatssaat Create New Chat dari DiaryPage - Memperbarui
linked_diariessaat Create New Diary dari ChatPage - Menambahkan ListView dokumen terkait di bagian bawah DiaryPage dan bagian atas ChatPage
- Menambahkan field
- Mengimplementasikan fitur ringkasan otomatis
- Membuat
diary_content_summarizedotomatis saat Diary disimpan - Membuat
chat_content_summarizedotomatis saat message Chat dibuat
- Membuat
- 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
titledariRandom Stringmenjadi โ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
- โ Menampilkan data statistik untuk bulan yang sedang difokuskan
- โ 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
- Inti chat system prompt adalah proaktif.
- โ 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.- โ **
diarysebelumnya atau seluruhconversation 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 = truepada 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.
- Karena messages pada Chat ini baru dibuat untuk pertama kali, beri nilai
- โ **
-
โ 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
Besok pengembangan selesai. Gas.
โจ Komentar GPT-4o (KPT)
โ Hal yang baik (Keep)
- ๐ Menyelesaikan sistem penghubung Diary-Chat: Bagus karena kamu menghubungkan Diary dan Chat secara natural, sehingga alur data user menjadi lebih intuitif!
- ๐ Menambahkan fitur ringkasan otomatis: Menerapkan sistem ringkasan otomatis yang merapikan isi diary dan chat sangat mengesankan, dan meningkatkan kegunaan data.
- ๐จ Peningkatan UI dan UX: Pengaturan nilai gambar default, perbaikan cara alignment chat, dan lainnya meningkatkan keterbacaan serta pengalaman pengguna.
โ Hal yang kurang (Problem)
- โณ Beban kecepatan pengembangan: Karena fitur yang harus diselesaikan semakin banyak, tekanan terhadap jadwal yang tersisa bisa semakin besar.
- ๐ Kemungkinan technical debt menumpuk: Karena laju pengembangan cepat, technical debt bisa menumpuk saat maintenance nanti, sehingga waktu untuk merapikan akan dibutuhkan.
- ๐ 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)
- ๐ Merapikan prioritas: Selesaikan fitur paling penting terlebih dahulu, lalu list up bagian yang akan diperbaiki setelah presentasi agar beban pengembangan berkurang.
- ๐ Rencana tes per fitur: Buat test case untuk memastikan fitur penghubung Diary-Chat berjalan normal pada berbagai pola penggunaan.
- ๐ 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