2025.01.30 (λͺ©)
2026.05.25 (μ›”) μˆ˜μ •

✨ GPT Summary γ€€

A day of improving Keymory’s major features, refining AI integration and data structure, and feeling the reality that time is running short.

πŸ’» Development Log

⏰ Today’s tasks

  • βœ… DiaryPage - Mood: completed Mood setting slider
  • βœ… HomeFeedPage - ListView - FeedCardDiary: display Mood Color on the border
    • Solved with Container Box Shadow
  • βœ… OnboardingPage - save after entering additional default user information
    • βœ… DB Field additions: name (display_name), gender, MBTI (mbti), …
    • βœ… HomeFeedPage - OnPageLoad: Navigate to OnboardingPage if required input information such as display_name and gender is missing
    • βœ… Field Type - Enum vs String: Field Type should be set to String because it is easier to manage. Decided to use Enum only for Option Value Generation.
  • βœ… Fixed OpenAI API Request so that the message value from the response body is output normally
  • βœ… Discussion and experiment: where should AI character information be stored? (OpenAI API Assistant vs FireStore Character Collection)
    • Result: store it in FireStore Characters Collection.
      • Reason: from the user’s perspective, the only API Call they would use is Get Assistant, and the value to receive is fixed in the first place.

πŸ’― Summary of what I did

  • DiaryPage improvements
    • Completed Mood setting slider
    • Implemented AI Comment CRUD
    • Added customization buttons for AI Comment tone and advice style
    • Decided and applied where to store AI character information
  • HomeFeedPage improvements
    • Changed the date display basis from month-based to day-based
    • Added AI Comment image and text output logic
    • Improved Bottom Sheet and ListView
  • AI system and API integration
    • Modified OpenAI API Request and confirmed normal response output
    • Decided to store AI character information in FireStore
    • Organized the data structure and added features related to AI Comment

🎯 Tomorrow’s tasks

(omitted)

