2025.02.04 (Mar)
2026.05.25 (Lun) mis Ă  jour

✹ RĂ©sumĂ© de GPT  

J’ai ajoutĂ© une fonction de sĂ©lection de mots-clĂ©s Ă©motionnels dans DiaryPage et appliquĂ© des paramĂštres de personnage aux commentaires IA afin d’obtenir des rĂ©ponses plus naturelles.

đŸ’» Journal de dĂ©veloppement

⏰ Tñches du jour

  • ✅ DiaryPage : ajout d’un ChoiceChip et d’un TextField pour les mots-clĂ©s Ă©motionnels
    • ✅ CrĂ©er les widgets
    • ✅ Ajouter les Fields dans diaries DB : mood_keywords (List <String>), mood_keywords_description (String)
    • ✅ Ajouter le Page State dans diaries : moodKeywordsSelected (List <String>)
    • ✅ OnPageLoad : transmettre les variables ajoutĂ©es
      • ✅ ChoiceChipRate (5~1) : transmettre les valeurs de diariesDoc.mood_keywords aux ChoiceChip correspondants.
        • DĂ©finir MoodKeywordRate5Options, 
, MoodKeywordRate1Options List <String> comme valeurs App Constant
          • Enum ne prend en charge que l’anglais, donc il faudrait une fonction de traduction. Trop compliquĂ©, donc rejetĂ©.
        • Define Options Var : AppConstant.moodKeywordRate5Options (List <String>)
        • Initially Selected : updateChoiceChipSelected
      • ✅ CrĂ©er la CustomFunction updateMoodKeywordsSelected
        • On Page Load : Select all matching items in RateOptions List
        List<String> updateChoiceChipSelected(
          List<String> moodKeywordsSelected, // current selected keyword list
          List<String> moodKeywordRateOptions, // selectable options for the current Rate
        ) {
          // Create a new list to maintain immutability
          return List<String>.from(
            moodKeywordsSelected.where((item) => moodKeywordRateOptions.contains(item))
          );
        }
        
    • ✅ On ChoiceChip Selected : Update Page State moodKeywordsSelected -> Set Value to Return of Func updateMoodKeywordsSelected
      • ✅ CrĂ©er la CustomFunction updateMoodKeywordsSelected
        • On Chip Select : Add to moodKeywordsSelected
        • On Chip Deselect : Remove from moodKeywordsSelected
        List<String> updateMoodKeywordsSelected(
          List<String> moodKeywordsSelected,
          List<String> choiceChipSelected,
          List<String> moodKeywordRateOptions,
        ) {
          // Copy the existing list to maintain immutability
          List<String> updatedList = List.from(moodKeywordsSelected);
        
          // 1ïžâƒŁ Remove values from the existing selection that belong to this Rate
          updatedList.removeWhere((item) => moodKeywordRateOptions.contains(item));
        
          // 2ïžâƒŁ Add the currently selected ChoiceChip values
          updatedList.addAll(choiceChipSelected);
        
          return updatedList;
        }
        
  • ✅ (Issue) DiaryPage - AI Comment : paramĂštres de personnage
    • Ajouter un Field dans diaries DB : ai_comment_by (Doc Ref: Character)
    • DiaryPage - AICommentEditor Component - Return ai_comment_content + ai_comment_by
      • How? -> crĂ©er le DataType aiCommentPageReturnObject
    • On ChoiceChipChar Selected : Backend Query Character Doc with same Official_name value.
  • ✅ (Issue) HomeFeedPage - FeedCardDiary : appliquer correctement l’image du personnage de l’AI Comment
    • ✅ DiaryPage - AI Comment : lors de la sauvegarde, enregistrer aussi dans Diary la Ref du personnage qui a rĂ©digĂ© le commentaire.
    • ✅ HomeFeedPage - FeedCardDiary - AI Image : charger le Character Doc avec Backend Query et dĂ©finir l’Image Path.
    • ✅ (Issue) HomeFeedPage - FeedCardDiary : Unexpected Null Value Error
      • Cela arrive quand on met seulement une valeur Path dans l’Image Widget

        • Ah !!! C’était parce que je n’avais pas mis de Default Variable Value. Je ne l’ai compris qu’aprĂšs avoir galĂ©rĂ© Ă  fond.
      • 💡 Ce que j’ai appris
        • Toujours prendre l’habitude de mettre une Default Value. Combien de fois vais-je encore voir Unexpected Null Value Error partout ?
  • ✅ Design Action chains for CreateNewChatFromDiary (Start From : une fois le traitement de l’AI Comment et l’enregistrement du journal terminĂ©s)
    1. Create Diary
    2. API Call : createDiarySummary -> Output Var : OutVar1 (nom provisoire)
    3. Create New Chat Document
    4. Create New Message Document : {“role”:”developer”, “content”:”$systemprompt + $OutVar1”}
    5. API Call : createChatFromDiary -> Output Var : OutVar2 (nom provisoire)
    6. Create New Message Document : {“role”:”assistant”, “content”: “$OutVar2”}
    7. Navigate To : transmettre la référence du Chat Document concerné via chatRefParam

