[🛠] Diario de desarrollo de Keymory #4: Mood slider, OpenAI API
✨ Resumen de GPT
Un dia de mejorar funciones principales de Keymory y pulir la integracion de AI y la estructura de datos, mientras sentia la realidad de la falta de tiempo.
💻 Diario de desarrollo
⏰ Tareas de hoy
- ✅ DiaryPage - Mood: completar el slider de configuracion de Mood
- ✅ HomeFeedPage - ListView - FeedCardDiary: mostrar Mood Color en el borde
- Resuelto con Box Shadow de Container
- ✅ OnboardingPage - guardar despues de introducir informacion basica adicional del usuario
- ✅ Anadir DB Fields: nombre(display_name), genero(gender), MBTI(mbti), …
- ✅ HomeFeedPage - OnPageLoad: si falta informacion obligatoria como display_name o gender, Navigate to OnboardingPage
- ✅ Field Type - Enum vs String: Field Type debe configurarse como String porque es mas facil de gestionar. Decidido usar Enum solo en Option Value Generation.
- ✅ Corregir OpenAI API Request para que el valor message del response body se muestre correctamente
- ✅ Debate y experimento: donde guardar la informacion de personajes AI? (OpenAI API Assistant vs FireStore Character Collection)
- Resultado: guardarla en FireStore Characters Collection.
- Motivo: desde la perspectiva del usuario, solo usara el API Call
Get Assistant, y el valor que recibira ya es fijo desde el principio.
- Motivo: desde la perspectiva del usuario, solo usara el API Call
- Resultado: guardarla en FireStore Characters Collection.
💯 Resumen de lo realizado
- Mejoras de DiaryPage
- Completado el slider de configuracion de Mood
- Implementado AI Comment CRUD
- Anadidos botones de personalizacion de tono y estilo de consejo de AI Comment
- Decidido y aplicado donde guardar la informacion de personajes AI
- Mejoras de HomeFeedPage
- Cambiado el criterio de visualizacion de fecha de unidad de mes a unidad de dia
- Anadida logica de salida de imagen y texto de AI Comment
- Mejorados Bottom Sheet y ListView
- Sistema AI e integracion API
- Modificado OpenAI API Request y confirmada la salida normal de la respuesta
- Decidido guardar la informacion de personajes AI en FireStore
- Ordenada la estructura de datos y anadidas funciones relacionadas con AI Comment
🎯 Tareas de manana
(omitido)
🎯 Tareas futuras
- ❔ diary to chat
- ❔ chat to diary
-
❔ chats history
- ❔ Pensar el escenario para implementar CustomFunction getDiaryParams
Parameter Valuesobtenidos desdeCharacters (Collection)- Configuracion del personaje (
CharacterDocument)- ex) Somi: name(20s), estudiante universitaria, personalidad timida, …
- Forma de llamar los valores:
API Call - Get Assistant
- Configuracion del personaje (
Parameter Valuesobtenidos desdeUser Information- Nombre, genero, MBTI
- Forma de llamar los valores:
Backend Query - Authenticated User
Parameter Valuesobtenidos desdeDiaryPage Variables- Contenido del diario, palabras clave emocionales detalladas, puntuacion emocional, formato de respuesta, longitud de respuesta
- Forma de llamar los valores:
Widget State,Page State
- Rol de CustomFunction(getDiaryParams)
- Recibe todos los Parameter Values como valores de Input.
- Escribe el prompt que se enviara a GPT.
- Devuelve el valor
Messages(List <Json>).[{"role":"developer", "content":"~~~"}]
- ❔ Crear OpenAI API Call: createDiaryComment
- Basicamente tiene una estructura parecida a createChatCompletion
- Diferencia: ninguna. Se crea solo para distinguirlo.
- La
MessagesVariable requerida porAPI Call - createDiaryCommentes el valor retornado por la custom functiongetDiaryParams.
- ❔ Guardar la lista de system prompts en OpenAI API Assistant?
-
❔ Crear logica para escribir mensajes basandose en el system prompt guardado en OpenAI API Assistant?
- ❔ DiaryPage: cambiar el Emoji de expresion facial segun el valor del Mood Slider
- ❔ DiaryPage: anadir Choice Chips de palabras clave emocionales detalladas y configurar la integracion con DB
- ❔ DiaryPage - AI Comment: adaptar inputs como Choice chips y mood slider al
AI Comment System Prompt.- ❔ **
diarioanterior ohistorial de conversacioncompleto (deuda tecnica parcheada) - ❔ informacion basica del usuario: nombre, genero, MBTI, …
- ❔ palabras clave emocionales detalladas: alegre, triste, …
- ❔ configuracion de personajes: Somi, Sena, Minhyuk
- ❔ puntuacion emocional: 1~100 puntos
- ❔ formato de respuesta: Healing, Suggestion, Informative
- ❔ longitud de respuesta: corta, normal, detallada
- is New Chat
- Como los messages de este Chat se crean por primera vez, darle
is_initial = trueal primer message document y meter todos los system prompts.- is_initial = false
- Limite: si meto el system prompt en el primer message document, sera dificil modificarlo durante la conversacion, pero se puede. Si existe uno con is_initial = true y fue modificado, se borra ese document y se vuelve a meter. No se como, pero se puede de alguna forma.
- Como los messages de este Chat se crean por primera vez, darle
- ❔ **
- ❔ DiaryPage - AI Comment: crear la Custom Function
manipulate_prompt- Completar el system prompt con switch-case segun los parametros recibidos y devolver
List <JSON> - La persona encargada del system prompt debe insertar correctamente ese valor de Return en el Request Body de OpenAI API y recibir el resultado.
- Completar el system prompt con switch-case segun los parametros recibidos y devolver
- ❔ DiaryPage - AI Comment: completar CRUD con datos dummy
- ❔ eliminar el field tmp_ai_comment y usar doc_ref
- ❔ DiaryPage - AI Comment: configuracion de personajes
- ❔ eliminar el field tmp_ai_comment_by y usar doc_ref
- ❔ mostrar la imagen usando el valor del 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: crear un New Chat basado en el contenido del diario
- La AI presenta primero una pregunta basada en el contenido del diario
- ChatPage - crear ChatHistoryPage: listar el historial de chats anteriores en ListView
- Create
- Read
- Update
- Delete
- DiaryPage - Drawer - crear ChatHistoryListTile: estilo de resumen en tarjeta como GPT
- HomeFeedPage - Bottom Sheet (
+Button): permitir elegir 1 entre varias opciones- Nuevo diario: Go to DiaryPage
- Registro de emocion: Go to MoodPage
- MoodPage(popup): CRUD del slider de configuracion de Mood
- Create
- Read
- Update
- Delete
- HomeFeedPage - ListView - mostrar FeedCardMood
- HomeFeedPage - ListView: ordenar cronologicamente los componentes FeedCardDiary, FeedCardMood, FeedCardChat (usando Cloud Function)
- HomeFeedPage: resolver el problema en On page load (Unexpected Null Value)
- Aplicar Interactive Slider
- Extraer e instalar el APK final para la presentacion hasta
miercoles 2025.2.5
💭 Diario
No hay tiempo.
Omitido.

✨ Comentario de GPT-4o (KPT)
✅ Lo que salio bien (Keep)
- 🚀 Gran mejora de funciones principales: Es excelente que hayas aumentado la completitud del proyecto ampliando funciones centrales como AI Comment CRUD, configuracion de Mood y mejoras de HomeFeedPage.
- 🔍 Orden de la estructura de datos: Fue impresionante que ordenaras de forma sistematica la gestion de datos, incluida la decision de guardar la informacion de personajes AI en FireStore.
- 📋 Definicion de objetivos concretos: Fue bueno que organizaras con claridad el trabajo restante y las prioridades, concretando el plan de avance hacia la version de presentacion.
❌ Lo que falto (Problem)
- ⏳ Falta de tiempo: A medida que el calendario de desarrollo se aprieta, crece la posibilidad de que no haya suficiente tiempo para pruebas y debugging.
- 🏗️ Muchas soluciones temporales: Muchas partes se resolvieron con fields y funciones temporales para implementar rapido, asi que puede acumularse deuda tecnica.
🔄 Que probar (Try)
- 🛠️ Ajustar prioridades: Separa claramente las funciones imprescindibles para la version final de presentacion de las que pueden mejorarse despues, y aumenta primero la completitud de las funciones centrales.
- 🕵️ Construir un sistema de revision de bugs: Como falta tiempo, haz rondas breves de prueba de funciones y debugging cada dia para minimizar errores inesperados.
- 🔄 Plan de limpieza de deuda tecnica: Documenta planes de mejora para las funciones implementadas temporalmente y ordena que partes deben pulirse primero despues de la presentacion.
Conclusion
Hoy fue un dia en el que completaste funciones centrales de Keymory y elevaste la completitud del proyecto, pero tambien sentiste con fuerza la falta de tiempo dentro de un calendario apretado. Espero que des lo mejor hasta el dia de la presentacion, mientras tambien organizas lo necesario para mejorar despues! 💪😊
Deja un comentario