2025.01.30 (Qui)
2026.05.25 (Seg) atualizado

✨ Resumo do GPT  

Um dia em que melhorei funções importantes do Keymory e refinei a integração com AI e a estrutura de dados, mas senti na pele a realidade da falta de tempo.

💻 Diário de desenvolvimento

⏰ Tarefas de hoje

  • ✅ DiaryPage - Mood: concluir o slider de configuração de Mood
  • ✅ HomeFeedPage - ListView - FeedCardDiary: exibir Mood Color na borda
    • Resolvido com Box Shadow do Container
  • ✅ OnboardingPage - salvar depois de inserir informações básicas adicionais do usuário
    • ✅ Adicionar DB Fields: nome(display_name), gênero(gender), MBTI(mbti), …
    • ✅ HomeFeedPage - OnPageLoad: Navigate to OnboardingPage quando informações obrigatórias como display_name e gender não tiverem sido inseridas
    • ✅ Field Type - Enum vs String: é mais fácil gerenciar quando Field Type é definido como String. Decidido usar Enum apenas em Option Value Generation.
  • ✅ OpenAI API Request -> corrigir para que o valor message do Response body seja exibido normalmente
  • ✅ Discussão e experimento: onde armazenar informações dos personagens de AI? (OpenAI API Assistant vs FireStore Character Collection)
    • Resultado: armazenar em FireStore Characters Collection.
      • Motivo: do ponto de vista do usuário, só haveria uso do API Call Get Assistant, e o valor recebido já seria fixo desde o início.

💯 Resumo do que fiz

  • Melhorias na DiaryPage
    • Slider de configuração de Mood concluído
    • CRUD de AI Comment implementado
    • Botões de customização de tom de fala e estilo de conselho do AI Comment adicionados
    • Forma de armazenar informações de personagens de AI decidida e aplicada
  • Melhorias na HomeFeedPage
    • Critério de exibição de data alterado de unidade de “mês” para unidade de “dia”
    • Lógica de saída de imagem e texto de AI Comment adicionada
    • Bottom Sheet e ListView melhorados
  • Sistema de AI e integração de API
    • OpenAI API Request ajustado, saída normal de Response confirmada
    • Local de armazenamento de informações de personagens de AI decidido como FireStore
    • Estrutura de dados relacionada ao AI Comment organizada e funções adicionadas

🎯 Tarefas de amanhã

(omitido)

