Database: - Actualizar backups de producción (usuarios, perfiles, stats) Orchestration: - Añadir análisis errores producción 2025-12-18 - Actualizar análisis teacher portal - Añadir reportes de migración y producción 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
370 lines
11 KiB
Markdown
370 lines
11 KiB
Markdown
# ANALISIS DE REQUERIMIENTOS - PRODUCCION GAMILIT
|
|
|
|
**Version:** 1.0.0
|
|
**Fecha:** 2025-12-18
|
|
**Analista:** Requirements-Analyst (SIMCO)
|
|
**Proyecto:** GAMILIT Platform
|
|
|
|
---
|
|
|
|
## RESUMEN EJECUTIVO
|
|
|
|
Este documento presenta el analisis detallado de los requerimientos para preparar el ambiente de produccion de GAMILIT, incluyendo:
|
|
|
|
1. **SSL/HTTPS:** Configuracion de certificados para backend y frontend
|
|
2. **Homologacion de Base de Datos:** Sincronizacion entre dev y prod
|
|
3. **Carga Inicial de Usuarios:** Validacion de mas de 30 usuarios, excluyendo rckrdmrd@gmail.com
|
|
|
|
---
|
|
|
|
## 1. CONFIGURACION SSL/HTTPS
|
|
|
|
### 1.1 Estado Actual
|
|
|
|
| Componente | Estado | Documentacion |
|
|
|------------|--------|---------------|
|
|
| Script `setup-ssl-certbot.sh` | DISPONIBLE | `/scripts/setup-ssl-certbot.sh` |
|
|
| Guia Certbot | COMPLETA | `docs/95-guias-desarrollo/GUIA-SSL-CERTBOT-DEPLOYMENT.md` |
|
|
| Guia SSL Nginx | COMPLETA | `docs/95-guias-desarrollo/GUIA-SSL-NGINX-PRODUCCION.md` |
|
|
| Guia SSL Autofirmado | COMPLETA | `docs/95-guias-desarrollo/GUIA-SSL-AUTOFIRMADO.md` |
|
|
| `.env.production.example` Backend | LISTO | `/apps/backend/.env.production.example` |
|
|
| `.env.production.example` Frontend | LISTO | `/apps/frontend/.env.production.example` |
|
|
|
|
### 1.2 Arquitectura SSL
|
|
|
|
```
|
|
Internet
|
|
|
|
|
v
|
|
+------------------+
|
|
| Puerto 80/443 |
|
|
| (Nginx) |
|
|
+--------+---------+
|
|
|
|
|
+--------------+--------------+
|
|
| | |
|
|
v v v
|
|
/api/* /socket.io /*
|
|
| | |
|
|
v v v
|
|
+------------+ +------------+ +------------+
|
|
| Backend | | WebSocket | | Frontend |
|
|
| :3006 | | :3006 | | :3005 |
|
|
+------------+ +------------+ +------------+
|
|
```
|
|
|
|
### 1.3 Opciones de Certificados SSL
|
|
|
|
#### Opcion A: Let's Encrypt (Recomendado para Produccion)
|
|
|
|
**Requisitos:**
|
|
- Dominio registrado (ej: gamilit.com)
|
|
- DNS A record apuntando al servidor (IP: 74.208.126.102)
|
|
- Puertos 80 y 443 abiertos
|
|
|
|
**Comando:**
|
|
```bash
|
|
chmod +x scripts/setup-ssl-certbot.sh
|
|
sudo ./scripts/setup-ssl-certbot.sh gamilit.com
|
|
```
|
|
|
|
**Variables de Entorno Resultantes:**
|
|
|
|
Backend (.env.production):
|
|
```env
|
|
CORS_ORIGIN=https://gamilit.com
|
|
FRONTEND_URL=https://gamilit.com
|
|
```
|
|
|
|
Frontend (.env.production):
|
|
```env
|
|
VITE_API_HOST=gamilit.com
|
|
VITE_API_PROTOCOL=https
|
|
VITE_WS_HOST=gamilit.com
|
|
VITE_WS_PROTOCOL=wss
|
|
```
|
|
|
|
#### Opcion B: Certificado Auto-firmado (Desarrollo/Staging)
|
|
|
|
**Comando:**
|
|
```bash
|
|
sudo ./scripts/setup-ssl-certbot.sh --self-signed
|
|
```
|
|
|
|
### 1.4 Validacion Post-SSL
|
|
|
|
```bash
|
|
# Validacion automatica
|
|
./scripts/validate-deployment.sh --ssl --verbose
|
|
|
|
# Validacion manual
|
|
curl -I https://gamilit.com
|
|
curl https://gamilit.com/api/health
|
|
echo | openssl s_client -connect gamilit.com:443 2>/dev/null | openssl x509 -noout -dates
|
|
```
|
|
|
|
### 1.5 Estado: LISTO PARA IMPLEMENTACION
|
|
|
|
- Script de configuracion SSL disponible
|
|
- Documentacion completa
|
|
- Templates de variables de entorno preparados
|
|
|
|
---
|
|
|
|
## 2. HOMOLOGACION DE BASE DE DATOS (DEV/PROD)
|
|
|
|
### 2.1 Estructura de Seeds
|
|
|
|
```
|
|
apps/database/seeds/
|
|
├── dev/ # Ambiente de desarrollo
|
|
│ ├── audit_logging/
|
|
│ ├── auth/
|
|
│ ├── auth_management/ # 14 archivos
|
|
│ ├── content_management/
|
|
│ ├── educational_content/
|
|
│ ├── gamification_system/
|
|
│ ├── notifications/
|
|
│ ├── progress_tracking/
|
|
│ ├── social_features/
|
|
│ └── system_configuration/
|
|
│
|
|
└── prod/ # Ambiente de produccion
|
|
├── audit_logging/
|
|
├── auth/
|
|
├── auth_management/ # 14 archivos + _deprecated/
|
|
├── content_management/
|
|
├── educational_content/
|
|
├── gamification_system/
|
|
├── lti_integration/
|
|
├── notifications/
|
|
├── progress_tracking/
|
|
├── social_features/
|
|
└── system_configuration/
|
|
```
|
|
|
|
### 2.2 Diferencias Detectadas
|
|
|
|
#### auth_management (HOMOLOGADO)
|
|
| Archivo | Dev | Prod | Estado |
|
|
|---------|-----|------|--------|
|
|
| 01-tenants.sql | SI | SI | OK |
|
|
| 02-auth_providers.sql | SI | SI | OK |
|
|
| 02-tenants-production.sql | SI | SI | OK |
|
|
| 03-profiles.sql | SI | SI | OK |
|
|
| 04-profiles-complete.sql | SI | SI | OK |
|
|
| 04-user_roles.sql | SI | SI | OK |
|
|
| 05-user_preferences.sql | SI | SI | OK |
|
|
| 06-auth_attempts.sql | SI | SI | OK |
|
|
| 06-profiles-production.sql | SI | SI | OK (13 perfiles) |
|
|
| 07-security_events.sql | SI | SI | OK |
|
|
| 07-user_roles.sql | SI | SI | OK |
|
|
| 08-assign-admin-schools.sql | SI | SI | OK |
|
|
| _deprecated/ | NO | SI | Solo en prod |
|
|
|
|
#### educational_content (DIFERENCIAS)
|
|
| Archivo | Dev | Prod | Estado |
|
|
|---------|-----|------|--------|
|
|
| 01-modules.sql | SI | SI | DIFIEREN |
|
|
| 01-test-exercises-validation.sql | SI | NO | Solo dev (test) |
|
|
| 02-test-nuevos-validadores-DB-117.sql | SI | NO | Solo dev (test) |
|
|
| 03-exercises-module2.sql | SI | SI | DIFIEREN |
|
|
| 04-exercises-module3.sql | SI | SI | DIFIEREN |
|
|
| 05-exercises-module4.sql | SI | SI | DIFIEREN |
|
|
| 06-exercises-module5.sql | SI | SI | DIFIEREN |
|
|
| 10-test-nuevos-validadores-FE-059.sql | SI | NO | Solo dev (test) |
|
|
|
|
### 2.3 Hallazgos Clave
|
|
|
|
1. **auth_management:** HOMOLOGADO CORRECTAMENTE
|
|
- Todos los archivos de prod coinciden con dev
|
|
- Carpeta `_deprecated/` solo existe en prod (esperado)
|
|
|
|
2. **educational_content:** DIFERENCIAS ACEPTABLES
|
|
- Archivos de test (01-test-*, 02-test-*, 10-test-*) solo en dev
|
|
- Contenido de ejercicios puede diferir entre ambientes
|
|
|
|
### 2.4 Estado: PARCIALMENTE HOMOLOGADO
|
|
|
|
- auth_management: COMPLETO
|
|
- educational_content: Archivos de test solo en dev (correcto)
|
|
|
|
---
|
|
|
|
## 3. CARGA INICIAL DE USUARIOS
|
|
|
|
### 3.1 Datos del Backup de Produccion
|
|
|
|
**Ubicacion:** `/apps/database/backup-prod/`
|
|
|
|
| Archivo | Registros | Descripcion |
|
|
|---------|-----------|-------------|
|
|
| auth_users_2025-12-18.csv | 48 | Usuarios de auth.users |
|
|
| profiles_2025-12-18.csv | 48 | Perfiles de auth_management.profiles |
|
|
| user_ranks_2025-12-18.csv | 49 | Rankings de gamification |
|
|
| user_stats_2025-12-18.csv | 49 | Estadisticas de gamification |
|
|
| RESTORE_USUARIOS_PRODUCCION_2025-12-18.sql | 194 inserts | Script de restauracion completo |
|
|
|
|
### 3.2 Validacion de Usuarios
|
|
|
|
#### Total de Usuarios: 48
|
|
- Estudiantes reales: 44
|
|
- Usuarios de testing: 3 (admin@gamilit.com, teacher@gamilit.com, student@gamilit.com)
|
|
- Nuevos usuarios recientes: 2 (javiermar06@hotmail.com, ju188an@gmail.com)
|
|
|
|
#### Exclusion Verificada
|
|
```
|
|
Usuario rckrdmrd@gmail.com: NO ENCONTRADO (CORRECTO)
|
|
```
|
|
|
|
#### Distribucion por Rol
|
|
| Rol | Cantidad |
|
|
|-----|----------|
|
|
| student | 45 |
|
|
| admin_teacher | 1 |
|
|
| super_admin | 1 |
|
|
|
|
### 3.3 Usuarios con Nombre Completo (Primeros 13)
|
|
|
|
| Email | Nombre |
|
|
|-------|--------|
|
|
| joseal.guirre34@gmail.com | Jose Aguirre |
|
|
| sergiojimenezesteban63@gmail.com | Sergio Jimenez |
|
|
| Gomezfornite92@gmail.com | Hugo Gomez |
|
|
| Aragon494gt54@icloud.com | Hugo Aragon |
|
|
| blu3wt7@gmail.com | Azul Valentina |
|
|
| ricardolugo786@icloud.com | Ricardo Lugo |
|
|
| marbancarlos916@gmail.com | Carlos Marban |
|
|
| diego.colores09@gmail.com | Diego Colores |
|
|
| hernandezfonsecabenjamin7@gmail.com | Benjamin Hernandez |
|
|
| jr7794315@gmail.com | Josue Reyes |
|
|
| barraganfer03@gmail.com | Fernando Barragan |
|
|
| roman.rebollar.marcoantonio1008@gmail.com | Marco Antonio Roman |
|
|
| rodrigoguerrero0914@gmail.com | Rodrigo Guerrero |
|
|
|
|
### 3.4 Usuarios Sin Nombre Completo (35 usuarios)
|
|
|
|
Usuarios registrados posteriormente sin first_name/last_name en metadata:
|
|
- santiagoferrara78@gmail.com
|
|
- alexanserrv917@gmail.com
|
|
- aarizmendi434@gmail.com
|
|
- (... y 32 mas)
|
|
|
|
### 3.5 Script de Restauracion
|
|
|
|
El archivo `RESTORE_USUARIOS_PRODUCCION_2025-12-18.sql` contiene:
|
|
- 49 usuarios en auth.users
|
|
- 48 perfiles en auth_management.profiles
|
|
- 49 user_ranks en gamification_system.user_ranks
|
|
- 49 user_stats en gamification_system.user_stats
|
|
|
|
**Uso:**
|
|
```bash
|
|
psql -U gamilit_user -d gamilit_platform -h localhost \
|
|
-f apps/database/backup-prod/RESTORE_USUARIOS_PRODUCCION_2025-12-18.sql
|
|
```
|
|
|
|
### 3.6 Estado: CUMPLE REQUISITOS
|
|
|
|
- Total usuarios: 48 (> 30 requeridos)
|
|
- rckrdmrd@gmail.com: NO INCLUIDO (correcto)
|
|
- Script de restauracion: DISPONIBLE
|
|
|
|
---
|
|
|
|
## 4. CHECKLIST DE IMPLEMENTACION
|
|
|
|
### 4.1 Pre-Deployment
|
|
|
|
- [x] Script SSL disponible (`setup-ssl-certbot.sh`)
|
|
- [x] Documentacion SSL completa
|
|
- [x] Templates de variables de entorno listos
|
|
- [x] Seeds de auth_management homologados
|
|
- [x] Backup de usuarios de produccion disponible
|
|
- [x] Script de restauracion de usuarios listo
|
|
- [x] Usuario rckrdmrd@gmail.com excluido verificado
|
|
|
|
### 4.2 Deployment SSL
|
|
|
|
```bash
|
|
# 1. Verificar prerequisitos
|
|
pm2 list # Backend y Frontend activos
|
|
sudo ufw status # Puertos 80, 443 abiertos
|
|
dig +short gamilit.com # DNS configurado
|
|
|
|
# 2. Ejecutar configuracion SSL
|
|
cd /home/isem/workspace/projects/gamilit
|
|
chmod +x scripts/setup-ssl-certbot.sh
|
|
sudo ./scripts/setup-ssl-certbot.sh gamilit.com
|
|
|
|
# 3. Validar
|
|
./scripts/validate-deployment.sh --ssl --verbose
|
|
```
|
|
|
|
### 4.3 Carga de Usuarios
|
|
|
|
```bash
|
|
# 1. Verificar conexion a base de datos
|
|
psql -U gamilit_user -d gamilit_platform -h localhost -c "SELECT 1"
|
|
|
|
# 2. Ejecutar restauracion
|
|
psql -U gamilit_user -d gamilit_platform -h localhost \
|
|
-f apps/database/backup-prod/RESTORE_USUARIOS_PRODUCCION_2025-12-18.sql
|
|
|
|
# 3. Verificar cantidad
|
|
psql -U gamilit_user -d gamilit_platform -h localhost \
|
|
-c "SELECT COUNT(*) FROM auth.users"
|
|
```
|
|
|
|
---
|
|
|
|
## 5. RIESGOS Y MITIGACIONES
|
|
|
|
### 5.1 SSL/HTTPS
|
|
|
|
| Riesgo | Probabilidad | Impacto | Mitigacion |
|
|
|--------|--------------|---------|------------|
|
|
| DNS no propagado | Media | Alto | Esperar 24-48h antes de deploy |
|
|
| Puerto 80/443 bloqueado | Baja | Alto | Verificar firewall pre-deploy |
|
|
| Certificado expira | Baja | Alto | Timer de renovacion automatica |
|
|
|
|
### 5.2 Base de Datos
|
|
|
|
| Riesgo | Probabilidad | Impacto | Mitigacion |
|
|
|--------|--------------|---------|------------|
|
|
| Conflicto de IDs | Media | Alto | Usar ON CONFLICT DO UPDATE |
|
|
| Permisos insuficientes | Baja | Alto | Verificar rol gamilit_user |
|
|
| Triggers causan errores | Baja | Medio | SET session_replication_role = replica |
|
|
|
|
---
|
|
|
|
## 6. PROXIMOS PASOS
|
|
|
|
1. **Dominio:** Confirmar dominio final (gamilit.com o subdominio)
|
|
2. **DNS:** Configurar A record apuntando a 74.208.126.102
|
|
3. **SSL:** Ejecutar script de configuracion
|
|
4. **Usuarios:** Ejecutar restauracion si es base de datos nueva
|
|
5. **Validacion:** Ejecutar suite de pruebas post-deployment
|
|
|
|
---
|
|
|
|
## 7. REFERENCIAS
|
|
|
|
### Documentacion Relacionada
|
|
|
|
- `docs/95-guias-desarrollo/GUIA-SSL-CERTBOT-DEPLOYMENT.md`
|
|
- `docs/95-guias-desarrollo/GUIA-SSL-NGINX-PRODUCCION.md`
|
|
- `docs/95-guias-desarrollo/GUIA-DEPLOYMENT-RAPIDO.md`
|
|
- `docs/95-guias-desarrollo/GUIA-CORS-PRODUCCION.md`
|
|
|
|
### Scripts
|
|
|
|
- `/scripts/setup-ssl-certbot.sh` - Configuracion SSL automatica
|
|
- `/scripts/validate-deployment.sh` - Validacion post-deployment
|
|
- `/apps/database/backup-prod/RESTORE_USUARIOS_PRODUCCION_2025-12-18.sql`
|
|
|
|
---
|
|
|
|
**Fecha de Analisis:** 2025-12-18
|
|
**Proximo Review:** Antes del deployment a produccion
|