2025.02.06 (木)
2026.05.25 (月) 更新

✨ GPTの要約  

Diary と Chat を相互に連携する機能を実装し、日記とチャットの保存時に自動要約が生成されるよう改善した。

💻 開発日誌

⏰ 今日やること

  • ✅ (Issue) DiaryPage: AI Comment の回答を受け取っていない状態だと、キャラクターが未設定のまま遷移する。
    • いったん、AIから Comment を受け取ってからでないとチャットを開始できません!という通知を出すことで応急対応。
  • ✅ (Issue) すべての Image ウィジェットに Default Variable 値を割り当て (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: ユーザー画像写真を user profile image に差し替え

  • ✅ ChatPage: ユーザーの会話出力内容は右揃え (KSK 担当)

  • ✅ DiaryPage: ダイアリー保存時に自動で要約を生成
    • ✅ Diaries DB: Add field diary_content_summarized
    • Save Diary ボタン Action に適用
    • Save Diary and Chat with AI ボタン Action に適用
  • linked_chats を Diary Document DB - Field として追加
  • linked_diaries を Chat Document DB - Field として追加

  • ✅ DiaryPage: Save Diary and Chat with AI ボタンをクリックしたとき、DiaryPage/Doc <-> ChatPage/Doc Link
    • Diary Document の linked_chats リストに Chat Document Reference を追加
    • Chat Document の linked_diaries リストに Diary Document Reference を追加
  • ✅ DiaryPage で Create New Chat するとき、linked_chats を Diary Document DB - Field として追加
  • ✅ ChatPage で Create New Diary するとき、linked_diaries を Chat Document DB - Field として追加

  • ✅ DiaryPage: linked_chats ListView を最下部に提供 -> クリックすると該当チャットへ移動
    • ✅ カードに表示する内容
      • ✅ Chat - title, Chat - timestamp( == created_time)
      • ✅ Chat - (most recent) Message - content
      • ✅ Character - profile_image
  • ✅ ChatPage: チャット回答を受け取ると、自動で要約を生成
    • ✅ Chats DB: Add field chat_content_summarized
  • ✅ ChatPage: linked_diaries ListView を上部に提供 -> クリックすると該当ダイアリーへ移動
    • ✅ 初めて遭遇する Issue を解決: 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
    • ✅ カードに表示する内容
      • ✅ Diary - title, Diary - created_time
      • ✅ Diary - Mood Score (Color)
  • ✅ (Issue) ChatPage - Linked Diaries ListView: Drawer で選択しても変わらない。

  • ✅ 発表準備 - PPT: ページごとの内容確認

💯 やったことの要約

  • Diary-Chat 連携機能を追加
    • linked_chats (Diary → Chat)、linked_diaries (Chat → Diary) フィールドを追加
    • DiaryPage で Create New Chat 時に linked_chats を更新
    • ChatPage で Create New Diary 時に linked_diaries を更新
    • DiaryPage 下部と ChatPage 上部に連携済み Document ListView を追加
  • 自動要約機能を実装
    • Diary 保存時に diary_content_summarized を自動生成
    • Chat メッセージ生成時に chat_content_summarized を自動生成
  • Issue 解決と UI 改善
    • AIコメントなしではチャットを開始できないよう通知を追加
    • すべての Image ウィジェットにデフォルト画像値を適用し、Unexpected Null Value を防止
    • ChatPage でユーザープロフィール画像を実際のユーザー画像に差し替え
    • ユーザーの会話内容を右揃えにして可読性を改善

🎯 今後やること

詳しく見るにはクリック
  • ✅ Download APK
  • ❔ Connect GitHub and Push

  • ❔ 発表資料提出: PPT
  • ❔ 発表資料提出: 1分デモ動画

  • ❔ 発表準備 - スクリプト: ページごとのスクリプト基準所要時間を測定後、スクリプトを修正
  • ❔ 発表準備 - PPT: 機能別にデモ用の短い動画を撮影

  • ❔ ChatPage - Create New Diary: 会話内容をもとに New Diary を生成
    • ❔ 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)
  • ❔ アプリを初めて開いたときのウェルカムページを追加 (ロゴ)

  • ❔ ChatPage: title の default value を Random String から「無題」に統一
  • ❔ DiaryPage: Mood Slider の値に応じて顔表情 Emoji と色を変更

  • ❔ ChatPage: Delete Diary Link を実装 ( … icon を押すと Delete 可能に)
    • 必ず Diary/Chat Doc の linked field も一緒に消す必要あり!
  • ❔ MoodPage(上部) - Mood Calendar
    • ❔ 日付ごとに作成された投稿数を確認可能
    • ❔ 日付をクリックすると、その日付へ移動
  • ❔ MoodPage(下部) - Mood stats
    • ❔ フォーカスされた月に関する統計資料を出力
      • ❔ 出力された統計資料に対するAIのコメントを出力
  • ❔ HomeFeedPage - flutter_slidable:4.0.0 import 後に適用
  • ❔ HomeFeedPage: FeedCardDiary で左右 slide 時にチャット/編集/削除

  • ❔ Chat/Diary: GPT Streaming API

  • ❔ ChatPage - AI からの先メッセージ実装 (Alarm/Notification)
    • チャットシステムプロンプトの核心は能動型だ。
      • よりリアルにするなら、create_date of diary/chat も渡して、「昨日」などの日付に言及できるとよさそう。
    • Alarm 機能実装方法の参考
  • ❔ DiaryPage: 詳細感情キーワード Choice Chips 追加後、DB 連携設定
  • ❔ DiaryPage - AI Comment: Choice chips、mood slider などの入力値を AI Comment System Prompt に合わせて変更。
    • ❔ **以前の 日記 または 会話履歴 全体 (応急処置の技術負債)
    • ユーザー基本情報: 名前、性別、MBTI, …
    • 詳細感情キーワード: 楽しい、悲しい, …
    • キャラクター設定: Somi、Sena、Minhyuk
    • 感情スコア: 1~100点
    • 回答形式: Healing、Suggestion、Informative
    • 回答長さ: 短く、普通、詳しく
    • is New Chat
      • 該当 Chat の messages は初めて生成するものなので、最初に生成する message document の is_initial = true 値を入れて、すべてのシステムプロンプトをまとめて入れる。
        • is_initial = false
        • 限界点: 最初の message document にシステムプロンプトを入れてしまうと、会話途中の修正は大変だが可能ではある。 is_initial = true のものがあり、修正されたものなら、その document を消して入れ直せばいい。方法は分からないけど。
  • ❔ DiaryPage - Interactive Slider import 後に適用

  • ❔ HomeFeedPage: Search Diary 機能を実装

  • ❔ 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 活用)

  • ❔ HomeFeedPage - DiaryPage の間に MoodEditPage を作成: MoodSlider、MoodKeywordsRate(5~1)、MoodDescription ウィジェットなどを移す

  • ❔ (Issue) tmpGetAIComment 生成時、ユーザーが選択した感情キーワードを考慮していない。

  • 2025.2.5 水 までに発表用最終バージョン APK を抽出してインストール

