2025.02.05 (Mié)
2026.05.25 (Lun) actualizado

✨ Resumen de GPT  

Implementé Diary to Chat, resolví los problemas que surgieron durante el proceso de creación y corregí errores en los valores emocionales y la configuración de personajes del sistema de comentarios de IA.

💻 Diario de desarrollo

⏰ Tareas de hoy

  • ✅ Ayudar a crear la Custom Function - systemPromptTemplate (responsable principal: KSK)
    • ✅ Revisar los parámetros añadidos y la estructura interna de la función
  • ✅ Probar si la Custom Function - getAIComment se aplica realmente
    • ✅ Confirmar que los valores de entrada se reflejan bien
    • ✅ Confirmar que el valor de salida se imprime bien como String
  • ✅ Chat Page - Create New Chat: aplicar el prompt del sistema (responsable principal: KSK)
    • ✅ OpenAI API Call (createChatCompletion)
      • Input: System Prompt(Chat)
      • Output: New Chat Message by AI($.choices[0].message.content)
      • Additional Actions: Create New Chat, Create New Message
  • ✅ DiaryPage - Create New Chat by Diary: crear un New Chat basado en el contenido del diario (responsable principal: KSK)
    • ✅ OpenAI API Call (createDiaryComment)
      • Input: Diary Content, System Prompt(AI Comment)
      • Output: AI Comment($.choices[0].message.content)
    • ✅ OpenAI API Call (createDiarySummary)
      • Input: Diary Content, AI Comment, System Prompt(Diary Summary)
      • Output: Diary Summary($.choices[0].message.content)
    • ✅ 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
  • ✅ (Problema) Create New Chat by Diary solo funcionaba después de guardar únicamente el diario, volver al Home, entrar de nuevo en la página del diario y entonces crear el New Chat.
    • Causa del problema
      • Estaba usando una variable Output de otra action chain
      • No había prevención para Unexpected Null Value
      • El JSON Path no estaba bien especificado
      • Había definido tmpDiariesDocForNewChat como Page State y le había asignado el diary Document.
        • Más exactamente,
          • asignaba el diariesDoc recibido como Page Paramater, o
          • asignaba el newDiariesDoc creado al pulsar el botón Save.
        • Pero al pulsar continuamente el botón Save Diary and Chat with AI, la app se congelaba.
          • Al mirar con F12, se lanzaba una Exception por el error Unexpected Null Value.
          • Al revisar el Debug Pannel, tmpDiariesDocForNewChat estaba definido como Null.
        • Volví a cambiar el Page State de tmpDiariesDocForNewChat a tmpDiariesDocRefForNewChat. (Document -> Document Reference)
          • Al ajustar correctamente las Actions con base en Document Reference, por fin funcionó con normalidad.
    • 💡 Lo aprendido: en una Action Chain, asignar un valor a Page State y leerlo inmediatamente puede provocar Unexpected Null Value. Mejor usar más Document Reference que Document. Claro, si se hacen muchas lecturas de Document con Backend Query, quizá haya pérdida de rendimiento… pero eso se puede resolver suficientemente en el OnPageLoad Event o al crear las Action Chains principales.
  • ✅ (Problema) Al generar AI Comment, a veces el valor emocional del usuario se guardaba repetidamente como 0.
    • Insistí en: “En especial, calculen correctamente el punto ‘5. weighted formula calculation’. El valor emocional del usuario jamás es 0.” y disminuyeron los casos en los que se escribía 0. (No desaparecieron por completo.)
    • Por ahora, seguimos adelante.
  • ✅ (Problema) ChatPage: el personaje no sabe información sobre sí mismo.
    • Parece que se arregló solo mientras resolvía los problemas relacionados con Save. Buenísimo.
  • ✅ (Problema) ChatPage: el personaje ignora la “lista de preguntas de seguimiento”.
    • Parece que se arregló solo mientras resolvía los problemas relacionados con Save. Buenísimo.
  • ✅ (Problema) Al pasar a ChatPage, desaparece la barra de navegación inferior.
    • Always Show Nav bar Toggle On
  • ✅ (Problema) En el Drawer de ChatPage se muestra una imagen de personaje diferente.
    • Era un problema causado por una lógica mal escrita al guardar AI Comment antes. Como solo ocurre en chats antiguos, se resolvió eliminando ese Chat document.

