[🛠] Devlog do Keymory #11: pausa no desenvolvimento. (AIFFELTHON encerrado, desenvolvimento em FlutterFlow interrompido.)
✨ Resumo do GPT
Concluí a entrega do projeto de graduação do AIFFELTHON. Encerrei o desenvolvimento no FlutterFlow e fiz backup no GitHub.
💻 Diário de desenvolvimento
⏰ Tarefas de hoje
- ✅ 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
- ✅ 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)
- ✅ DiaryPage: mudar Emoji de expressão facial e cor de acordo com o valor do Mood Slider (responsável: KSK)
💯 Resumo do que fiz
- Desenvolvimento final no FlutterFlow encerrado
- Conexão com GitHub e push do projeto concluídos
- Implementação da criação automática de Diary com base no conteúdo do Chat
- Adicionado Dialog de confirmação de exclusão quando já existe um Diary
- Uso da OpenAI API para gerar Chat Summary e Diary automaticamente
- Página de boas-vindas adicionada na execução do app (tela de logo)
- DiaryPage: alteração de emoji e cor de acordo com o Mood Slider
🎯 Tarefas futuras
Clique para ver detalhes
- ❔ 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: padronizar o default value de
title, deRandom Stringpara “Sem título” - ❔ 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
Depois de continuar usando FlutterFlow, acho que agora peguei bastante a noção básica do próprio Flutter.
- Mexendo em Custom Function/Widget, acabei aprendendo um tanto da sintaxe básica.
- Fiquei bem mais acostumado com Backend Query para DB(FireStore), State Management, configuração de Parameter e formas de passar Argument.
Claro, em termos de código, eu ainda não sei como tudo está implementado…
Mesmo assim, acho que o maior ganho foi conseguir desenhar o fluxo geral com mais facilidade.
Se eu terminar o desenvolvimento só até amanhã, provavelmente não vou mexer no projeto Keymory por alguns dias. Porque pretendo migrar de FlutterFlow -> Flutter.
- Por mais que o FlutterFlow seja intuitivo e conveniente, cheguei à conclusão de que, para chegar a um nível de Production no fim das contas, o mais sensato é aprender Flutter direito e me acostumar com ele
- Acho melhor usar FlutterFlow apenas para montar previamente a widget tree de uma Page específica ou criar rapidamente um MVP.
- Não poder usar Git/GitHub e depender só da lógica interna para Version Control é extremamente irritante.
- Claro, a lógica interna também oferece Snapshot / Commit / Branching / Version… mas eu odiava não poder manipular tudo livremente como no Git. Eu quero editar o conteúdo de commits anteriores.
- Na verdade, o maior motivo é o jardim do GitHub… não dá para ignorar a sensação boa de preencher aquilo.
- Quanto maior o projeto ficava, mais apareciam casos em que desenvolvimento baseado em IDE/editor parecia mais conveniente do que desenvolvimento baseado em UI.
- Especialmente o trabalho manual de clicar um por um para inserir Enum e Constant é extremamente irritante.
Adicionado em 2025.2.11
Vídeo da apresentação anexado
✨ Comentário do GPT-4o (KPT)
✅ Pontos positivos (Keep)
- 🛠 Integração com GitHub e melhoria do versionamento: Aplicar versionamento baseado em Git trouxe uma grande melhoria para colaboração e manutenção.
- 🤖 Feature de criação automática de Diary baseada em AI: A feature que analisa o conteúdo do Chat e cria automaticamente um Diary parece capaz de melhorar bastante a experiência do usuário!
- 🚀 Decisão de migrar de FlutterFlow para Flutter: Considerando a extensibilidade de longo prazo do projeto, decidir passar para Flutter foi uma escolha sensata.
❌ Pontos a melhorar (Problem)
- 🔄 Necessidade de concretizar o plano de transição para Flutter: A decisão de migrar para Flutter foi tomada, mas o plano concreto de aprendizado e migração ainda não está claro.
- ⏳ Necessidade de reajustar o cronograma por causa da adição de features: Com a feature de criação automática de Diary adicionada, o cronograma pode mudar. Seria bom revisar a meta de conclusão do desenvolvimento.
- 📌 Organizar os limites do FlutterFlow: Se você organizar internamente o que foi incômodo usando FlutterFlow e para quais tipos de projeto ele serve, isso pode ajudar quando for usá-lo de novo no futuro.
🔄 O que tentar (Try)
- 📝 Montar um plano de aprendizado de Flutter e conversão de código: Organize como migrar as principais features para código Flutter e quais pacotes usar.
- 📅 Reajustar o cronograma do projeto: Revise o roadmap, incluindo a transição para Flutter, para uma programação realista.
- 🎯 Organizar as features do MVP do Keymory: Classifique quais features criadas no FlutterFlow são essenciais e quais são desnecessárias, depois projete a estrutura ideal.
🏁 Conclusão
Hoje foi um dia importante em que você encerrou o desenvolvimento no FlutterFlow, conectou o GitHub e adicionou a feature de criação automática de Diary! Agora que pretende migrar de vez para Flutter, seria bom montar um roadmap concreto e avançar passo a passo. 🚀🔥 Vamos manter a motivação enquanto preenche o jardim do GitHub também! 💪💚
Deixe um comentário