Files
gloria_app/README.md
Marco Gallegos 423f96022a feat: Complete Sprints 3 & 4 - Email, Reschedule, OCR, Upload, Contact Forms
Sprint 3 - Crisis y Agenda (100%):
- Implement SMTP email service with nodemailer
- Create email templates (reschedule, daily agenda, course inquiry)
- Add appointment reschedule functionality with modal
- Add Google Calendar updateEvent function
- Create scheduled job for daily agenda email at 10 PM
- Add manual trigger endpoint for testing

Sprint 4 - Pagos y Roles (100%):
- Add Payment proof upload with OCR (tesseract.js, pdf-parse)
- Extract data from proofs (amount, date, reference, sender, bank)
- Create PaymentUpload component with drag & drop
- Add course contact form to /cursos page
- Update Services button to navigate to /servicios
- Add Reschedule button to Assistant and Therapist dashboards
- Add PaymentUpload component to Assistant dashboard
- Add eventId field to Appointment model
- Add OCR-extracted fields to Payment model
- Update Prisma schema and generate client
- Create API endpoints for reschedule, upload-proof, courses contact
- Create manual trigger endpoint for daily agenda job
- Initialize daily agenda job in layout.tsx

Dependencies added:
- nodemailer, node-cron, tesseract.js, sharp, pdf-parse, @types/nodemailer