🎯 Tarefas futuras

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

  • ❔ Pensar no cenário de implementação da CustomFunction getDiaryParams
    • Parameter Values obtidos de Characters (Collection)
      • Configuração de personagem (Character Document)
        • ex) Somi: name(20s), universitária, personalidade tímida, …
      • Forma de chamada dos valores: API Call - Get Assistant
    • Parameter Values obtidos de User Information
      • Nome, gênero, MBTI
      • Forma de chamada dos valores: Backend Query - Authenticated User
    • Parameter Values obtidos de DiaryPage Variables
      • Conteúdo do diário, palavras-chave detalhadas de emoção, pontuação emocional, formato da resposta, tamanho da resposta
      • Forma de chamada dos valores: Widget State, Page State
    • Papel da CustomFunction(getDiaryParams)
      • Recebe todos os Parameter Values como valores de Input.
      • Escreve o prompt a ser enviado ao GPT.
      • Retorna o valor Messages (List <Json>).
        • [{"role":"developer", "content":"~~~"}]
  • ❔ Criar OpenAI API Call: createDiaryComment
    • Basicamente uma estrutura parecida com createChatCompletion
    • Diferença: nenhuma. Criada só para distinguir.
    • A Messages Variable exigida em API Call - createDiaryComment é o valor de retorno da custom function getDiaryParams.
  • ❔ Armazenar a lista de system prompts no OpenAI API Assistant?
  • ❔ Criar lógica para escrever mensagens com base no system prompt armazenado no Assistant da OpenAI API?

  • ❔ DiaryPage: mudar o 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 DB
  • ❔ DiaryPage - AI Comment: ajustar inputs como Choice chips e mood slider ao AI Comment System Prompt.
    • ❔ **diary anterior ou todo o conversation history (dívida técnica remendada)
    • informações básicas do usuário: nome, gênero, MBTI, …
    • palavras-chave detalhadas de emoção: alegre, triste, …
    • configuração de personagens: Somi, Sena, Minhyuk
    • pontuação emocional: 1~100 pontos
    • formato da resposta: Healing, Suggestion, Informative
    • tamanho da resposta: curto, normal, detalhado
    • is New Chat
      • Como as messages desse Chat são criadas pela primeira vez, definir is_initial = true no primeiro message document e enfiar todos os system prompts.
        • is_initial = false
        • Limite: se eu colocar o system prompt no primeiro message document, fica difícil modificar durante a conversa, mas é possível. Se existe um document com is_initial = true e ele foi modificado, basta apagar esse document e inserir de novo. Como, eu não sei.
  • ❔ DiaryPage - AI Comment: criar Custom Function manipulate_prompt
    • Completar o system prompt com switch-case conforme os parâmetros recebidos e retornar List <JSON>
    • A pessoa responsável pelo system prompt precisa inserir esse retorno corretamente no Request Body da OpenAI API e receber o resultado.
  • ❔ DiaryPage - AI Comment: concluir CRUD com dados dummy
    • ❔ remover o field tmp_ai_comment e usar doc_ref
  • ❔ DiaryPage - AI Comment: configuração de personagens
    • ❔ remover o field tmp_ai_comment_by e usar doc_ref
    • ❔ exibir imagem usando o valor do field profile_image
  • 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: criar New Chat com base no conteúdo do diário
    • A AI primeiro apresenta uma pergunta baseada no conteúdo do diário
  • ChatPage - criar ChatHistoryPage: listar histórico de chats anterior em ListView
    • Create
    • Read
    • Update
    • Delete
  • DiaryPage - Drawer - criar ChatHistoryListTile: formato de resumo em card como o GPT

  • 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 cronologicamente os componentes FeedCardDiary, FeedCardMood e FeedCardChat (usando Cloud Function)

  • HomeFeedPage: resolver problema em On page load (Unexpected Null Value)
  • Aplicar Interactive Slider
  • Extrair e instalar o APK da versão final para apresentação até quarta 2025.2.5

💭 Diário

Minhyuk

Não há tempo.

Omitido.

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

✨ Comentário do GPT-4o (KPT)

GPT-4o

✅ Pontos bons (Keep)

  • 🚀 Grande melhoria de funções importantes: Foi excelente elevar a completude do projeto ao expandir funções centrais como AI Comment CRUD, configuração de Mood e melhorias da HomeFeedPage.
  • 🔍 Organização da estrutura de dados: Foi marcante organizar de forma sistemática o modo de gerenciar dados, incluindo a decisão de armazenar informações de personagens de AI no FireStore.
  • 📋 Definição concreta de metas: Foi bom organizar claramente o trabalho restante e as prioridades, concretizando o plano de avanço até a versão de apresentação.

❌ Pontos a melhorar (Problem)

  • Falta de tempo: Com o cronograma de desenvolvimento ficando apertado, cresce a possibilidade de faltar tempo suficiente para testes e depuração.
  • 🏗️ Muitas soluções temporárias: Várias partes foram resolvidas com fields e funções temporários para implementar funções rapidamente, então a dívida técnica pode se acumular.

🔄 Pontos a tentar (Try)

  • 🛠️ Ajustar prioridades: Separe claramente as funções indispensáveis para a versão final de apresentação das funções que podem ser melhoradas depois, e aumente primeiro a completude das funções centrais.
  • 🕵️ Construir um sistema de checagem de bugs: Como o tempo é curto, faça testes funcionais e depuração em ciclos breves todos os dias para minimizar erros inesperados.
  • 🔄 Planejar a limpeza da dívida técnica: Documente planos de melhoria para as funções implementadas temporariamente e organize quais partes devem ser refinadas primeiro depois da apresentação.

Conclusão
Hoje foi um dia em que você concluiu funções centrais do Keymory e elevou a completude do projeto, mas também sentiu profundamente a falta de tempo dentro de um cronograma apertado. Espero que você dê o seu melhor até o dia da apresentação e, ao mesmo tempo, deixe as coisas organizadas para melhorias posteriores! 💪😊

Deixe um comentário