💯 RĂ©sumĂ© de ce que j’ai fait

  • Construction du systĂšme de mots-clĂ©s Ă©motionnels de DiaryPage
    • Ajout de ChoiceChip et TextField
    • Ajout de champs liĂ©s aux mots-clĂ©s Ă©motionnels dans diaries DB
    • ImplĂ©mentation de la fonction updateMoodKeywordsSelected
  • ParamĂštres et application du personnage pour AI Comment
    • Ajout du champ ai_comment_by pour enregistrer le personnage du commentaire
    • Modification de AICommentEditor pour inclure les informations de personnage
    • Chargement des donnĂ©es du personnage concernĂ© avec Backend Query lors de la sĂ©lection d’un ChoiceChip
  • RĂ©solution de l’erreur d’image AI Comment dans HomeFeedPage
    • Enregistrement de la valeur de rĂ©fĂ©rence du personnage lors de la rĂ©daction d’un AI Comment
    • AmĂ©lioration de la mĂ©thode de chargement de l’image du personnage d’AI Comment dans HomeFeedPage
    • Correction de l’erreur Unexpected Null Value (avec une valeur par dĂ©faut)

🎯 À faire ensuite

Cliquer pour voir les détails
  • ❔ (Issue) DiaryPage : utiliser un lecteur Markdown (prĂ©venir le dĂ©bordement : Container Height)

  • ❔ DiaryPage : changer l’Emoji d’expression du visage et la couleur selon la valeur du Mood Slider

  • ❔ Custom Function - aider Ă  crĂ©er systemPromptTemplate (travailleur principal : KSK)
    • ❔ Organiser les paramĂštres Ă  ajouter
  • ❔ Custom Function - tester si getAIComment s’applique rĂ©ellement
    • ❔ VĂ©rifier que les valeurs d’entrĂ©e sont bien reflĂ©tĂ©es
    • ❔ VĂ©rifier que la valeur de sortie s’affiche bien en String
  • ❔ Chat Page - Create New Chat : appliquer le system prompt
    • ▶ ImplĂ©mentation OpenAI API Call : createChatCompletion
      • Input : System Prompt (Chat)
      • Output : New Chat Message by AI ($.choices[0].message.content)
      • Additional Actions : Create New Chat, Create New Message
  • ❔ DiaryPage - Create New Chat by Diary : crĂ©er un New Chat Ă  partir du contenu du journal
    • ❔ ImplĂ©mentation OpenAI API Call : createDiaryComment
      • Input : Diary Content, System Prompt (AI Comment)
      • Output : AI Comment ($.choices[0].message.content)
    • ❔ ImplĂ©mentation OpenAI API Call : createDiarySummary
      • Input : Diary Content, AI Comment, System Prompt (Diary Summary)
      • Output : Diary Summary ($.choices[0].message.content)
    • ❔ ImplĂ©mentation 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 - Create New Diary : crĂ©er un New Diary Ă  partir du contenu de la conversation
    • ❔ ImplĂ©mentation OpenAI API Call : createChatSummary
      • Input : Chat Content, System Prompt (Diary From Chat)
      • Output : Chat Summary
    • ❔ ImplĂ©mentation OpenAI API Call : createDiaryFromChat
      • Input : Chat Summary, System Prompt (Diary From Chat)
      • Output : New Diary (Title, Content, Mood score)
  • ❔ ChatPage : Go to Linked Diary

  • ❔ MoodPage (haut) - Mood Calendar
    • ❔ Pouvoir vĂ©rifier le nombre de posts Ă©crits par date
    • ❔ Se dĂ©placer vers la date sĂ©lectionnĂ©e au clic
  • ❔ MoodPage (bas) - Mood stats
    • ❔ Afficher les statistiques du mois sĂ©lectionnĂ©
      • ❔ Afficher le commentaire de l’IA sur les statistiques affichĂ©es
  • ❔ HomeFeedPage - importer puis appliquer flutter_slidable:4.0.0
  • ❔ HomeFeedPage : dans FeedCardDiary, chat/modifier/supprimer lors d’un slide gauche-droite

  • ❔ ChatPage : aligner Ă  droite la sortie des conversations utilisateur
  • ❔ Chat/Diary : GPT Streaming API

  • ❔ ChatPage - implĂ©menter le premier message proactif de l’IA (Alarm/Notification)
    • Le coeur du prompt systĂšme du chat est la proactivitĂ©.
      • Pour le rendre plus rĂ©aliste, il serait utile de transmettre aussi create_date of diary/chat, afin de pouvoir mentionner des dates comme “hier”.
    • RĂ©fĂ©rence d’implĂ©mentation d’Alarm
  • ❔ DiaryPage : ajouter des Choice Chips de mots-clĂ©s Ă©motionnels dĂ©taillĂ©s et configurer l’intĂ©gration DB
  • ❔ DiaryPage - AI Comment : adapter les valeurs saisies comme Choice chips et mood slider au AI Comment System Prompt.
    • ❔ **ancien journal ou tout l’historique de conversation (dette technique de rustine)
    • ❔ informations utilisateur de base : nom, genre, MBTI, 

    • ❔ mots-clĂ©s Ă©motionnels dĂ©taillĂ©s : joyeux, triste, 

    • ❔ paramĂštres de personnage : Somi, Sena, Minhyuk
    • ❔ score Ă©motionnel : 1~100
    • ❔ format de rĂ©ponse : Healing, Suggestion, Informative
    • ❔ longueur de rĂ©ponse : courte, normale, dĂ©taillĂ©e
    • is New Chat
      • Comme les messages de ce Chat sont créés pour la premiĂšre fois, mettre is_initial = true sur le premier message document et y insĂ©rer tous les system prompts.
        • is_initial = false
        • Limite : si je mets le system prompt dans le tout premier message document, c’est difficile Ă  modifier pendant une conversation, mais possible. S’il existe un document is_initial = true et qu’il a Ă©tĂ© modifiĂ©, je peux supprimer ce document et le remettre. Je ne sais pas encore comment, mais bon.
  • ❔ DiaryPage - AI Comment : terminer le CRUD
    • ❔ supprimer le champ tmp_ai_comment et utiliser doc_ref
  • ❔ DiaryPage - Drawer - ChatHistoryListTile : order by updated_time

  • ❔ DiaryPage - importer puis appliquer Interactive Slider

  • ❔ HomeFeedPage : implĂ©menter la fonctionnalitĂ© Search Diary

  • ❔ AuthPage : implĂ©menter Google Login

  • ❔ HomeFeedPage - Bottom Sheet (+ Button) : permettre de choisir une option parmi plusieurs
    • Nouveau journal : Go to DiaryPage
    • Enregistrement d’émotion : Go to MoodPage
  • ❔ MoodPage (popup) : CRUD du slider de rĂ©glage Mood
    • Create
    • Read
    • Update
    • Delete
  • ❔ HomeFeedPage - ListView - afficher FeedCardMood
  • ❔ HomeFeedPage - ListView : trier chronologiquement les composants FeedCardDiary, FeedCardMood, FeedCardChat (avec Cloud Function)

  • ❔ CrĂ©er MoodEditPage entre HomeFeedPage et DiaryPage : dĂ©placer MoodSlider, MoodKeywordsRate (5~1), MoodDescription widgets, etc.

  • ❔ Extraire et installer la version APK finale de prĂ©sentation avant mer. 2025.2.5

