2025.02.06 (四)
2026.05.25 (一) 更新

✨ GPT 摘要  

实现 Diary 与 Chat 相互连接的功能,并改进为保存日记和聊天时自动生成摘要。

💻 开发日志

⏰ 今天要做的事

  • ✅(问题)DiaryPage:如果还没有收到 AI Comment 回复,会在角色未设置的状态下进入下一步。
    • 先用弹窗临时处理:必须收到 AI 的 Comment 后才能开始聊天!
  • ✅(问题)给所有 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
    • 向 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 上方提供列表 -> 点击后移动到对应日记
    • ✅ 解决第一次遇到的问题: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)
  • ✅(问题)ChatPage - Linked Diaries ListView:从 Drawer 中选择后不会变化。

  • ✅ 发表准备 - PPT:按页面确认内容

💯 完成内容摘要

  • 添加 Diary-Chat 连接功能
    • 添加 linked_chats (Diary -> Chat)、linked_diaries (Chat -> Diary) 字段
    • 从 DiaryPage 创建 New Chat 时更新 linked_chats
    • 从 ChatPage 创建 New Diary 时更新 linked_diaries
    • 在 DiaryPage 下方和 ChatPage 上方添加已连接文档 ListView
  • 实现自动摘要功能
    • 保存 Diary 时自动生成 diary_content_summarized
    • 生成 Chat 消息时自动生成 chat_content_summarized
  • 解决问题并改善 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)
  • ❔ 应用首次打开时添加欢迎页面(Logo)

  • ❔ ChatPage:把 title 的 default value 从 Random String 统一为“无标题”
  • ❔ DiaryPage:根据 Mood Slider 的值改变表情 Emoji 和颜色

  • ❔ ChatPage:实现 Delete Diary Link(点击 … icon 后可删除)
    • 必须同时删除 Diary/Chat Doc 的 linked field!
  • ❔ MoodPage(上方)- Mood Calendar
    • ❔ 可以查看每个日期写了多少篇帖子
    • ❔ 点击日期后,移动到对应日期
  • ❔ MoodPage(下方)- Mood stats
    • ❔ 输出当前聚焦月份的统计资料
      • ❔ 输出 AI 对已显示统计资料的评论
  • ❔ HomeFeedPage - import 后应用 flutter_slidable:4.0.0
  • ❔ 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,而且它被修改了,把那个 document 删除后重新放进去就行。具体怎么做还不知道。
  • ❔ DiaryPage - import 后应用 Interactive Slider

  • ❔ 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 小部件等

  • ❔(问题)创建 tmpGetAIComment 时,没有考虑用户选择的情绪关键词。

  • ❔ 到 2025.2.5 周三 为止,提取并安装发表用最终版本 APK

💭 日记

Minhyuk

明天开发就结束了。跑起来。

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 的核心功能,并添加自动摘要系统,提高了数据管理效率。接下来在剩余开发时间里整理优先级,集中准备发表就可以了!🚀🔥

留下评论