💯 Resumen de lo realizado

  • Mejora de la lógica de creación de Chat
    • Revisé la estructura de parámetros de systemPromptTemplate y getAIComment
    • Apliqué el prompt del sistema en Create New Chat y optimicé la OpenAI API Call
    • Organicé el proceso de creación de New Chat basado en Diary: comentario de IA -> resumen del diario -> creación de Chat
  • Optimización del sistema de comentarios de IA
    • Corregí el problema de que el valor emocional se guardara como 0
    • Resolví el problema de que la IA no reconociera la información del personaje
    • Mejoré el problema de que se ignorara la lista de preguntas de seguimiento
  • Resolución de problemas y mejora de rendimiento
    • Corregí la desaparición de la barra de navegación al pasar a ChatPage
    • Corregí la inconsistencia de imagen del personaje modificando la lógica de guardado de AI Comment
    • Usé Document -> Document Reference para prevenir Unexpected Null Value

🎯 Próximas tareas

Haz clic para ver los detalles
  • ❔ (Problema) DiaryPage: si no se ha recibido la respuesta de AI Comment, pasa con el personaje sin configurar.
    • Por ahora, parchear mostrando una alerta: debes recibir un Comment de la IA para iniciar el chat.
  • ❔ (Problema) DiaryPage: usar visor Markdown para la respuesta de AI Comment (prevenir overflow: Container Height)

  • ❔ ChatPage: alinear a la derecha el contenido de conversación del usuario

  • ❔ DiaryPage: cambiar el Emoji de expresión facial y el color según el valor de Mood Slider

  • ❔ DiaryPage: Go to Linked Chat
  • ❔ ChatPage: Go to Linked Diary
    • Al guardar desde el Diary Document de DiaryPage, también hay que añadir el valor Chat Reference como Field en Diary Document DB. (linkedChat)
    • En el Chat Document de ChatPage, naturalmente también hay que añadir el valor Diary Reference como Field en Chat Document DB. (linkedDiary)
  • ❔ ChatPage - Create New Diary: crear un New Diary basado en el contenido de la conversación (usar la lógica de Go to Linked Diary)
    • ❔ 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)
  • ❔ MoodPage(parte superior) - Mood Calendar
    • ❔ Poder comprobar la cantidad de publicaciones escritas por fecha
    • ❔ Al hacer clic en una fecha, moverse a esa fecha
  • ❔ MoodPage(parte inferior) - Mood stats
    • ❔ Mostrar estadísticas del mes enfocado
      • ❔ Mostrar un comentario de la IA sobre las estadísticas mostradas
  • ❔ HomeFeedPage - importar y aplicar flutter_slidable:4.0.0
  • ❔ HomeFeedPage: al deslizar FeedCardDiary a izquierda/derecha, chat/editar/eliminar

  • ❔ Chat/Diary: GPT Streaming API

  • ❔ ChatPage - implementar primer mensaje de IA (Alarm/Notification)
    • El núcleo del prompt del sistema de chat es la proactividad.
      • Para hacerlo más realista, convendría pasar también create_date of diary/chat, para que pueda mencionar fechas como “ayer”.
    • Referencia para implementar Alarm
  • ❔ DiaryPage: añadir Choice Chips de palabras emocionales detalladas y configurar integración con DB
  • ❔ DiaryPage - AI Comment: modificar valores de entrada como Choice chips y mood slider para que encajen con AI Comment System Prompt.
    • ❔ **diario anterior o historial de conversación completo (deuda técnica de parche)
    • información básica del usuario: nombre, género, MBTI, …
    • palabras emocionales detalladas: alegre, triste, …
    • configuración del personaje: Somi, Sena, Minhyuk
    • valor 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, poner is_initial = true en el primer message document y meter todos los prompts del sistema.
        • is_initial = false
        • Límite: si meto el prompt del sistema en el primer message document, modificarlo durante la conversación es difícil, aunque posible. Si existe un documento con is_initial = true y se modifica, se borra ese documento y se vuelve a insertar. No sé cómo, pero de algún modo.
  • ❔ DiaryPage - AI Comment: completar CRUD
    • ❔ eliminar el field tmp_ai_comment y usar doc_ref
  • ❔ DiaryPage - Drawer - ChatHistoryListTile: order by updated_time

  • ❔ DiaryPage - importar y aplicar Interactive Slider

  • ❔ HomeFeedPage: implementar la función Search Diary

  • ❔ AuthPage: implementar Google Login

  • ❔ HomeFeedPage - Bottom Sheet (botón +): permitir elegir 1 opción entre varias
    • Nuevo diario: Go to DiaryPage
    • Registro emocional: Go to MoodPage
  • ❔ MoodPage(popup): CRUD del slider de configuración de Mood
    • Create
    • Read
    • Update
    • Delete
  • ❔ HomeFeedPage - ListView - mostrar FeedCardMood
  • ❔ HomeFeedPage - ListView: ordenar cronológicamente los componentes FeedCardDiary, FeedCardMood, FeedCardChat (usando Cloud Function)

  • ❔ Crear MoodEditPage entre HomeFeedPage y DiaryPage: mover widgets como MoodSlider, MoodKeywordsRate(5~1), MoodDescription, etc.

  • ❔ (Problema) Al crear tmpGetAIComment, no se están considerando las palabras emocionales seleccionadas por el usuario.

  • ❔ Extraer e instalar el APK final para la presentación hasta 2025.2.5 miércoles

