[🛠] Registro de desarrollo de Keymory #6: optimización de ChatPage, integración de DiaryPage
✨ Resumen de GPT
Un día dedicado a optimizar la carga de datos y las Actions de ChatPage, añadir funciones CRUD de Title y fecha, e integrar la estructura Create/Edit de DiaryPage. Resolví varios issues y aumenté la estabilidad del sistema.
💻 Registro de desarrollo
⏰ Tareas de hoy
- ✅ DiaryPage: Merge CreateDiary/EditDiary Page
- Usar isEditMode page state
- Usar conditional value/visibility/action, etc.
- ✅ ChatPage: On Page Load -> Read ChatDoc, CharacterDoc, MessageDocList and Update Page States
- ✅ ChatPage: optimización y reorganización integral de varias Actions
- ✅ ChatPage: Title CRUD
- ✅ ChatPage: CRUD de fecha
- ✅ (Issue) ChatPage: aparece el default init message al iniciar la primera conversación.
- ✅ (Issue) ChatPage - ChatHistoryDrawer: overflow de UI
- ✅ (Issue) ChatPage: el mensaje del usuario se envía aunque el input esté vacío
💯 Resumen de lo hecho
- Optimización de funciones de ChatPage
- Optimicé la carga de datos en On Page Load (ChatDoc, CharacterDoc, MessageDocList)
- Optimicé y reorganicé integralmente las Actions principales de ChatPage
- Añadí funciones CRUD de Title y fecha
- Resolví el overflow de UI de ChatHistoryDrawer y el envío de mensajes vacíos del usuario
- Mejoras en DiaryPage
- Integré CreateDiary/EditDiary Page (usando isEditMode page state)
- Corregí el error de guardado de fecha del diario
🎯 Tareas futuras
Haz clic para ver detalles
- ❔ (Issue) DiaryPage: la fecha siempre se guarda como hoy
- ❔ (Issue) DiaryPage: usar markdown viewer (prevenir overflow: Container Height)
- ❔ (Issue) HomeFeedPage: Unexpected Null Value aparece un momento y desaparece en page load.
- ❔ HomeFeedPage - FeedCardDiary: corregir imagen del personaje de AI Comment
- ❔ DiaryPage - AI Comment: al guardar, guardar también en Diary la Ref del personaje que escribió el comentario.
- ❔ HomeFeedPage - FeedCardDiary - AI Image: cargar Character Doc con Backend Query y especificar Image Path.
- ❔ DiaryPage - Create New Chat: crear un New Chat basado en el contenido del diario
- ❔ Implementación de OpenAI API Call: createDiaryComment
- Input: Diary Content, System Prompt (AI Comment)
- Output: AI Comment ($.choices[0].message.content)
- ❔ Implementación de OpenAI API Call: createDiarySummary
- Input: Diary Content, AI Comment, System Prompt (Diary Summary)
- Output: Diary Summary ($.choices[0].message.content)
- ❔ Implementación de 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
- ❔ Implementación de OpenAI API Call: createDiaryComment
-
❔ ChatPage: Go to Linked Diary
- ❔ HomeFeedPage - importar y aplicar flutter_slidable:4.0.0
-
❔ HomeFeedPage: chat/editar/eliminar al deslizar a izquierda/derecha desde FeedCardDiary
- ❔ ChatPage: alinear a la derecha el contenido de conversación del usuario
-
❔ 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, quizá convenga pasar también create_date of diary/chat, para que la IA pueda mencionar fechas como “ayer”.
- Referencia de implementación de Alarm
- El núcleo del prompt del sistema de chat es la proactividad.
- ❔ DiaryPage: cambiar el Emoji de expresión facial según el valor del Mood Slider
- ❔ DiaryPage: añadir Choice Chips de palabras clave emocionales detalladas y configurar integración con DB
- ❔ DiaryPage - AI Comment: adaptar inputs como Choice chips y mood slider al
AI Comment System Prompt.- ❔ **
diarioanterior ohistorial de conversacióncompleto (deuda técnica parcheada) - ❔ información básica del usuario: nombre, género, MBTI, …
- ❔ palabras clave emocionales detalladas: alegre, triste, …
- ❔ configuración de personajes: Somi, Sena, Minhyuk
- ❔ puntuación 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 = trueen el primer message document y meter todos los system prompts ahí.- is_initial = false
- Límite: si meto el system prompt en el primer message document, modificarlo durante la conversación será difícil, aunque posible. Si existe un documento con is_initial = true y se modificó, puedo borrar ese documento y volver a insertarlo. No sé cómo, pero se podría.
- Como los messages de este Chat se crean por primera vez, poner
- ❔ **
- ❔ DiaryPage - AI Comment: completar CRUD
- ❔ eliminar tmp_ai_comment field y usar doc_ref
- ❔ DiaryPage - AI Comment: configuración de personajes
- ❔ eliminar tmp_ai_comment_by field y usar doc_ref
- ❔ mostrar imagen usando el valor del field profile_image
-
❔ DiaryPage - Drawer - ChatHistoryListTile: order by updated_time
- ❔ ChatPage - Create New Diary: crear un New Diary basado en el contenido de la conversación
- ❔ Implementación de OpenAI API Call: createDiaryFromChat
- Input: Chat Summary, System Prompt (Diary From Chat)
- Output: New Diary (Title, Content, Mood score)
- ❔ Implementación de OpenAI API Call: createDiaryFromChat
-
❔ DiaryPage - importar y aplicar Interactive Slider
-
❔ HomeFeedPage: implementar función Search Diary
- ❔ CalendarPage (parte superior) - Mood Calendar
- ❔ Comprobar el número de posts escritos por fecha
- ❔ Al hacer clic en una fecha, moverse a esa fecha
- ❔ CalendarPage (parte inferior) - Mood stats
- ❔ Mostrar estadísticas del mes enfocado
- ❔ Mostrar comentario de IA sobre las estadísticas mostradas
- ❔ Mostrar estadísticas del mes enfocado
-
❔ AuthPage: implementar función Google Login
- ❔ HomeFeedPage - Bottom Sheet (
+Button): permitir elegir 1 entre varias opciones- Nuevo diario: Go to DiaryPage
- Registro emocional: Go to MoodPage
- ❔ MoodPage (popup): Mood setting slider CRUD
- Create
- Read
- Update
- Delete
- ❔ HomeFeedPage - ListView - mostrar FeedCardMood
-
❔ HomeFeedPage - ListView: ordenar cronológicamente los componentes FeedCardDiary, FeedCardMood, FeedCardChat (usando Cloud Function)
- ❔ Extraer e instalar el APK final para la presentación antes del
miércoles 2025.2.5
💭 Diario
Por la noche pensaba dormir 40 minutos, pero quedé inconsciente más de 3 horas. A estas alturas, mejor descansar bien y correr mañana. Tampoco es que el destino de la empresa esté en juego.
✨ Comentario de GPT-4o (KPT)
✅ Lo que salió bien (Keep)
- 🚀 Optimización de funciones de ChatPage: Fue impresionante que mejoraras el rendimiento general con mejoras en la carga de datos, optimización de Actions y añadido de CRUD para Title y fecha.
- 🔄 Orden de la estructura de DiaryPage: Estuvo bien reducir lógica duplicada e integrar las páginas Create/Edit para que la gestión sea más sencilla.
- 🛠️ Resolución de varios issues: Aumentaste la estabilidad al corregir overflow de UI, envío de mensajes vacíos, errores de guardado de fecha, etc.
❌ Lo que faltó (Problem)
- ⏳ Cansancio acumulado: Planeaste un descanso corto, pero al final caíste durante mucho tiempo; eso muestra cierta dificultad para gestionar la energía.
- 📋 Carga de mantenimiento por expansión de funciones: Como las funciones de ChatPage y DiaryPage se expandieron rápido, es posible que el mantenimiento y la optimización futuros requieran más tiempo.
🔄 Qué probar (Try)
- 🕒 Equilibrar trabajo y descanso: Puede ayudar fijar una rutina estable para que los descansos cortos no se conviertan repetidamente en caídas largas.
- 🔍 Prepararse para el mantenimiento futuro: Documentar las estructuras optimizadas actuales de ChatPage y DiaryPage, y usar activamente comentarios de código para reducir la carga de mantenimiento.
- 🛠️ Considerar la extensibilidad futura: Pensar en modularizar más las estructuras de API Call y Custom Function para que añadir y ampliar funciones después sea menos pesado.
Conclusión
Hoy fue un día productivo: optimizaste la funcionalidad general de ChatPage, mejoraste la estructura de DiaryPage y resolviste varios issues. Pero el cansancio acumulado puede desordenar el calendario de trabajo, así que parecen necesarios un descanso adecuado y ajustes de agenda. ¡Ojalá sigas desarrollando con la extensibilidad en mente mientras mantienes el sistema optimizado! 💪😊
Deja un comentario