[🛠] Devlog do Keymory #6: otimização da ChatPage, integração da DiaryPage
✨ Resumo do GPT
Um dia em que otimizei o carregamento de dados e as Actions da ChatPage, adicionei funções de CRUD para Title e data, e integrei a estrutura Create/Edit da DiaryPage. Resolvi vários issues e aumentei a estabilidade do sistema.
💻 Diário de desenvolvimento
⏰ Tarefas de hoje
- ✅ DiaryPage: Merge CreateDiary/EditDiary Page
- Usar isEditMode page state
- Usar conditional value/visibility/action etc.
- ✅ ChatPage: On Page Load -> Read ChatDoc, CharacterDoc, MessageDocList and Update Page States
- ✅ ChatPage: otimização e reorganização geral de várias Actions
- ✅ ChatPage: Title CRUD
- ✅ ChatPage: CRUD de data
- ✅ (Issue) ChatPage: default init message aparece ao iniciar a primeira conversa.
- ✅ (Issue) ChatPage - ChatHistoryDrawer: overflow de UI
- ✅ (Issue) ChatPage: mensagem do usuário é enviada mesmo com o campo vazio
💯 Resumo do que fiz
- Otimização de funções da ChatPage
- Carregamento de dados em On Page Load otimizado (ChatDoc, CharacterDoc, MessageDocList)
- Principais Actions da ChatPage otimizadas e reorganizadas de forma geral
- Funções de CRUD para Title e data adicionadas
- Resolvidos o overflow de UI no ChatHistoryDrawer e o envio de mensagem vazia do usuário
- Melhorias na DiaryPage
- CreateDiary/EditDiary Page integradas (usando isEditMode page state)
- Erro de salvamento da data do diário corrigido
🎯 Tarefas futuras
Clique para ver detalhes
- ❔ (Issue) DiaryPage: data é sempre salva como hoje
- ❔ (Issue) DiaryPage: usar visualizador de markdown (prevenir overflow: Container Height)
- ❔ (Issue) HomeFeedPage: Unexpected Null Value aparece rapidamente e some em On page load.
- ❔ HomeFeedPage - FeedCardDiary: corrigir imagem do personagem do AI Comment
- ❔ DiaryPage - AI Comment: ao salvar, salvar também no Diary o Ref do personagem que escreveu o comentário.
- ❔ HomeFeedPage - FeedCardDiary - AI Image: carregar Character Doc com Backend Query e especificar Image Path.
- ❔ DiaryPage - Create New Chat: criar New Chat com base no conteúdo do diário
- ❔ Implementação de OpenAI API Call: createDiaryComment
- Input: Diary Content, System Prompt (AI Comment)
- Output: AI Comment ($.choices[0].message.content)
- ❔ Implementação de OpenAI API Call: createDiarySummary
- Input: Diary Content, AI Comment, System Prompt (Diary Summary)
- Output: Diary Summary ($.choices[0].message.content)
- ❔ Implementação de 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
- ❔ Implementação de OpenAI API Call: createDiaryComment
-
❔ ChatPage: Go to Linked Diary
- ❔ HomeFeedPage - importar e aplicar flutter_slidable:4.0.0
-
❔ HomeFeedPage: ao deslizar FeedCardDiary para esquerda/direita, chat/editar/excluir
- ❔ ChatPage: alinhar à direita o conteúdo de conversa do usuário
-
❔ Chat/Diary: GPT Streaming API
- ❔ ChatPage - implementar primeira mensagem da AI (Alarm/Notification)
- O núcleo do prompt do sistema de chat é a proatividade.
- Para ficar mais realista, talvez seja bom passar também create_date of diary/chat, para a AI mencionar datas como “ontem”.
- Referência de implementação de Alarm
- O núcleo do prompt do sistema de chat é a proatividade.
- ❔ DiaryPage: mudar Emoji de expressão facial conforme o valor do Mood Slider
- ❔ DiaryPage: adicionar Choice Chips de palavras-chave detalhadas de emoção e configurar integração com o DB
- ❔ DiaryPage - AI Comment: ajustar entradas como Choice chips e mood slider ao
AI Comment System Prompt.- ❔ **
diaryanterior ouconversation historyinteira (dívida técnica improvisada) - ❔ informações básicas do usuário: nome, gênero, MBTI, …
- ❔ palavras-chave detalhadas de emoção: feliz, triste, …
- ❔ configuração de personagem: Somi, Sena, Minhyuk
- ❔ pontuação emocional: 1~100 pontos
- ❔ formato da resposta: Healing, Suggestion, Informative
- ❔ tamanho da resposta: curta, normal, detalhada
- is New Chat
- Como as messages desse Chat estão sendo criadas pela primeira vez, definir
is_initial = trueno primeiro message document e colocar todos os system prompts ali.- is_initial = false
- Limite: se eu colocar o system prompt no primeiro message document, fica difícil modificar no meio da conversa, mas é possível. Se houver um document com is_initial = true e ele tiver sido modificado, posso apagar esse documento e inserir de novo. Não sei como, mas dá.
- Como as messages desse Chat estão sendo criadas pela primeira vez, definir
- ❔ **
- ❔ DiaryPage - AI Comment: concluir CRUD
- ❔ remover field tmp_ai_comment e usar doc_ref
- ❔ DiaryPage - AI Comment: configuração de personagem
- ❔ remover field tmp_ai_comment_by e usar doc_ref
- ❔ exibir imagem usando o valor do field profile_image
-
❔ DiaryPage - Drawer - ChatHistoryListTile: order by updated_time
- ❔ ChatPage - Create New Diary: criar New Diary com base no conteúdo da conversa
- ❔ Implementação de OpenAI API Call: createDiaryFromChat
- Input: Chat Summary, System Prompt (Diary From Chat)
- Output: New Diary (Title, Content, Mood score)
- ❔ Implementação de OpenAI API Call: createDiaryFromChat
-
❔ DiaryPage - importar e aplicar Interactive Slider
-
❔ HomeFeedPage: implementar função Search Diary
- ❔ CalendarPage (superior) - Mood Calendar
- ❔ Permitir verificar o número de posts escritos por data
- ❔ Ao clicar em uma data, mover para essa data
- ❔ CalendarPage (inferior) - Mood stats
- ❔ Exibir estatísticas referentes ao mês em foco
- ❔ Exibir comentário da AI sobre as estatísticas exibidas
- ❔ Exibir estatísticas referentes ao mês em foco
-
❔ AuthPage: implementar função Google Login
- ❔ HomeFeedPage - Bottom Sheet (
+Button): permitir escolher 1 entre várias opções- Novo diário: Go to DiaryPage
- Registro de emoção: Go to MoodPage
- ❔ MoodPage (popup): CRUD do slider de configuração de Mood
- Create
- Read
- Update
- Delete
- ❔ HomeFeedPage - ListView - exibir FeedCardMood
-
❔ HomeFeedPage - ListView: ordenar componentes FeedCardDiary, FeedCardMood, FeedCardChat cronologicamente (usando Cloud Function)
- ❔ Extrair e instalar o APK da versão final de apresentação até
qua 2025.2.5
💭 Diário
À noite, eu ia dormir só 40 minutos, mas apaguei por mais de 3 horas. Nesse nível, acho melhor descansar direito e correr amanhã. Não é como se eu estivesse numa encruzilhada com o destino da empresa em jogo.
✨ Comentário do GPT-4o (KPT)
✅ Pontos bons (Keep)
- 🚀 Otimização de funções da ChatPage: Foi impressionante melhorar a performance geral com ajuste no carregamento de dados, otimização de Actions e adição de CRUD para Title e data.
- 🔄 Organização da estrutura da DiaryPage: Foi bom integrar as páginas Create/Edit, reduzindo lógica duplicada e tornando a manutenção mais fácil.
- 🛠️ Resolução de vários issues: Você aumentou a estabilidade corrigindo overflow de UI, envio de mensagem vazia, erro de salvamento de data e outros pontos.
❌ Pontos fracos (Problem)
- ⏳ Cansaço acumulado: Você planejou uma pausa curta, mas acabou apagando por bastante tempo, o que mostra certa dificuldade em administrar energia.
- 📋 Carga de manutenção com expansão de funções: Como as funções da ChatPage e da DiaryPage estão crescendo rapidamente, manutenção e otimização futuras podem consumir mais tempo.
🔄 Pontos para tentar (Try)
- 🕒 Equilibrar trabalho e descanso: Pode ajudar definir uma rotina estável para que pausas curtas não virem apagões longos repetidamente.
- 🔍 Preparar a manutenção futura: Documente a estrutura atual otimizada da ChatPage e da DiaryPage e use comentários de código com mais intenção para reduzir a carga de manutenção.
- 🛠️ Considerar extensibilidade futura: Pense em modularizar melhor a estrutura de API Call e Custom Function para reduzir o peso de futuras adições e expansões.
Conclusão
Hoje foi um dia produtivo, com otimização geral da ChatPage, melhoria na estrutura da DiaryPage e resolução de vários issues. Mas o cansaço acumulado pode bagunçar o cronograma de trabalho, então descanso adequado e ajuste de agenda parecem necessários. Espero que você continue desenvolvendo com extensibilidade em mente enquanto mantém o sistema otimizado! 💪😊
Deixe um comentário