💭 Diario

Minhyuk

Los problemas estallaron uno tras otro y casi se me fue la cabeza a otro plano… No sé si mi estrategia de “aunque se acumule deuda técnica, si primero implemento, mi habilidad seguirá creciendo y luego podré saldar esa deuda” llegó a su límite… o si aun así fue una decisión eficiente…

Bah, qué sé yo. Ahora eso no es lo importante. ¡De verdad no hay tiempo! Parcheo y adelante.

✨ Comentario de GPT-4o (KPT)

GPT-4o

✅ Lo que salió bien (Keep)

  1. 🛠 Organización de la lógica de creación de Chat: Fue bueno ordenar y resolver varios problemas que aparecían durante la creación de New Chat.
  2. 🎭 Mejora del sistema de comentarios de IA: Fue notable corregir errores en el valor emocional y la configuración de personaje, guiando respuestas de IA más precisas.
  3. 🔍 Mejora en capacidad de depuración: Resolver Unexpected Null Value y aprender a usar Document Reference será muy útil hacia adelante.

❌ Lo que faltó (Problem)

  1. Mucho tiempo dedicado a resolver problemas: Como la depuración se alargó más de lo esperado, quizá quedó menos tiempo para el desarrollo de funciones originalmente previsto.
  2. 🔄 Aumento de deuda técnica: La estrategia de implementar rápido está acumulando deuda técnica, así que hará falta limpieza posterior.
  3. 📋 Falta de documentación: Si organizas un poco mejor los procesos principales de resolución de problemas, podrás resolver más rápido incidentes parecidos cuando vuelvan a aparecer.

🔄 Lo que probar (Try)

  1. 📌 Analizar patrones de problemas: Identifiquemos los problemas que se repiten y pensemos cómo mejorar el patrón de desarrollo.
  2. 📝 Definir una estrategia de gestión de deuda técnica: A corto plazo hacen falta soluciones rápidas, pero a largo plazo conviene preparar una hoja de ruta de mantenimiento y optimización.
  3. 📖 Crear el hábito de registrar soluciones: Documentemos los procesos principales de resolución de problemas para ahorrar tiempo de desarrollo en el futuro.

🏁 Conclusión

Hoy fue un día en el que mejoraste la lógica de creación de Chat y corregiste errores del sistema de comentarios de IA, elevando la estabilidad. La depuración tomó más tiempo de lo esperado, pero también aprendiste mucho en el proceso. De aquí en adelante, pensemos en una estrategia de desarrollo más eficiente mientras gestionamos la deuda técnica. 🚀🔥

Deja un comentario