2025.02.01 (六)
2026.05.25 (一) 更新

✨ GPT 的摘要  

优化 ChatPage 的数据加载和 Action,追加 Title 与日期 CRUD 功能,并整合 DiaryPage 的 Create/Edit 结构的一天。解决多个问题的同时提升了系统稳定性。

💻 开发日志

⏰ 今天要做的事

  • ✅ 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
  • ✅ (问题)ChatPage:第一次开始对话时,会出现 default init message。
  • ✅ (问题)ChatPage - ChatHistoryDrawer:UI 溢出
  • ✅ (问题)ChatPage:即使用户消息为空也会发送

💯 已完成事项摘要

  • ChatPage 功能优化
    • 优化 On Page Load 时的数据加载(ChatDoc, CharacterDoc, MessageDocList)
    • 整体优化并重组 ChatPage 的主要 Action
    • 追加 Title 与日期 CRUD 功能
    • 解决 ChatHistoryDrawer UI 溢出和用户空消息发送问题
  • DiaryPage 改进
    • 整合 CreateDiary/EditDiary Page(使用 isEditMode page state)
    • 修正日记日期保存错误

🎯 以后要做的事

点击查看详情
  • ❔ (问题)DiaryPage:日期总是保存为今天
  • ❔ (问题)DiaryPage:使用 markdown viewer(防止溢出:Container Height)
  • ❔ (问题)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
  • ❔ ChatPage:Go to Linked Diary

  • ❔ HomeFeedPage - import 后应用 flutter_slidable:4.0.0
  • ❔ HomeFeedPage:在 FeedCardDiary 左右 slide 时聊天/编辑/删除

  • ❔ ChatPage:用户对话输出内容右对齐
  • ❔ Chat/Diary:GPT Streaming API

  • ❔ ChatPage - 实现 AI 先开口(Alarm/Notification)
    • 聊天系统 prompt 的核心是主动性。
      • 想做得更真实的话,也可以传递 diary/chat 的 create_date,这样提到“昨天”之类的日期会更自然。
    • Alarm 功能实现参考
  • ❔ DiaryPage:根据 Mood Slider 值改变脸部表情 Emoji
  • ❔ 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,然后把所有 system prompt 都塞进去。
        • is_initial = false
        • 限制:如果把 system prompt 塞进最开始的 message document,虽然对话中途修改会比较困难,但也不是不可能。 如果存在 is_initial = true 的 document,而且它被修改了,那把那个 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)
  • ❔ DiaryPage - import 后应用 Interactive Slider

  • ❔ 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(popup):Mood 设置 slider CRUD
    • Create
    • Read
    • Update
    • Delete
  • ❔ HomeFeedPage - ListView:显示 FeedCardMood
  • ❔ HomeFeedPage - ListView:按时间顺序排序 FeedCardDiary, FeedCardMood, FeedCardChat component(使用 Cloud Function)

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

💭 日记

闵赫

晚上本来想睡 40 分钟,结果昏睡了超过 3 个小时。这样的话,还不如干脆好好休息,明天再冲。毕竟也不是站在公司存亡的岔路口上。

GPT-4o 的评论(KPT)

GPT-4o

✅ 做得好的地方(Keep)

  • 🚀 ChatPage 功能优化: 改进数据加载方式、优化 Action、追加 Title 与日期 CRUD 等,整体性能得到提升,这一点很令人印象深刻。
  • 🔄 DiaryPage 结构整理: 通过整合 Create/Edit 页面减少重复逻辑,让管理更容易,这一点很好。
  • 🛠️ 解决多个问题: 修复 UI 溢出、空消息发送问题、日期保存错误等,提高了稳定性。

❌ 可惜的地方(Problem)

  • 疲劳累积: 本来计划短暂休息,最后却长时间昏睡,说明体力管理上有些吃力。
  • 📋 功能扩展带来的维护负担: ChatPage 和 DiaryPage 的功能快速扩展,之后维护和优化可能会花更多时间。

🔄 可以尝试的地方(Try)

  • 🕒 调整工作与休息的平衡: 为了避免短休息反复变成长时间断电,可以试着建立固定节奏。
  • 🔍 为后续维护做整理: 将当前优化后的 ChatPage 和 DiaryPage 结构文档化,并积极使用代码注释,降低维护负担。
  • 🛠️ 考虑后续扩展性: 思考如何让 API Call 与 Custom Function 结构更加模块化,减少以后追加功能和扩展时的负担。

结论
今天是全面优化 ChatPage 功能、改进 DiaryPage 结构,并解决多个问题的高产一天。不过疲劳累积可能会动摇工作日程,所以看起来需要适当休息并调整安排。希望之后也能在保持优化后的系统同时,继续考虑扩展性推进开发!💪😊

留下评论