[🛠] Keymory 開発日誌 #6: ChatPage最適化, DiaryPage統合
✨ GPTの要約
ChatPageのデータ読み込みとActionを最適化し、Titleおよび日付CRUD機能を追加しながら、DiaryPageのCreate/Edit構造を統合した一日。複数のIssueを解決し、システムの安定性を高めた。
💻 開発日誌
⏰ 今日やること
- ✅ DiaryPage: Merge CreateDiary/EditDiary Page
- isEditMode page state活用
- conditional value/visibility/actionなどを活用
- ✅ ChatPage: On Page Load -> Read ChatDoc, CharacterDoc, MessageDocList and Update Page States
- ✅ ChatPage: 各種Actionを全体的に最適化および再構成
- ✅ ChatPage: Title CRUD
- ✅ ChatPage: 日付CRUD
- ✅ (Issue) ChatPage: 最初に会話を始めるとき、default init messageが表示されている。
- ✅ (Issue) ChatPage - ChatHistoryDrawer: UIオーバーフロー
- ✅ (Issue) ChatPage: ユーザーメッセージが空欄でも送信される
💯 やったことの要約
- ChatPage機能最適化
- On Page Load時のデータ読み込みを最適化 (ChatDoc, CharacterDoc, MessageDocList)
- ChatPageの主要Actionを全体的に最適化および再構成
- Titleおよび日付CRUD機能を追加
- ChatHistoryDrawer UIオーバーフローとユーザーメッセージ空欄送信問題を解決
- DiaryPage改善
- CreateDiary/EditDiary Page統合 (isEditMode page state活用)
- Diaryの日付保存エラーを修正
🎯 今後やること
詳しく見る
- ❔ (Issue) DiaryPage: 日付が今日としてしか保存されない
- ❔ (Issue) DiaryPage: Markdown viewer活用 (オーバーフロー防止: Container Height)
- ❔ (Issue) HomeFeedPage: On page load時にUnexpected Null Valueが一瞬表示されて消える。
- ❔ HomeFeedPage - FeedCardDiary: AI Commentキャラクター画像を修正
- ❔ DiaryPage - AI Comment: Save時、コメントを書いたキャラクターRefもDiaryに保存。
- ❔ HomeFeedPage - FeedCardDiary - AI Image: Backend QueryでキャラクターDocを読み込み、Image Pathを指定。
- ❔ DiaryPage - Create New Chat: 日記の内容をもとにNew Chatを作成
- ❔ 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
- ❔ OpenAI API Call実装: createDiaryComment
-
❔ ChatPage: Go to Linked Diary
- ❔ HomeFeedPage - flutter_slidable:4.0.0をimport後に適用
-
❔ HomeFeedPage: FeedCardDiaryを左右にslideしたとき、チャット/編集/削除
- ❔ ChatPage: ユーザー会話の出力内容は右揃え
-
❔ Chat/Diary: GPT Streaming API
- ❔ ChatPage - AIの先メッセージを実装 (Alarm/Notification)
- チャットシステムプロンプトの核心は能動型だ。
- よりリアルにするなら、create_date of diary/chatも渡して、「昨日」などの日付に触れられるとよさそう。
- Alarm機能実装方法の参照
- チャットシステムプロンプトの核心は能動型だ。
- ❔ DiaryPage: Mood Slider値に応じて顔の表情Emojiを変更
- ❔ DiaryPage: 詳細感情キーワードChoice Chipsを追加し、DB連携を設定
- ❔ DiaryPage - AI Comment: Choice chips, mood sliderなどの入力値を
AI Comment System Promptに合うよう変更。- ❔ **以前の
日記または会話履歴全体 (応急処置の技術負債) - ❔ ユーザー基本情報: 名前, 性別, MBTI, …
- ❔ 詳細感情キーワード: 楽しい, 悲しい, …
- ❔ キャラクター設定: ソミ, セナ, ミンヒョク
- ❔ 感情数値: 1〜100点
- ❔ 回答形式: 癒やし型(Healing), 助言型(Suggestion), 情報型(Informative)
- ❔ 回答の長さ: 短め, 普通, 詳しく
- is New Chat
- そのChatのmessagesは初めて作るものなので、最初に作るmessage documentの
is_initial = true値を入れて、すべてのシステムプロンプトをまとめて入れてしまう。- is_initial = false
- 限界点: 最初のmessage documentにシステムプロンプトを入れてしまうと、会話の途中で修正するのは大変ではあるけれど可能ではある。 is_initial = trueのものがあって、それが修正されたものなら、そのdocumentを消して入れ直せばいいじゃないか。どうやるかはわからないけど。
- そのChatのmessagesは初めて作るものなので、最初に作るmessage documentの
- ❔ **以前の
- ❔ DiaryPage - AI Comment: CRUDを完成させる
- ❔ tmp_ai_comment fieldをなくして、doc_refを活用
- ❔ DiaryPage - AI Comment: キャラクター設定
- ❔ tmp_ai_comment_by fieldをなくして、doc_refを活用
- ❔ profile_image field値で画像を出力
-
❔ DiaryPage - Drawer - ChatHistoryListTile: order by updated_time
- ❔ ChatPage - Create New Diary: 会話内容をもとにNew Diaryを作成
- ❔ OpenAI API Call実装: createDiaryFromChat
- Input: Chat Summary, System Prompt(Diary From Chat)
- Output: New Diary(Title, Content, Mood score)
- ❔ OpenAI API Call実装: createDiaryFromChat
-
❔ DiaryPage - Interactive Sliderをimport後に適用
-
❔ HomeFeedPage: Search Diary機能を実装
- ❔ CalendarPage(上部) - Mood Calendar
- ❔ 日付ごとに作成された投稿数を確認可能
- ❔ 日付をクリックすると、該当日付へ移動
- ❔ CalendarPage(下部) - Mood stats
- ❔ フォーカス中の月に関する統計資料を出力
- ❔ 出力された統計資料に対するAIのコメントを出力
- ❔ フォーカス中の月に関する統計資料を出力
-
❔ AuthPage: Google Login機能を実装
- ❔ HomeFeedPage - Bottom Sheet (
+Button): 複数の選択肢から1つ選べるようにする- 新しい日記: Go to DiaryPage
- 感情記録: Go to MoodPage
- ❔ MoodPage(ポップアップ): Mood設定スライダーCRUD
- Create
- Read
- Update
- Delete
- ❔ HomeFeedPage - ListView - FeedCardMoodを表示
-
❔ HomeFeedPage - ListView: FeedCardDiary, FeedCardMood, FeedCardChatコンポーネントを時系列でソート (Cloud Functionを活用)
- ❔
2025.2.5 水までに発表用の最終版APKを抽出してインストール
💭 日記
夜に40分だけ寝ようと思ったのに、3時間以上気絶した。これならもうしっかり休んで、明日走るほうがよさそうだ。会社の存亡がかかった岐路に立っているわけでもないし。
✨ GPT-4oのコメント (KPT)
✅ よかった点 (Keep)
- 🚀 ChatPage機能最適化: データ読み込み方式の改善、Action最適化、Titleおよび日付CRUD追加など、全体的な性能改善を実現した点が印象的だよ。
- 🔄 DiaryPage構造整理: Create/Editページを統合して重複ロジックを減らし、管理しやすく改善した点がよかった。
- 🛠️ さまざまなIssue解決: UIオーバーフロー、メッセージ空欄送信問題、日付保存エラーなどを修正し、安定性を高めた点が目立っている。
❌ 惜しかった点 (Problem)
- ⏳ 疲労の蓄積: 短い休息を計画したものの、結局長時間気絶してしまい、体力管理に難しさを感じた点が惜しいね。
- 📋 機能追加にともなう保守負担: ChatPageとDiaryPageの機能拡張が速く進んでいて、今後の保守と最適化にさらに時間がかかる可能性がある。
🔄 試してみる点 (Try)
- 🕒 作業と休息のバランス調整: 短い休息が長くなるパターンが繰り返されないよう、一定のルーティンを決めてみるのも役立つよ。
- 🔍 今後の保守に備えたコード整理: 現在最適化したChatPageとDiaryPageの構造を文書化し、コードコメントも積極的に活用して保守負担を減らそう。
- 🛠️ 今後の拡張性を考慮: API CallおよびCustom Function構造をさらにモジュール化し、以後の機能追加や拡張時の負担を減らす方向を考えてみよう。
結論
今日はChatPageの全体的な機能を最適化し、DiaryPageの構造を改善しながら複数のIssueを解決した生産的な一日だったよ。ただし疲労の蓄積によって作業予定が揺れる可能性があるので、適切な休息とスケジュール調整が必要そうだ。これからも最適化したシステムを維持しつつ、拡張性を考えた開発を続けられるよう応援しているね! 💪😊
コメントする