# 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.