mirror of
https://github.com/marcogll/gloria_app.git
synced 2026-03-15 08:24:43 +00:00
Project Requirements
This commit is contained in:
177
AGENTS.md
Normal file
177
AGENTS.md
Normal file
@@ -0,0 +1,177 @@
|
||||
# 🤖 Equipo de Agentes Expertos – Proyecto Gloria
|
||||
|
||||
Este documento define las personalidades, responsabilidades y directrices operativas de los agentes de IA involucrados en el desarrollo del sistema.
|
||||
|
||||
Todos los agentes deben operar bajo el principio de **Privilegio Mínimo (Non-Root)**.
|
||||
|
||||
---
|
||||
|
||||
## 1. 🏗️ Arquitecto de Infraestructura (Ops-Agent)
|
||||
|
||||
### Perfil
|
||||
|
||||
Experto en Docker, Seguridad Linux y VPS Hostinger.
|
||||
|
||||
### Misión
|
||||
|
||||
Configurar el entorno de despliegue garantizando que todos los procesos corran bajo el usuario `node` o `appuser`.
|
||||
|
||||
### Directrices Críticas
|
||||
|
||||
* Prohibido el uso de `sudo` en Dockerfiles.
|
||||
* Configurar volúmenes con permisos `chown` específicos al UID de la app.
|
||||
* Implementar Redis y SQLite con persistencia en:
|
||||
|
||||
```
|
||||
/home/userapp/data
|
||||
```
|
||||
|
||||
### Tarea Inmediata
|
||||
|
||||
* Generar `docker-compose.yml`.
|
||||
* Crear Dockerfiles multi-etapa (dev/prod).
|
||||
|
||||
---
|
||||
|
||||
## 2. 🧬 Especialista en Backend y Datos (Data-Agent)
|
||||
|
||||
### Perfil
|
||||
|
||||
Experto en Next.js (Server Actions), Prisma ORM y Redis.
|
||||
|
||||
### Misión
|
||||
|
||||
Implementar el esquema de datos y la lógica *phone-first*.
|
||||
|
||||
### Directrices Críticas
|
||||
|
||||
* Asegurar integridad referencial en SQLite.
|
||||
* Implementar casos de uso para triaje de crisis.
|
||||
* Configurar Redis para estados temporales.
|
||||
* Implementar borrado automático de audios (168h).
|
||||
|
||||
### Responsabilidades
|
||||
|
||||
* Modelos Prisma
|
||||
* Use Cases
|
||||
* Jobs programados
|
||||
* Gestión de sesiones
|
||||
|
||||
---
|
||||
|
||||
## 3. 🎨 Desarrollador de Frontend (UI-Agent)
|
||||
|
||||
### Perfil
|
||||
|
||||
Experto en React, Tailwind CSS y Framer Motion.
|
||||
|
||||
### Misión
|
||||
|
||||
Traducir el mockup “Nano Banana” a una experiencia funcional y premium.
|
||||
|
||||
### Directrices Críticas
|
||||
|
||||
* Usar paleta: Púrpura Imperial, Crema, Dorado.
|
||||
* Implementar SPA Flow para agendamiento.
|
||||
* Control de acceso por roles.
|
||||
* Compatibilidad móvil/desktop para grabación de audio.
|
||||
|
||||
### Responsabilidades
|
||||
|
||||
* Componentes UI
|
||||
* Layouts
|
||||
* Animaciones
|
||||
* Flujos interactivos
|
||||
|
||||
---
|
||||
|
||||
## 4. 🔌 Integrador de APIs (Integration-Agent)
|
||||
|
||||
### Perfil
|
||||
|
||||
Experto en Evolution API y Google Calendar API.
|
||||
|
||||
### Misión
|
||||
|
||||
Garantizar comunicación estable con servicios externos.
|
||||
|
||||
### Directrices Críticas
|
||||
|
||||
* Implementar reintentos con exponential backoff.
|
||||
* Evitar colisiones en agenda.
|
||||
* Incluir enlaces temporales en mensajes.
|
||||
|
||||
### Responsabilidades
|
||||
|
||||
* Clientes API
|
||||
* Webhooks
|
||||
* Sincronización
|
||||
* Manejo de errores
|
||||
|
||||
---
|
||||
|
||||
## 5. 🛠️ Protocolo de Ejecución (UserApp Mode)
|
||||
|
||||
Todos los agentes deben seguir este flujo:
|
||||
|
||||
### 1. Verificación de Entorno
|
||||
|
||||
```bash
|
||||
whoami && id
|
||||
```
|
||||
|
||||
Debe retornar un usuario no-root.
|
||||
|
||||
### 2. Instalación de Dependencias
|
||||
|
||||
```bash
|
||||
pnpm install --frozen-lockfile
|
||||
```
|
||||
|
||||
### 3. Gestión de Base de Datos
|
||||
|
||||
```bash
|
||||
npx prisma migrate deploy
|
||||
```
|
||||
|
||||
### 4. Build de Producción
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. 📋 Prompt Maestro para Inicialización
|
||||
|
||||
Plantilla oficial para activar agentes:
|
||||
|
||||
```text
|
||||
Actúa como el [Nombre del Agente].
|
||||
|
||||
Tu objetivo es desarrollar el módulo [Módulo] del Proyecto Gloria siguiendo el PRD y README adjuntos.
|
||||
|
||||
Debes escribir código limpio, modular y seguro.
|
||||
|
||||
REGLA DE ORO:
|
||||
Todo el código debe ser ejecutable en un entorno Non-root.
|
||||
|
||||
No utilices comandos que requieran privilegios de administrador.
|
||||
|
||||
Genera el código para [Tarea Específica] ahora.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. 📌 Gobernanza Técnica
|
||||
|
||||
* Ningún agente puede introducir dependencias que requieran root.
|
||||
* Todo servicio debe correr en contenedor aislado.
|
||||
* Logs deben ser accesibles sin privilegios elevados.
|
||||
* Las claves deben residir exclusivamente en `.env`.
|
||||
|
||||
---
|
||||
|
||||
Documento interno del Proyecto Gloria.
|
||||
Uso exclusivo para coordinación técnica.
|
||||
|
||||
172
PRD.md
Normal file
172
PRD.md
Normal file
@@ -0,0 +1,172 @@
|
||||
# Product Requirements Document (PRD) – Plataforma Gloria
|
||||
|
||||
**Versión:** 2.0
|
||||
**Fecha:** 29 de Enero, 2026
|
||||
**Stack:** Next.js 14, Prisma, SQLite, Redis, Evolution API
|
||||
|
||||
---
|
||||
|
||||
## 1. Visión del Producto
|
||||
|
||||
Transformar la presencia digital de Gloria Wells en una herramienta operativa que centralice la atención, gestione crisis y automatice el agendamiento, manteniendo una estética de alta gama, calidez y profesionalismo.
|
||||
|
||||
---
|
||||
|
||||
## 2. Mapa del Sitio (Basado en Mockup)
|
||||
|
||||
### 2.1 Landing Page (Home)
|
||||
|
||||
#### Header
|
||||
|
||||
* Logo: GW
|
||||
* Menú: Inicio, Sobre mí, Servicios, Testimonios, Contacto
|
||||
* CTA: **Agendar Ahora**
|
||||
|
||||
#### Hero Section
|
||||
|
||||
* Imagen: Fotografía profesional de Gloria
|
||||
* Titular: **Sanación Integral**
|
||||
* Subtitular: Enfoque terapéutico
|
||||
* Botón principal: **Agenda tu Cita** (Inicia flujo)
|
||||
|
||||
#### Sección Biográfica
|
||||
|
||||
* Video: Introducción
|
||||
* Texto: Conoce a Gloria
|
||||
|
||||
#### Servicios (Grid 3)
|
||||
|
||||
* Terapia Individual
|
||||
* Terapia de Pareja
|
||||
* Talleres / Grupos
|
||||
|
||||
#### Testimonios
|
||||
|
||||
* Carrusel con citas, nombres y avatares
|
||||
|
||||
#### Contacto
|
||||
|
||||
* Nombre, Email, Mensaje
|
||||
|
||||
#### Footer
|
||||
|
||||
* Redes sociales
|
||||
* Privacidad
|
||||
* Copyright
|
||||
|
||||
---
|
||||
|
||||
## 3. Requisitos Funcionales
|
||||
|
||||
### 3.1 Flujo de Agendamiento
|
||||
|
||||
#### Paso 1: Identificación
|
||||
|
||||
* Ingreso de WhatsApp
|
||||
* Búsqueda en SQLite
|
||||
* Cliente existente: mensaje personalizado + botones
|
||||
* Nuevo cliente: registro (Nombre, Edad, Motivo)
|
||||
|
||||
#### Paso 2: Filtro de Crisis
|
||||
|
||||
* Pregunta: ¿Es una urgencia?
|
||||
* Si: protocolo de crisis
|
||||
* No: calendario
|
||||
|
||||
#### Paso 3: Disponibilidad
|
||||
|
||||
* Integración Google Calendar
|
||||
* Caché Redis
|
||||
|
||||
#### Paso 4: Pago
|
||||
|
||||
* Carga de comprobante
|
||||
|
||||
---
|
||||
|
||||
### 3.2 Dashboard de Administración
|
||||
|
||||
#### Rol: Asistente
|
||||
|
||||
* Agenda general
|
||||
* Validación de pagos
|
||||
* Lista de pacientes
|
||||
* Sin acceso a notas clínicas
|
||||
|
||||
#### Rol: Terapeuta (Gloria)
|
||||
|
||||
* Expediente completo
|
||||
* Notas clínicas enriquecidas
|
||||
* Módulo de voz
|
||||
* Envío vía WhatsApp
|
||||
* Auto-eliminación (7 días)
|
||||
|
||||
---
|
||||
|
||||
## 4. Requisitos de Datos (Prisma)
|
||||
|
||||
```prisma
|
||||
model Patient {
|
||||
phone String @id
|
||||
name String
|
||||
birthdate DateTime
|
||||
status String
|
||||
createdAt DateTime @default(now())
|
||||
}
|
||||
|
||||
model Appointment {
|
||||
id Int @id @default(autoincrement())
|
||||
date DateTime
|
||||
status String
|
||||
isCrisis Boolean
|
||||
paymentProofUrl String?
|
||||
}
|
||||
|
||||
model ClinicalNote {
|
||||
id Int @id @default(autoincrement())
|
||||
patientId String
|
||||
content String
|
||||
createdAt DateTime @default(now())
|
||||
}
|
||||
|
||||
model VoiceNote {
|
||||
id Int @id @default(autoincrement())
|
||||
filename String
|
||||
duration Int
|
||||
sentAt DateTime
|
||||
expiresAt DateTime
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. Requisitos No Funcionales
|
||||
|
||||
### Hosting
|
||||
|
||||
* VPS Hostinger
|
||||
* Docker Compose
|
||||
|
||||
### Optimización
|
||||
|
||||
* Redis (sesiones y caché)
|
||||
|
||||
### Privacidad
|
||||
|
||||
* Cookies banner
|
||||
* Aceptación T&C
|
||||
* Página estática
|
||||
|
||||
### Manejo de Archivos
|
||||
|
||||
* Comprobantes: volumen local
|
||||
* Audios: temporales
|
||||
|
||||
---
|
||||
|
||||
## 6. Casos Borde
|
||||
|
||||
* Citas para terceros
|
||||
* Cancelaciones tardías
|
||||
* Zonas horarias
|
||||
|
||||
180
README.md
180
README.md
@@ -1 +1,179 @@
|
||||
# gloria_app
|
||||
# 🧠 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 Wells. 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.
|
||||
|
||||
---
|
||||
|
||||
## 🚀 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
|
||||
* Radix UI
|
||||
|
||||
**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
|
||||
|
||||
---
|
||||
|
||||
## 📂 Estructura de Carpetas
|
||||
|
||||
```bash
|
||||
├── 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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🛠 Instalación y Configuración
|
||||
|
||||
### Prerrequisitos
|
||||
|
||||
* Node.js 18+
|
||||
* 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. Variables de Entorno
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
Configurar valores en `.env`.
|
||||
|
||||
#### 3. Levantar Redis
|
||||
|
||||
```bash
|
||||
docker-compose up -d redis
|
||||
```
|
||||
|
||||
#### 4. Base de Datos
|
||||
|
||||
```bash
|
||||
npx prisma db push
|
||||
```
|
||||
|
||||
#### 5. Ejecutar en Desarrollo
|
||||
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔐 Variables de Entorno
|
||||
|
||||
| Variable | Descripción |
|
||||
| ------------------ | --------------------------- |
|
||||
| DATABASE_URL | Ruta a la base SQLite |
|
||||
| REDIS_URL | Conexión Redis |
|
||||
| EVOLUTION_API_KEY | Token WhatsApp API |
|
||||
| GOOGLE_CALENDAR_ID | ID del calendario principal |
|
||||
|
||||
---
|
||||
|
||||
## 🛡 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
|
||||
|
||||
---
|
||||
|
||||
## 🚢 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 Wells**
|
||||
|
||||
Uso interno y confidencial.
|
||||
|
||||
|
||||
154
TASKS.md
Normal file
154
TASKS.md
Normal file
@@ -0,0 +1,154 @@
|
||||
# 🗺️ Plan Maestro Detallado – Proyecto Gloria (Sprints & QA)
|
||||
|
||||
Este documento define el plan de ejecución por sprints, controles de seguridad y fases de validación colaborativa.
|
||||
|
||||
---
|
||||
|
||||
## 🟢 Sprint 1 – Cimientos, Infraestructura y Seguridad Base
|
||||
|
||||
### Foco
|
||||
|
||||
Aislamiento de procesos y entorno Non-Root.
|
||||
|
||||
### Tareas Técnicas
|
||||
|
||||
1.1 Crear Dockerfile con usuario `appuser` (UID 1001). Prohibir `RUN sudo`.
|
||||
|
||||
1.2 Configurar `docker-compose.yml` con límites de CPU y memoria.
|
||||
|
||||
1.3 Configurar SQLite con permisos restringidos.
|
||||
|
||||
1.4 Validar `.env` con zod en arranque.
|
||||
|
||||
### Testing & Seguridad
|
||||
|
||||
* Funcional: `pnpm install` y `prisma migrate` dentro del contenedor.
|
||||
* Manual: `docker exec -it <id> whoami` ≠ root.
|
||||
* Automático: Integrar helmet.js.
|
||||
|
||||
---
|
||||
|
||||
## 🔵 Sprint 2 – Identidad Phone-First y Onboarding
|
||||
|
||||
### Foco
|
||||
|
||||
Validación sin contraseñas y privacidad.
|
||||
|
||||
### Tareas Técnicas
|
||||
|
||||
2.1 Rate limiting con Redis (IP + teléfono).
|
||||
|
||||
2.2 Formulario multi-paso persistente.
|
||||
|
||||
2.3 Fidelidad visual Nano Banana.
|
||||
|
||||
### Testing & Seguridad
|
||||
|
||||
* Funcional: Registro completo.
|
||||
* Manual: Inyección XSS en nombre.
|
||||
* Privacidad: IDs con UUID.
|
||||
|
||||
---
|
||||
|
||||
## 🟡 Sprint 3 – Triaje de Crisis y Agenda
|
||||
|
||||
### Foco
|
||||
|
||||
Lógica sensible y disponibilidad.
|
||||
|
||||
### Tareas Técnicas
|
||||
|
||||
3.1 Motor de detección de crisis.
|
||||
|
||||
3.2 Sincronización Google Calendar con locks.
|
||||
|
||||
### Testing & Seguridad
|
||||
|
||||
* Funcional: Alta en calendario.
|
||||
* Manual: Manipulación consola.
|
||||
* Resiliencia: Simulación fallo API.
|
||||
|
||||
---
|
||||
|
||||
## 🟠 Sprint 4 – Pagos y Roles
|
||||
|
||||
### Foco
|
||||
|
||||
Integridad financiera y control de acceso.
|
||||
|
||||
### Tareas Técnicas
|
||||
|
||||
4.1 Upload seguro (tipo/tamaño).
|
||||
|
||||
4.2 Middleware RBAC.
|
||||
|
||||
### Testing & Seguridad
|
||||
|
||||
* Funcional: Validación pago.
|
||||
* Manual: Bypass dashboard.
|
||||
* Vulnerabilidades: Archivos maliciosos.
|
||||
|
||||
---
|
||||
|
||||
## 🔴 Sprint 5 – Voz y Notas Clínicas
|
||||
|
||||
### Foco
|
||||
|
||||
Privacidad extrema y ciclo de vida.
|
||||
|
||||
### Tareas Técnicas
|
||||
|
||||
5.1 Audio sandbox + Signed URLs.
|
||||
|
||||
5.2 Cron purga 7 días.
|
||||
|
||||
### Testing & Seguridad
|
||||
|
||||
* Funcional: Audio → WhatsApp.
|
||||
* Manual: Acceso directo.
|
||||
* Purga: Ejecución forzada.
|
||||
|
||||
---
|
||||
|
||||
## 🟣 Sprint 6 – Integración Final y Stress QA
|
||||
|
||||
### Foco
|
||||
|
||||
Estabilidad y cumplimiento.
|
||||
|
||||
### Tareas Técnicas
|
||||
|
||||
6.1 Recordatorios WhatsApp.
|
||||
|
||||
6.2 Log de auditoría.
|
||||
|
||||
### Testing & Seguridad
|
||||
|
||||
* Regresión completa.
|
||||
* Cookies compliance.
|
||||
* Stress test (50 usuarios).
|
||||
|
||||
---
|
||||
|
||||
## 📝 Protocolo de Colaboración en Testing
|
||||
|
||||
### Entregables del Agente
|
||||
|
||||
* Código fuente
|
||||
* Comando de test
|
||||
* Evidencia de ejecución
|
||||
|
||||
### Validación del Director Técnico
|
||||
|
||||
* Ejecución manual
|
||||
* Prueba de seguridad
|
||||
* Revisión de logs
|
||||
|
||||
### Aprobación
|
||||
|
||||
Solo tras validación manual se habilita la siguiente fase.
|
||||
|
||||
---
|
||||
|
||||
Documento de control operativo y aseguramiento de calidad – Proyecto Gloria
|
||||
|
||||
Reference in New Issue
Block a user