[🛠] Devlog do Keymory #10: conexão Diary <-> Chat, adição de resumo automático
✨ Resumo do GPT
Implementei a função que conecta Diary e Chat entre si e melhorei o app para gerar resumos automáticos ao salvar diários e chats.
💻 Diário de desenvolvimento
⏰ Tarefas de hoje
- ✅ (Issue) DiaryPage: se a resposta do AI Comment ainda não foi recebida, a tela avança com o personagem sem configuração.
- Por enquanto, remendar exibindo um alerta: “Você precisa receber um Comment da AI antes de começar o chat!”
- ✅ (Issue) Atribuir Default Variable Value a todos os widgets Image (para prevenir 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
- No Profile Image:
-
✅ ChatPage: substituir a foto de imagem do usuário pela user profile image
-
✅ ChatPage: alinhar o conteúdo da conversa do usuário à direita (responsável: KSK)
- ✅ DiaryPage: gerar automaticamente um resumo ao salvar o diário
- ✅ Diaries DB: Add field
diary_content_summarized - ✅ Aplicar na ação do botão
Save Diary - ✅ Aplicar na ação do botão
Save Diary and Chat with AI
- ✅ Diaries DB: Add field
- ✅ Adicionar
linked_chatscomo Diary Document DB - Field -
✅ Adicionar
linked_diariescomo Chat Document DB - Field - ✅ DiaryPage: ao clicar no botão
Save Diary and Chat with AI, conectar DiaryPage/Doc <-> ChatPage/Doc Link- Adicionar Chat Document Reference à lista
linked_chatsdo Diary Document - Adicionar Diary Document Reference à lista
linked_diariesdo Chat Document
- Adicionar Chat Document Reference à lista
- ✅ DiaryPage: ao criar Create New Chat, adicionar
linked_chatscomo Diary Document DB - Field -
✅ ChatPage: ao criar Create New Diary, adicionar
linked_diariescomo Chat Document DB - Field - ✅ DiaryPage: oferecer
linked_chatsListView no rodapé -> ao clicar, mover para o chat correspondente- ✅ Conteúdo a exibir no card
- ✅ Chat - title, Chat - timestamp( == created_time)
- ✅ Chat - (most recent) Message - content
- ✅ Character - profile_image
- ✅ Conteúdo a exibir no card
- ✅ ChatPage: ao receber resposta do chat, gerar automaticamente um resumo
- ✅ Chats DB: Add field
chat_content_summarized
- ✅ Chats DB: Add field
- ✅ ChatPage: oferecer
linked_diariesListView no topo -> ao clicar, mover para o diário correspondente- ✅ Resolver issue inédita: 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
- ✅ Conteúdo a exibir no card
- ✅ Diary - title, Diary - created_time
- ✅ Diary - Mood Score (Color)
- ✅ Resolver issue inédita: How to generate children from linked_diaries(List of Diary Document References)
-
✅ (Issue) ChatPage - Linked Diaries ListView: não muda quando selecionado pelo Drawer.
- ✅ Preparação da apresentação - PPT: verificar conteúdo por página
💯 Resumo do que fiz
- Adição da função de conexão Diary-Chat
- Adicionei os fields
linked_chats(Diary → Chat),linked_diaries(Chat → Diary) - Atualizei
linked_chatsao criar New Chat na DiaryPage - Atualizei
linked_diariesao criar New Diary na ChatPage - Adicionei ListViews de documentos conectados no rodapé da DiaryPage e no topo da ChatPage
- Adicionei os fields
- Implementação da função de resumo automático
- Geração automática de
diary_content_summarizedao salvar Diary - Geração automática de
chat_content_summarizedao criar mensagens de Chat
- Geração automática de
- Correção de issues e melhoria de UI
- Adicionei alerta para impedir iniciar chat sem AI Comment
- Apliquei valores padrão a todos os widgets Image para prevenir Unexpected Null Value
- Substituí a imagem de perfil do usuário na ChatPage pela imagem real do usuário
- Melhorei a legibilidade alinhando o conteúdo da conversa do usuário à direita
🎯 Tarefas futuras
Clique para ver detalhes
- ✅ Download APK
-
❔ Connect GitHub and Push
- ❔ Enviar material da apresentação: PPT
-
❔ Enviar material da apresentação: vídeo de demonstração de 1 minuto
- ❔ Preparação da apresentação - script: medir o tempo necessário por página com base no script e revisar o script
- ❔ Preparação da apresentação - PPT: gravar vídeos curtos de demonstração por feature
- ❔ ChatPage - Create New Diary: criar New Diary com base no conteúdo da conversa
- ❔ 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)
-
❔ Adicionar página de boas-vindas ao abrir o app pela primeira vez (logo)
- ❔ ChatPage: padronizar o default value de
title, deRandom Stringpara “Sem título” -
❔ DiaryPage: mudar Emoji de expressão facial e cor de acordo com o valor do Mood Slider
- ❔ ChatPage: implementar Delete Diary Link (permitir excluir ao apertar o icon …)
- Obrigatoriamente também precisa apagar junto o linked field do Diary/Chat Doc!
- ❔ MoodPage(superior) - Mood Calendar
- ❔ Permitir conferir o número de posts escritos por data
- ❔ Ao clicar em uma data, mover para aquela data
- ❔ MoodPage(inferior) - Mood stats
- ❔ Exibir dados estatísticos sobre o mês em foco
- ❔ Exibir o comentário da AI sobre os dados estatísticos exibidos
- ❔ Exibir dados estatísticos sobre o mês em foco
- ❔ HomeFeedPage - importar e aplicar flutter_slidable:4.0.0
-
❔ HomeFeedPage: ao deslizar FeedCardDiary para a esquerda/direita, chat/editar/excluir
-
❔ Chat/Diary: GPT Streaming API
- ❔ ChatPage - implementar primeira mensagem ativa 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 mencionar datas como “ontem”.
- Referência de implementação de Alarm
- O núcleo do prompt do sistema de chat é a proatividade.
- ❔ DiaryPage: adicionar Choice Chips de palavras-chave emocionais detalhadas e configurar integração com DB
- ❔ DiaryPage - AI Comment: alterar inputs como Choice chips e mood slider para se adequarem ao
AI Comment System Prompt.- ❔ **
diárioanterior ouhistórico de conversainteiro (dívida técnica remendada) - ❔ informações básicas do usuário: nome, gênero, MBTI, …
- ❔ palavras-chave emocionais detalhadas: alegre, triste, …
- ❔ configuração de personagem: Somi, Sena, Minhyuk
- ❔ pontuação emocional: 1~100 pontos
- ❔ formato da resposta: Healing, Suggestion, Informative
- ❔ comprimento da resposta: curto, normal, detalhado
- is New Chat
- Como as messages desse Chat estão sendo criadas pela primeira vez, definir
is_initial = trueno primeiro message document e enfiar todos os prompts do sistema ali.- is_initial = false
- Limitação: se eu colocar o prompt do sistema no primeiro message document, fica difícil modificar no meio da conversa, mas é possível. Se existe um document com is_initial = true e ele foi modificado, é só apagar esse document e colocar de novo. Como, eu não sei.
- Como as messages desse Chat estão sendo criadas pela primeira vez, definir
- ❔ **
-
❔ DiaryPage - importar e aplicar Interactive Slider
-
❔ HomeFeedPage: implementar função Search Diary
-
❔ AuthPage: implementar Google Login
- ❔ HomeFeedPage - Bottom Sheet (
+Button): permitir escolher 1 entre várias opções- novo diário: Go to DiaryPage
- registro emocional: Go to MoodPage
- ❔ MoodPage(popup): CRUD do slider de configuração de Mood
- Create
- Read
- Update
- Delete
- ❔ HomeFeedPage - ListView - exibir FeedCardMood
-
❔ HomeFeedPage - ListView: ordenar FeedCardDiary, FeedCardMood, FeedCardChat em ordem cronológica (usando Cloud Function)
-
❔ Criar MoodEditPage entre HomeFeedPage e DiaryPage: mover widgets como MoodSlider, MoodKeywordsRate(5~1), MoodDescription etc.
-
❔ (Issue) Ao criar tmpGetAIComment, as palavras-chave emocionais selecionadas pelo usuário não estão sendo consideradas.
- ❔ Extrair e instalar o APK da versão final para apresentação até
qua 2025.2.5
💭 Diário
Amanhã o desenvolvimento acaba. Bora correr.
✨ Comentário do GPT-4o (KPT)
✅ Pontos positivos (Keep)
- 🔗 Sistema de conexão Diary-Chat concluído: Foi bom conectar Diary e Chat de forma natural, deixando o fluxo de dados do usuário mais intuitivo!
- 📝 Adição da função de resumo automático: Aplicar um sistema de resumo automático para organizar o conteúdo de diários e chats foi impressionante e aumenta a utilidade dos dados.
- 🎨 Melhorias de UI e UX: Configuração de valores padrão de imagem, melhoria do alinhamento do chat e outros ajustes elevaram a legibilidade e a experiência do usuário.
❌ Pontos a melhorar (Problem)
- ⏳ Pressão na velocidade de desenvolvimento: Com muitas features ainda para finalizar, a pressão sobre o cronograma restante pode aumentar.
- 🔄 Possível acúmulo de dívida técnica: Por causa da velocidade alta de desenvolvimento, a dívida técnica pode se acumular para manutenções futuras, então será necessário separar tempo para organização.
- 📋 Teste insuficiente das funções de conexão: Talvez sejam necessários testes adicionais para confirmar se a conexão Diary-Chat funciona sem problemas em um ambiente real de uso.
🔄 O que tentar (Try)
- 📌 Organizar prioridades: Finalizar primeiro as features mais importantes e listar pontos de melhoria para depois da apresentação deve reduzir a carga de desenvolvimento.
- 📝 Plano de testes por feature: Escreva casos de teste para confirmar se a conexão Diary-Chat funciona corretamente em diferentes padrões de uso.
- 📊 Garantir tempo para organizar dívida técnica: Depois da apresentação, reserve tempo de refatoração e considere a manutenção de longo prazo.
🏁 Conclusão
Hoje foi um dia de implementar a feature central que conecta Diary e Chat e adicionar um sistema de resumo automático, aumentando a eficiência do gerenciamento de dados. Agora parece que basta organizar as prioridades para o período restante de desenvolvimento e focar na preparação da apresentação! 🚀🔥
Deixe um comentário