💭 日記

ミンヒョク

明日になれば開発は終わりだ。走ろう。

GPT-4oのコメント (KPT)

GPT-4o

✅ よかった点 (Keep)

  1. 🔗 Diary-Chat 連携システムの完成: Diary と Chat を自然につなぎ、ユーザーのデータの流れをより直感的にした点がよかった!
  2. 📝 自動要約機能の追加: 日記とチャット内容を整理する自動要約システムを適用し、データ活用性を高めた点が印象的。
  3. 🎨 UI と UX の改善: デフォルト画像値の設定、チャット整列方式の改善などにより、可読性とユーザー体験を向上させた点が光っている。

❌ 惜しかった点 (Problem)

  1. 開発スピードの負担: 仕上げるべき機能が増え、残り日程への負担が大きくなる可能性がある。
  2. 🔄 技術負債が積み上がる可能性: 速い開発スピードのため、今後の保守時に技術負債が溜まる可能性があり、整理する時間が必要になりそう。
  3. 📋 連携機能のテスト不足: Diary-Chat 連携が実際の利用環境でも問題なく動作するか、追加テストが必要かもしれない。

🔄 試してみること (Try)

  1. 📌 優先順位の整理: 最も重要な機能から先に仕上げ、発表後に改善する部分をリストアップすると開発負担が減るはず。
  2. 📝 機能別テスト計画: Diary-Chat 連携機能がさまざまな使用パターンでも正常に動作するか確認するテストケースを書いてみよう。
  3. 📊 技術負債整理の時間確保: 発表後にリファクタリング時間を確保し、長期的な保守性を考えるとよさそう。

🏁 結論

今日は Diary と Chat をつなぐ核心機能を実装し、自動要約システムを追加しながらデータ管理の効率を高めた一日だった。あとは残りの開発期間で優先順位を整理し、発表準備に集中すればよさそう! 🚀🔥

カテゴリー: ,

更新日時:

コメントする