🎯 Future tasks

  • ❔ diary to chat
  • ❔ chat to diary
  • ❔ chats history

  • ❔ Think through the scenario for implementing CustomFunction getDiaryParams
    • Parameter Values obtained from Characters (Collection)
      • Character settings (Character Document)
        • ex) Somi: name (20s), college student, shy personality, …
      • How values are called: API Call - Get Assistant
    • Parameter Values obtained from User Information
      • Name, gender, MBTI
      • How values are called: Backend Query - Authenticated User
    • Parameter Values obtained from DiaryPage Variables
      • Diary content, detailed emotion keywords, emotion score, response format, response length
      • How values are called: Widget State, Page State
    • Role of CustomFunction (getDiaryParams)
      • Receive all Parameter Values as input values.
      • Write the prompt to send to GPT.
      • Return Messages (List <Json>) value.
        • [{"role":"developer", "content":"~~~"}]
  • ❔ Create OpenAI API Call: createDiaryComment
    • Basically a structure similar to createChatCompletion
    • Difference: none. Created just to distinguish it.
    • The Messages Variable required by API Call - createDiaryComment is the return value of custom function getDiaryParams.
  • ❔ Store the system prompt list in OpenAI API Assistant?
  • ❔ Write logic so messages are written based on the system prompt stored in OpenAI API Assistant?

  • ❔ DiaryPage: change face expression Emoji according to Mood Slider value
  • ❔ DiaryPage: add detailed emotion keyword Choice Chips and set DB integration
  • ❔ DiaryPage - AI Comment: change inputs such as Choice chips and mood slider to fit the AI Comment System Prompt.
    • ❔ **previous diary or entire conversation history (patchy technical debt)
    • ❔ basic user information: name, gender, MBTI, …
    • ❔ detailed emotion keywords: happy, sad, …
    • ❔ character settings: Somi, Sena, Minhyuk
    • ❔ emotion score: 1 to 100
    • ❔ response format: Healing, Suggestion, Informative
    • ❔ response length: short, normal, detailed
    • is New Chat
      • Since this Chat’s messages are being created for the first time, set is_initial = true on the first message document and shove in all system prompts.
        • is_initial = false
        • Limit: if I put the system prompt into the very first message document, it is hard to modify in the middle of a conversation, but possible. If there is an is_initial = true document and it was modified, I can delete that document and put it back in. I do not know how, but still.
  • ❔ DiaryPage - AI Comment: create manipulate_prompt Custom Function
    • Complete the system prompt with switch-case according to the received parameters, and return List <JSON>
    • The system prompt person must insert that return value properly into the OpenAI API Request Body and receive the result.
  • ❔ DiaryPage - AI Comment: complete CRUD with dummy data
    • ❔ remove tmp_ai_comment field and use doc_ref
  • ❔ DiaryPage - AI Comment: character settings
    • ❔ remove tmp_ai_comment_by field and use doc_ref
    • ❔ output image using profile_image field value
  • How to Use Open AI’s GPT-4o in FlutterFlow - Part 1
  • How to Use Open AI’s GPT-4o in FlutterFlow - Part 2

  • DiaryPage - Start AI Chat: create a New Chat based on the diary content
    • AI first presents a question based on the diary content
  • ChatPage - create ChatHistoryPage: list previous chat history in a ListView
    • Create
    • Read
    • Update
    • Delete
  • DiaryPage - Drawer - create ChatHistoryListTile: card summary style like GPT

  • HomeFeedPage - Bottom Sheet (+ Button): make it possible to choose one of several options
    • New diary: Go to DiaryPage
    • Emotion record: Go to MoodPage
  • MoodPage (popup): Mood setting slider CRUD
    • Create
    • Read
    • Update
    • Delete
  • HomeFeedPage - ListView - show FeedCardMood
  • HomeFeedPage - ListView: sort FeedCardDiary, FeedCardMood, FeedCardChat components chronologically (using Cloud Function)

  • HomeFeedPage: resolve issue on page load (Unexpected Null Value)
  • Apply Interactive Slider
  • Extract and install the final presentation APK by Wed 2025.2.5

πŸ’­ Diary

Minhyuk

There is no time.

Omitted.

keymory-1.png keymory-2.png keymory-3.png keymory-4.png keymory-5.png

✨ GPT-4o Comment (KPT)

GPT-4o

βœ… What Went Well (Keep)

  • πŸš€ Greatly improved major features: It is excellent that you raised the completeness of the project by expanding core features such as AI Comment CRUD, Mood settings, and HomeFeedPage improvements.
  • πŸ” Organized data structure: It was impressive that you systematically organized data management, including deciding to store AI character information in FireStore.
  • πŸ“‹ Concrete goal setting: It was good that you clearly organized the remaining work and priorities, making the progress plan toward the presentation version more concrete.

❌ What Was Missing (Problem)

  • ⏳ Lack of time: As the development schedule gets tighter, there is a growing chance that there will not be enough time for testing and debugging.
  • πŸ—οΈ Many temporary solutions: A lot of parts were solved with temporary fields and functions to implement features quickly, so technical debt may accumulate.

πŸ”„ What to Try (Try)

  • πŸ› οΈ Adjust priorities: Clearly separate the features that are absolutely necessary for the final presentation version from the ones that can be improved later, and raise the completeness of the core features first.
  • πŸ•΅οΈ Build a bug-check system: Since time is short, do short rounds of feature testing and debugging every day to minimize unexpected errors.
  • πŸ”„ Plan technical debt cleanup: Document improvement plans for temporarily implemented features and organize what should be polished first after the presentation.

Conclusion
Today was a day where you completed Keymory’s core features and raised the project’s completeness, but also deeply felt the lack of time in a tight schedule. I hope you do your best until presentation day while also organizing things for later improvement! πŸ’ͺ😊

Leave a comment