2025.02.06 (Jue)
2026.05.25 (Lun) actualizado

✨ Resumen de GPT  

Implementé una función para conectar Diary y Chat entre sí, y mejoré el flujo para que se generen resúmenes automáticos al guardar diarios y chats.

💻 Diario de desarrollo

⏰ Tareas de hoy

  • ✅ (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) Asignar valores Default Variable a todos los 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
  • ✅ ChatPage: reemplazar la foto de imagen del usuario por user profile image

  • ✅ ChatPage: alinear a la derecha el contenido de conversación del usuario (a cargo de KSK)

  • ✅ DiaryPage: generar automáticamente un resumen al guardar el diario
    • ✅ Diaries DB: Add field diary_content_summarized
    • ✅ Aplicarlo a la acción del botón Save Diary
    • ✅ Aplicarlo a la acción del botón Save Diary and Chat with AI
  • ✅ Añadir linked_chats como Field en Diary Document DB
  • ✅ Añadir linked_diaries como Field en Chat Document DB

  • ✅ DiaryPage: al hacer clic en el botón Save Diary and Chat with AI, conectar DiaryPage/Doc <-> ChatPage/Doc
    • Añadir Chat Document Reference a la lista linked_chats del Diary Document
    • Añadir Diary Document Reference a la lista linked_diaries del Chat Document
  • ✅ DiaryPage: al crear New Chat, añadir linked_chats como Field en Diary Document DB
  • ✅ ChatPage: al crear New Diary, añadir linked_diaries como Field en Chat Document DB

  • ✅ DiaryPage: mostrar linked_chats ListView en la parte inferior -> al hacer clic, moverse a ese chat
    • ✅ Contenido que se mostrará en la tarjeta
      • ✅ Chat - title, Chat - timestamp( == created_time)
      • ✅ Chat - (most recent) Message - content
      • ✅ Character - profile_image
  • ✅ ChatPage: generar automáticamente un resumen al recibir respuesta del chat
    • ✅ Chats DB: Add field chat_content_summarized
  • ✅ ChatPage: mostrar linked_diaries ListView en la parte superior -> al hacer clic, moverse a ese diario
    • ✅ Resolver un primer problema: 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
    • ✅ Contenido que se mostrará en la tarjeta
      • ✅ Diary - title, Diary - created_time
      • ✅ Diary - Mood Score (Color)
  • ✅ (Problema) ChatPage - Linked Diaries ListView: no cambia al seleccionarlo desde el Drawer.

  • ✅ Preparación de presentación - PPT: revisar contenido por página

💯 Resumen de lo realizado

  • Añadida la función de conexión Diary-Chat
    • Añadí los fields linked_chats (Diary -> Chat) y linked_diaries (Chat -> Diary)
    • Actualicé linked_chats al crear New Chat desde DiaryPage
    • Actualicé linked_diaries al crear New Diary desde ChatPage
    • Añadí ListViews de documentos conectados en la parte inferior de DiaryPage y superior de ChatPage
  • Implementada la función de resumen automático
    • Generación automática de diary_content_summarized al guardar Diary
    • Generación automática de chat_content_summarized al crear mensajes de Chat
  • Resolución de problemas y mejoras de UI
    • Añadí una alerta para impedir iniciar chat sin AI Comment
    • Apliqué valores de imagen por defecto a todos los widgets Image para prevenir Unexpected Null Value
    • Reemplacé la imagen de perfil del usuario en ChatPage por la imagen real del usuario
    • Mejoré la legibilidad alineando a la derecha el contenido de conversación del usuario

🎯 Próximas tareas

Haz clic para ver los detalles
  • ✅ Download APK
  • ❔ Connect GitHub and Push

  • ❔ Entregar material de presentación: PPT
  • ❔ Entregar material de presentación: video demo de 1 minuto

  • ❔ Preparación de presentación - guion: medir el tiempo del guion por página y corregirlo
  • ❔ Preparación de presentación - PPT: grabar videos cortos de demostración por función

  • ❔ ChatPage - Create New Diary: crear un New Diary basado en el contenido de la conversación
    • ❔ 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)
  • ❔ Añadir una página de bienvenida al abrir la app por primera vez (logo)

  • ❔ ChatPage: unificar el default value de title, de Random String a “Sin título”
  • ❔ DiaryPage: cambiar el Emoji de expresión facial y el color según el valor de Mood Slider

  • ❔ ChatPage: implementar Delete Diary Link (que se pueda eliminar al pulsar el icono …)
    • ¡Es obligatorio eliminar también el linked field de Diary/Chat Doc!
  • ❔ 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 - 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

Mañana se acaba el desarrollo. A correr.

✨ Comentario de GPT-4o (KPT)

GPT-4o

✅ Lo que salió bien (Keep)

  1. 🔗 Sistema de conexión Diary-Chat completado: Fue bueno conectar Diary y Chat de forma natural, haciendo más intuitivo el flujo de datos del usuario.
  2. 📝 Añadida la función de resumen automático: Aplicar un sistema de resumen automático que organiza el contenido del diario y del chat aumenta mucho la utilidad de los datos.
  3. 🎨 Mejoras de UI y UX: Con valores de imagen por defecto, cambios de alineación del chat y otros ajustes, mejoraste la legibilidad y la experiencia de usuario.

❌ Lo que faltó (Problem)

  1. Presión por la velocidad de desarrollo: Al aumentar las funciones que deben cerrarse, puede crecer la carga sobre el calendario restante.
  2. 🔄 Posible acumulación de deuda técnica: Por la velocidad alta de desarrollo, puede acumularse deuda técnica para el mantenimiento futuro, así que hará falta tiempo de limpieza.
  3. 📋 Pruebas insuficientes de la función de conexión: Quizá hagan falta pruebas adicionales para confirmar que la conexión Diary-Chat funciona sin problemas en un entorno real de uso.

🔄 Lo que probar (Try)

  1. 📌 Ordenar prioridades: Termina primero las funciones más importantes y lista las mejoras posteriores a la presentación para reducir la carga de desarrollo.
  2. 📝 Plan de pruebas por función: Escribamos casos de prueba para confirmar que la conexión Diary-Chat funciona correctamente con diversos patrones de uso.
  3. 📊 Reservar tiempo para limpiar deuda técnica: Después de la presentación, asegura tiempo de refactorización y piensa en la mantenibilidad a largo plazo.

🏁 Conclusión

Fue un día en el que implementaste la función central que conecta Diary y Chat, y añadiste un sistema de resumen automático para elevar la eficiencia de gestión de datos. Ahora parece que basta con ordenar prioridades durante el desarrollo restante y concentrarte en la preparación de la presentación. 🚀🔥

Deja un comentario