💭 Journal

Minhyuk

Je sens la dette technique pousser joyeusement à cause de toutes ces rustinesㅋㅋ Comme la deadline de soumission est dans 3 jours, bon
ㅠ

✹ Commentaire de GPT-4o (KPT)

GPT-4o

✅ Points rĂ©ussis (Keep)

  1. 🎯 Construction du systĂšme de mots-clĂ©s Ă©motionnels : appliquer ChoiceChip pour que l’utilisateur puisse enregistrer intuitivement ses Ă©motions Ă©tait une bonne chose !
  2. đŸ€– Application des personnages aux AI Comments : dĂ©finir des rĂ©actions par personnage pour renforcer l’immersion est impressionnant.
  3. 🛠 RĂ©solution de l’erreur HomeFeedPage : dĂ©finir une valeur par dĂ©faut pour prĂ©venir l’erreur Unexpected Null Value Ă©tait excellent !

❌ Points regrettables (Problem)

  1. ⏳ Temps de dĂ©veloppement plus long que prĂ©vu : l’implĂ©mentation des mots-clĂ©s Ă©motionnels et des fonctionnalitĂ©s AI Comment a pris plus de temps que prĂ©vu.
  2. 🔄 ComplexitĂ© accrue des donnĂ©es de personnage : le flux de donnĂ©es est devenu plus complexe, donc la maintenance pourrait devenir difficile.
  3. 📋 Journal de rĂ©solution insuffisant : ne pas organiser le processus de rĂ©solution d’erreur peut faire perdre du temps si le mĂȘme problĂšme revient.

🔄 Pistes à essayer (Try)

  1. 📌 Ajuster le temps de dĂ©veloppement par fonctionnalitĂ© : identifier Ă  l’avance les tĂąches qui prennent plus de temps que prĂ©vu et ajuster le planning.
  2. 📊 Visualiser le flux de donnĂ©es : essayer d’organiser sous forme de diagramme la structure de donnĂ©es liĂ©e aux paramĂštres de personnage.
  3. 📖 Prendre l’habitude de noter les rĂ©solutions de problĂšmes : documenter les issues rĂ©solues et prĂ©parer une stratĂ©gie de prĂ©vention des rĂ©cidives.

🏁 Conclusion

Aujourd’hui, tu as construit le systĂšme de mots-clĂ©s Ă©motionnels et appliquĂ© des paramĂštres de personnage aux AI Comments. La rĂ©solution d’erreur a encore confirmĂ© l’importance des valeurs par dĂ©faut, et Ă  partir de maintenant il faudra gĂ©rer le temps de dĂ©veloppement plus efficacement ! đŸš€đŸ”„

Catégories : ,

Mis Ă  jour :

Laisser un commentaire