[๐ ] Log Pengembangan Keymory #6: Optimasi ChatPage, Integrasi DiaryPage
โจ Ringkasan GPT ใ
Hari ketika loading data dan berbagai Action di ChatPage dioptimalkan, fitur CRUD Title dan tanggal ditambahkan, serta struktur Create/Edit di DiaryPage digabungkan. Stabilitas sistem meningkat sambil menyelesaikan beberapa issue.
๐ป Log Pengembangan
โฐ Yang Dikerjakan Hari Ini
- โ
DiaryPage: Merge CreateDiary/EditDiary Page
- Gunakan isEditMode page state
- Gunakan conditional value/visibility/action, dan sebagainya
- โ ChatPage: On Page Load -> Read ChatDoc, CharacterDoc, MessageDocList and Update Page States
- โ ChatPage: optimasi dan restrukturisasi berbagai Action secara menyeluruh
- โ ChatPage: Title CRUD
- โ ChatPage: CRUD tanggal
- โ (Issue) ChatPage: default init message muncul saat memulai percakapan pertama.
- โ (Issue) ChatPage - ChatHistoryDrawer: UI overflow
- โ (Issue) ChatPage: pesan user tetap terkirim meski kolom input kosong
๐ฏ Ringkasan yang Sudah Dikerjakan
- Optimasi fitur ChatPage
- Mengoptimalkan loading data saat On Page Load (ChatDoc, CharacterDoc, MessageDocList)
- Mengoptimalkan dan menyusun ulang Action utama ChatPage secara menyeluruh
- Menambahkan fitur CRUD Title dan tanggal
- Memperbaiki UI overflow di ChatHistoryDrawer dan masalah pengiriman pesan user yang kosong
- Peningkatan DiaryPage
- Menggabungkan CreateDiary/EditDiary Page (menggunakan isEditMode page state)
- Memperbaiki error penyimpanan tanggal diary
๐ฏ Rencana Berikutnya
Klik untuk melihat detail
- โ (Issue) DiaryPage: tanggal selalu tersimpan sebagai hari ini
- โ (Issue) DiaryPage: gunakan markdown viewer (mencegah overflow: Container Height)
- โ (Issue) HomeFeedPage: Unexpected Null Value sempat muncul lalu hilang saat page load.
- โ HomeFeedPage - FeedCardDiary: perbaiki gambar karakter AI Comment
- โ DiaryPage - AI Comment: saat Save, simpan juga Ref karakter yang menulis komentar ke Diary.
- โ HomeFeedPage - FeedCardDiary - AI Image: muat Character Doc dengan Backend Query lalu tentukan Image Path.
- โ DiaryPage - Create New Chat: membuat New Chat berdasarkan isi diary
- โ Implementasi OpenAI API Call: createDiaryComment
- Input: Diary Content, System Prompt (AI Comment)
- Output: AI Comment ($.choices[0].message.content)
- โ Implementasi OpenAI API Call: createDiarySummary
- Input: Diary Content, AI Comment, System Prompt (Diary Summary)
- Output: Diary Summary ($.choices[0].message.content)
- โ Implementasi 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
- โ Implementasi OpenAI API Call: createDiaryComment
-
โ ChatPage: Go to Linked Diary
- โ HomeFeedPage - import dan terapkan flutter_slidable:4.0.0
-
โ HomeFeedPage: saat slide kiri/kanan dari FeedCardDiary, tampilkan chat/edit/delete
- โ ChatPage: ratakan output percakapan user ke kanan
-
โ Chat/Diary: GPT Streaming API
- โ ChatPage - implementasi pesan pertama dari AI (Alarm/Notification)
- Inti dari chat system prompt adalah sifat proaktif.
- Agar terasa lebih nyata, mungkin bagus juga mengirim create_date of diary/chat, supaya AI bisa menyebut tanggal seperti โkemarin.โ
- Referensi implementasi Alarm
- Inti dari chat system prompt adalah sifat proaktif.
- โ DiaryPage: ubah Emoji ekspresi wajah sesuai nilai Mood Slider
- โ DiaryPage: tambahkan Choice Chips untuk kata kunci emosi detail dan atur integrasi DB
- โ DiaryPage - AI Comment: sesuaikan 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, โฆ
- โ kata kunci emosi detail: senang, sedih, โฆ
- โ pengaturan karakter: Somi, Sena, Minhyuk
- โ skor emosi: 1~100 poin
- โ format jawaban: Healing, Suggestion, Informative
- โ panjang jawaban: pendek, normal, detail
- is New Chat
- Karena messages untuk Chat ini dibuat pertama kali, berikan nilai
is_initial = truepada message document pertama dan masukkan semua system prompt.- is_initial = false
- Batasan: kalau system prompt dimasukkan ke message document paling awal, memang sulit diubah di tengah percakapan, tetapi masih mungkin. Kalau ada document dengan is_initial = true dan isinya diubah, document itu bisa dihapus lalu dimasukkan lagi. Caranya belum tahu, tapi bisa saja.
- Karena messages untuk Chat ini dibuat pertama kali, berikan nilai
- โ **
- โ DiaryPage - AI Comment: selesaikan CRUD
- โ hapus field tmp_ai_comment dan gunakan doc_ref
- โ DiaryPage - AI Comment: pengaturan karakter
- โ hapus field tmp_ai_comment_by dan gunakan doc_ref
- โ tampilkan gambar memakai nilai field profile_image
-
โ DiaryPage - Drawer - ChatHistoryListTile: order by updated_time
- โ ChatPage - Create New Diary: membuat New Diary berdasarkan isi percakapan
- โ Implementasi OpenAI API Call: createDiaryFromChat
- Input: Chat Summary, System Prompt (Diary From Chat)
- Output: New Diary (Title, Content, Mood score)
- โ Implementasi OpenAI API Call: createDiaryFromChat
-
โ DiaryPage - import dan terapkan Interactive Slider
-
โ HomeFeedPage: implementasi fitur Search Diary
- โ CalendarPage (atas) - Mood Calendar
- โ Bisa mengecek jumlah post yang ditulis per tanggal
- โ Saat tanggal diklik, pindah ke tanggal tersebut
- โ CalendarPage (bawah) - Mood stats
- โ Tampilkan statistik terkait bulan yang sedang difokuskan
- โ Tampilkan komentar AI terhadap statistik yang muncul
- โ Tampilkan statistik terkait bulan yang sedang difokuskan
-
โ AuthPage: implementasi Google Login
- โ HomeFeedPage - Bottom Sheet (
+Button): buat agar bisa memilih 1 dari beberapa opsi- Diary baru: Go to DiaryPage
- Catatan emosi: Go to MoodPage
- โ MoodPage (popup): CRUD slider pengaturan Mood
- Create
- Read
- Update
- Delete
- โ HomeFeedPage - ListView - tampilkan FeedCardMood
-
โ HomeFeedPage - ListView: urutkan komponen FeedCardDiary, FeedCardMood, FeedCardChat secara kronologis (menggunakan Cloud Function)
- โ Ekstrak dan instal APK versi final untuk presentasi sampai
Rab 2025.2.5
๐ญ Diary
Malamnya niat tidur 40 menit, tapi malah pingsan lebih dari 3 jam. Kalau sudah begini, sepertinya lebih baik istirahat benar-benar lalu gas besok. Bukan seolah nasib hidup-mati perusahaan sedang bergantung pada ini juga.
โจ Komentar GPT-4o (KPT)
โ Yang Berjalan Baik (Keep)
- ๐ Optimasi fitur ChatPage: Mengesankan karena kamu meningkatkan performa secara keseluruhan lewat perbaikan loading data, optimasi Action, serta penambahan CRUD Title dan tanggal.
- ๐ Perapian struktur DiaryPage: Bagus karena halaman Create/Edit digabungkan sehingga duplikasi logika berkurang dan pengelolaan jadi lebih mudah.
- ๐ ๏ธ Penyelesaian berbagai issue: Stabilitas meningkat dengan memperbaiki UI overflow, pengiriman pesan kosong, error penyimpanan tanggal, dan lainnya.
โ Yang Kurang (Problem)
- โณ Fatigue menumpuk: Kamu merencanakan istirahat singkat, tetapi akhirnya tertidur lama, yang menunjukkan stamina mulai sulit dikelola.
- ๐ Beban maintenance karena ekspansi fitur: Karena fitur ChatPage dan DiaryPage berkembang cepat, maintenance dan optimasi ke depan mungkin akan memakan lebih banyak waktu.
๐ Yang Bisa Dicoba (Try)
- ๐ Seimbangkan kerja dan istirahat: Rutinitas yang stabil bisa membantu agar istirahat singkat tidak berulang kali berubah menjadi crash panjang.
- ๐ Persiapan maintenance ke depan: Dokumentasikan struktur ChatPage dan DiaryPage yang sudah dioptimalkan saat ini, dan manfaatkan komentar kode untuk mengurangi beban maintenance.
- ๐ ๏ธ Pertimbangkan extensibility ke depan: Pikirkan cara membuat struktur API Call dan Custom Function lebih modular agar penambahan dan perluasan fitur berikutnya tidak terlalu membebani.
Kesimpulan
Hari ini produktif: fungsi ChatPage dioptimalkan secara menyeluruh, struktur DiaryPage diperbaiki, dan beberapa issue diselesaikan. Tetapi fatigue yang menumpuk bisa menggoyahkan jadwal kerja, jadi istirahat yang tepat dan penyesuaian jadwal tampaknya diperlukan. Semoga pengembangan berikutnya tetap menjaga sistem yang sudah dioptimalkan sambil mempertimbangkan extensibility! ๐ช๐
Tinggalkan komentar