# Progreso del Proyecto Gloria Este documento rastrea el progreso detallado de cada Sprint. ## Resumen Global | Sprint | Estado | Progreso | Fecha | | ------------------------------- | ------------------------------ | -------- | ---------- | | 🟢 Sprint 1 - Cimientos | ✅ Completado | 100% | 2026-02-01 | | 🔵 Sprint 2 - Phone-First | ✅ Completado | 100% | 2026-02-01 | | 🟡 Sprint 3 - Crisis y Agenda | ✅ Completado | 100% | 2026-02-02 | | 🟠 Sprint 4 - Pagos y Roles | ✅ Completado | 100% | 2026-02-02 | | 🔴 Sprint 5 - Voz y Notas | ⏳ No Iniciado (Esperando 3/4) | 0% | Pendiente | | 🟣 Sprint 6 - Integración Final | ⏳ No Iniciado (Esperando 3/4) | 0% | Pendiente | **Progreso Total del Proyecto:** 67% (4/6 sprints completados) --- ## 🟡 Sprint 3 - Triaje de Crisis y Agenda **Estado:** ✅ 100% Completado **Fecha Inicio:** 2026-02-01 **Fecha Finalización:** 2026-02-02 **Responsable:** Data-Agent + UI-Agent **Progreso:** 100% ### Foco Lógica sensible y disponibilidad. ### Progreso Global | Fase | Estado | % Completado | | ----------------------- | ------------- | ------------ | | Motor de Crisis | ✅ Completado | 100% | | Google Calendar API | ✅ Completado | 100% | | Caché de Disponibilidad | ✅ Completado | 100% | | Sistema de Locks | ✅ Completado | 100% | | Servicio de Email SMTP | ✅ Completado | 100% | | Reacomodar Citas | ✅ Completado | 100% | | Job Email Diario 10 PM | ✅ Completado | 100% | ### Tareas Detalladas #### Motor de Crisis (100% Completado) - [x] API endpoint POST /api/crisis/evaluate - [x] Algoritmo de detección de palabras clave - [x] Preguntas de validación adicionales # Sprint 3 y 4 completados - ver detalles arriba #### 1. Upload de Comprobantes con OCR (Híbrido) **Archivos a crear:** - `src/app/api/payments/upload-proof/route.ts` - API endpoint de upload - `src/lib/ocr/processor.ts` - Procesador OCR (servidor) - `src/lib/ocr/templates.ts` - Templates para extraer datos específicos - `src/components/dashboard/PaymentUpload.tsx` - Componente de upload con drag & drop - `src/lib/utils/ocr-client.ts` - Pre-procesamiento en cliente (opcional) **Archivos a modificar:** - `prisma/schema.prisma` - Agregar campos extraídos a modelo Payment - `src/app/dashboard/asistente/page.tsx` - Integrar componente de upload **Base de datos - Actualizar modelo Payment:** ```prisma model Payment { // ... campos existentes // Datos extraídos por OCR extractedDate DateTime? extractedAmount Float? extractedReference String? // Clave de transferencia extractedSenderName String? extractedSenderBank String? } ``` **Flujo del proceso (Híbrido):** **Cliente:** 1. Usuario arrastra o selecciona archivo (PDF, JPG, PNG) 2. Validación de tipo y tamaño (máx 5MB) 3. Pre-procesamiento opcional: Escala de grises, Aumentar contraste, Redimensionar si es muy grande 4. Enviar archivo al servidor **Servidor:** 1. Recibir archivo multipart/form-data 2. Validar tipo (PDF, JPG, PNG) y tamaño (5MB) 3. Generar nombre único: `payment_{appointmentId}_{timestamp}.{ext}` 4. Guardar en `/public/uploads/payments/` 5. Procesar con OCR: - Si es imagen: usar tesseract.js directamente - Si es PDF: extraer texto con pdf-parse primero 6. Extraer datos usando regex patterns (monto, fecha, referencia, remitente, banco) 7. Guardar datos extraídos en Payment model 8. Retornar URL del archivo y datos extraídos **Componente PaymentUpload:** - Área de drag & drop - Previsualización de archivo (imagen o icono PDF) - Barra de progreso de upload - Mostrar datos extraídos por OCR con opción de editar - Botón para reintentar si OCR falla --- #### 2. Botón "Ver Más Servicios" en Landing **Archivo a modificar:** - `src/components/layout/Services.tsx` - Línea 136-144 **Cambios:** ```tsx // Antes: // Después: ``` --- #### 3. Contacto Específico para Cursos **Archivos a crear:** - `src/app/api/contact/courses/route.ts` - Endpoint para consultas de cursos - `src/lib/email/templates/course-inquiry.ts` - Template HTML de notificación **Archivo a modificar:** - `src/app/cursos/page.tsx` - Agregar sección de contacto específica **Especificaciones:** - Formulario con campos: - Nombre (requerido) - Email (requerido) - Curso de interés (dropdown - requerido) - Mensaje (requerido) - Al enviar: - Guardar registro en SQLite - Enviar email de notificación a admin - Diseño consistente con paleta Nano Banana - Animaciones suaves con Framer Motion - Cambiar botones "Más Información" para abrir modal o ir a sección de contacto --- ### 📊 Cronograma de Ejecución | Fase | Tarea | Prioridad | Estimado | | ---- | ------------------ | --------- | --------- | | 1.1 | Configurar SMTP | Alta | 1-2 horas | | 1.2 | Reacomodar citas | Alta | 3-4 horas | | 1.3 | Email diario 10 PM | Alta | 2-3 horas | | 2.1 | Botón servicios | Baja | 30 min | | 2.2 | Contacto cursos | Media | 2-3 horas | | 2.3 | Upload con OCR | Alta | 4-5 horas | **Total estimado:** 13-18 horas --- ### 🔍 Testing Checklist #### Sprint 3 - [ ] Test de SMTP: enviar email de prueba - [ ] Test de reacomodar: cambiar cita y verificar email enviado - [ ] Test de job manual: trigger endpoint y verificar email diario - [ ] Test de job programado: esperar a las 10 PM y verificar email automático #### Sprint 4 - [ ] Test de botón servicios: navegar a /servicios - [ ] Test de contacto cursos: enviar consulta y verificar email - [ ] Test de upload PDF: subida, OCR, extracción de datos - [ ] Test de upload JPG: subida, OCR, extracción de datos - [ ] Test de validación: intentar subir archivo inválido (tipo/size) - [ ] Test de drag & drop: arrastrar archivo al componente --- ### ⚠️ Notas Importantes 1. **Reminders por WhatsApp:** Se decidió NO implementar para evitar baneos de Meta. Los recordatorios se manejan a través de Google Calendar (email 24h antes - ya implementado) y email diario a las 10 PM al admin (pendiente). 2. **Reacomodar Citas:** Flujo con confirmación enviada (email al paciente). El cambio es automático al recibir el email. 3. **Upload de Comprobantes:** Enfoque híbrido (pre-procesamiento en cliente, OCR en servidor) para extraer datos de cualquier banco sin plantillas específicas. 4. **Email Diario:** Se envía solo a admin (Gloria), no al asistente. Hora: 10 PM (configurable para timezone). 5. **Datos a Extraer del Comprobante:** Monto, Fecha de transferencia, Clave/Referencia de transferencia, Nombre del remitente, Banco remitente.