Files created/modified:
- src/infrastructure/email/smtp.ts
- src/lib/email/templates/*
- src/jobs/send-daily-agenda.ts
- src/app/api/calendar/reschedule/route.ts
- src/app/api/payments/upload-proof/route.ts
- src/app/api/contact/courses/route.ts
- src/app/api/jobs/trigger-agenda/route.ts
- src/components/dashboard/RescheduleModal.tsx
- src/components/dashboard/PaymentUpload.tsx
- src/components/forms/CourseContactForm.tsx
- src/app/dashboard/asistente/page.tsx (updated)
- src/app/dashboard/terapeuta/page.tsx (updated)
- src/app/cursos/page.tsx (updated)
- src/components/layout/Services.tsx (updated)
- src/infrastructure/external/calendar.ts (updated)
- src/app/layout.tsx (updated)
- prisma/schema.prisma (updated)
- src/lib/validations.ts (updated)
- src/lib/env.ts (updated)

Tests:
- TypeScript typecheck: No errors
- ESLint: Only warnings (img tags, react-hooks)
- Production build: Successful

Documentation:
- Updated CHANGELOG.md with Sprint 3/4 changes
- Updated PROGRESS.md with 100% completion status
- Updated TASKS.md with completed tasks
2026-02-02 20:45:32 -06:00

251 lines
5.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🧠 Gloria Plataforma de Gestión Terapéutica
Sistema modular de alta gama para la gestión de pacientes, triaje de crisis y automatización de agenda terapéutica.
---
## 📖 Descripción General
**Gloria** es una solución digital diseñada para la terapeuta Gloria Niño. El sistema optimiza la interacción entre la terapeuta, su asistente y los pacientes mediante un enfoque *phone-first* (identificación vía WhatsApp) y una estética visual premium inspirada en el bienestar y la sanación integral.
---
## 🎨 Referencia Visual (Mockup)
> **Importante:** Se ha creado un prototipo visual de alta fidelidad en la carpeta `mockup/`.
> Este prototipo (`index.html` + `styles.css`) debe utilizarse como **referencia estricta de diseño** (colores, tipografía, espaciado, animaciones) para la implementación en Next.js.
> La carpeta `mockup/` incluye una copia local de los assets en `mockup/src/` para ser totalmente autónoma.
### Nota para Desarrollo
El código de producción se implementará en **Next.js** dentro de la carpeta `src/`. El mockup es un artefacto separado para aprobación de diseño.
---
## 🚀 Arquitectura del Sistema
El proyecto sigue una arquitectura de **Monolito Modular**, manteniendo simplicidad de despliegue en VPS sin sacrificar escalabilidad interna.
### Tech Stack
**Frontend**
* Next.js 14 (App Router)
* Tailwind CSS
* Shadcn/ui (Radix UI based)
* TypeScript 5.x
**Backend**
* Next.js Server Actions
* API Routes
**Base de Datos**
* SQLite
* Prisma ORM
**Caché y Estado**
* Redis (sesiones y disponibilidad)
**Integraciones**
* Evolution API (WhatsApp)
* Google Calendar
**Infraestructura**
* Docker
* Docker Compose
* Hostinger VPS
**Development**
* Node.js 22.x
* pnpm (package manager)
* ESLint + Prettier
---
## 📂 Estructura de Carpetas
```bash
├── mockup # ⚠️ HTML/CSS de referencia visual (NO usar en producción)
│ ├── index.html # Prototipo estático del sitio
│ └── styles.css # Estilos de referencia
├── src
│ ├── app # Rutas, Layouts y Server Components
│ │ ├── (auth) # Flujo de identificación por teléfono
│ │ ├── (dashboard) # Paneles de Gloria y Asistente
│ │ └── api # Webhooks y endpoints
│ ├── components # UI Kit
│ ├── core # Casos de uso
│ ├── infrastructure # Adaptadores externos
│ └── lib # Utilidades
├── prisma # Esquema y migraciones
├── docker # Configuración Docker
└── scripts # Tareas programadas
```
> **Nota:** La carpeta `mockup/` contiene únicamente prototipos HTML/CSS estáticos para referencia visual durante el desarrollo. El código de producción se implementará en Next.js dentro de `src/`.
---
## 🛠 Instalación y Configuración
### Prerrequisitos
* Node.js 22.x
* pnpm (instalar con `npm install -g pnpm`)
* Docker & Docker Compose
* Instancia activa de Evolution API
---
### Pasos de Configuración
#### 1. Clonar Repositorio
```bash
git clone https://github.com/usuario/gloria-platform.git
cd gloria-platform
```
#### 2. Instalar Dependencias
```bash
pnpm install
```
#### 3. Variables de Entorno
```bash
cp .env.example .env
```
Configurar valores en `.env`.
#### 4. Levantar Redis
```bash
docker compose up -d redis
```
#### 5. Base de Datos
```bash
pnpm prisma db push
```
#### 6. Ejecutar en Desarrollo
```bash
pnpm dev
```
El servidor estará disponible en http://localhost:3000
#### 7. Build de Producción
```bash
pnpm build
```
---
## 🔐 Variables de Entorno
| Variable | Descripción |
| --- | --- |
| NODE_ENV | Environment (development/production) |
| DATABASE_URL | Ruta a la base SQLite |
| REDIS_URL | Conexión Redis |
| NEXTAUTH_SECRET | Secret para NextAuth |
| EVOLUTION_API_URL | URL de Evolution API |
| EVOLUTION_API_KEY | Token de WhatsApp API |
| EVOLUTION_INSTANCE_ID | ID de instancia WhatsApp |
| GOOGLE_CALENDAR_ID | ID del calendario principal |
| GOOGLE_CLIENT_ID | Client ID Google OAuth |
| GOOGLE_CLIENT_SECRET | Client Secret Google OAuth |
| WHATSAPP_PHONE_NUMBER | Número de WhatsApp de Gloria |
Ver `.env.example` para todas las variables disponibles.
---
## 🛡 Políticas de Datos y Privacidad
### Notas Clínicas
* Encriptadas en reposo
* Acceso exclusivo rol Terapeuta
### Audios
* Almacenamiento temporal
* Eliminación automática a 7 días
### Identificación
* Sin contraseñas
* Validación vía WhatsApp + Redis
---
## 📚 Scripts Disponibles
```bash
pnpm dev # Inicia servidor de desarrollo
pnpm build # Build de producción
pnpm start # Inicia servidor de producción
pnpm lint # Ejecuta ESLint
pnpm typecheck # Ejecuta TypeScript checker
pnpm prisma:studio # Abre Prisma Studio
```
---
## 📊 Estado del Proyecto
Ver progreso detallado en:
- **[PROGRESS.md](./PROGRESS.md)** - Seguimiento por Sprint
- **[TASKS.md](./TASKS.md)** - Plan de ejecución
- **[CHANGELOG.md](./CHANGELOG.md)** - Historial de cambios
**Estado Actual:** Sprint 1 - Cimientos e Infraestructura 🚧 En Progreso
---
## 🚢 Despliegue en Producción (Hostinger VPS)
Usar configuración optimizada:
```bash
docker-compose -f docker-compose.prod.yml up -d --build
```
Características:
* Auto-restart
* Persistencia de datos
* Volúmenes aislados
---
## 📌 Mantenimiento
* Limpieza automática de audios (`/scripts`)
* Backups periódicos de SQLite
* Rotación de logs Docker
---
## 📄 Licencia y Proyecto
Desarrollado para el proyecto:
**Sanación Integral Gloria Niño**
Uso interno y confidencial.