311 lines
7.7 KiB
Markdown
311 lines
7.7 KiB
Markdown
|
|
# ✅ CHECKLIST DE IMPLEMENTACIÓN - SERVIDOR DE CONTENIDO
|
||
|
|
|
||
|
|
**Versión:** 1.0.0
|
||
|
|
**Fecha:** 2025-01-06
|
||
|
|
**Estado:** Pendiente de Implementación
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📋 FASES DE IMPLEMENTACIÓN
|
||
|
|
|
||
|
|
### FASE 1: Base de Datos (Semana 1-2)
|
||
|
|
|
||
|
|
#### 1.1 Configuración PostgreSQL
|
||
|
|
- [ ] Instalar PostgreSQL en servidor
|
||
|
|
- [ ] Crear base de datos `emerges_tes`
|
||
|
|
- [ ] Crear usuario con permisos
|
||
|
|
- [ ] Configurar conexión en `config/database.js`
|
||
|
|
|
||
|
|
#### 1.2 Schema y Tablas
|
||
|
|
- [ ] Ejecutar `docs/SERVER_DATABASE_SCHEMA.sql`
|
||
|
|
- [ ] Verificar schema `tes_content` creado
|
||
|
|
- [ ] Verificar todas las tablas creadas
|
||
|
|
- [ ] Verificar ENUMs creados
|
||
|
|
- [ ] Verificar índices creados
|
||
|
|
- [ ] Verificar triggers funcionando
|
||
|
|
- [ ] Verificar vistas creadas
|
||
|
|
|
||
|
|
#### 1.3 Datos Iniciales
|
||
|
|
- [ ] Crear usuario administrador
|
||
|
|
- [ ] Migrar contenido inicial (opcional)
|
||
|
|
- [ ] Verificar datos en BD
|
||
|
|
|
||
|
|
**Archivos:**
|
||
|
|
- `docs/SERVER_DATABASE_SCHEMA.sql`
|
||
|
|
- `backend/config/database.js`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### FASE 2: API Pública (Semana 3-4)
|
||
|
|
|
||
|
|
#### 2.1 Endpoint Health
|
||
|
|
- [ ] `GET /api/health` implementado
|
||
|
|
- [ ] Verifica conexión BD
|
||
|
|
- [ ] Retorna versión pack latest
|
||
|
|
- [ ] Testing completo
|
||
|
|
|
||
|
|
#### 2.2 Endpoint Content Pack
|
||
|
|
- [ ] `GET /api/content/pack/latest` implementado
|
||
|
|
- [ ] `GET /api/content/pack/:version` implementado
|
||
|
|
- [ ] Soporte `If-None-Match` (304 Not Modified)
|
||
|
|
- [ ] Headers `ETag` y `Cache-Control`
|
||
|
|
- [ ] Testing completo
|
||
|
|
|
||
|
|
#### 2.3 Endpoints Individuales
|
||
|
|
- [ ] `GET /api/content/protocol/:slug` implementado
|
||
|
|
- [ ] `GET /api/content/guide/:slug` implementado
|
||
|
|
- [ ] Incluye recursos asociados
|
||
|
|
- [ ] Incluye relaciones
|
||
|
|
- [ ] Testing completo
|
||
|
|
|
||
|
|
#### 2.4 Endpoint Media
|
||
|
|
- [ ] `GET /api/content/media/:id` implementado
|
||
|
|
- [ ] Soporte descarga directa
|
||
|
|
- [ ] Testing completo
|
||
|
|
|
||
|
|
#### 2.5 Middleware
|
||
|
|
- [ ] CORS configurado (solo dominios permitidos)
|
||
|
|
- [ ] Rate limiting (100 req/min)
|
||
|
|
- [ ] Error handling global
|
||
|
|
- [ ] Logging de requests
|
||
|
|
|
||
|
|
**Archivos:**
|
||
|
|
- `server/src/api/public/health.js`
|
||
|
|
- `server/src/api/public/content-pack.js`
|
||
|
|
- `server/src/api/public/content.js`
|
||
|
|
- `server/src/middleware/cors.js`
|
||
|
|
- `server/src/middleware/rate-limit.js`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### FASE 3: Generador Content Pack (Semana 5)
|
||
|
|
|
||
|
|
#### 3.1 Servicio Pack Generator
|
||
|
|
- [ ] `pack-generator.js` implementado
|
||
|
|
- [ ] `loadPublishedContent()` funcionando
|
||
|
|
- [ ] `loadMediaResources()` funcionando
|
||
|
|
- [ ] `calculateLinks()` funcionando
|
||
|
|
- [ ] `calculateHash()` funcionando
|
||
|
|
- [ ] `savePack()` funcionando
|
||
|
|
- [ ] `updateLatestSymlink()` funcionando
|
||
|
|
|
||
|
|
#### 3.2 Testing
|
||
|
|
- [ ] Generar pack de prueba
|
||
|
|
- [ ] Verificar JSON válido
|
||
|
|
- [ ] Verificar hash correcto
|
||
|
|
- [ ] Verificar symlink
|
||
|
|
- [ ] Verificar tamaño razonable
|
||
|
|
|
||
|
|
**Archivos:**
|
||
|
|
- `server/src/services/pack-generator.js`
|
||
|
|
- `server/storage/packs/` (directorio)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### FASE 4: API Admin (Semana 6-7)
|
||
|
|
|
||
|
|
#### 4.1 Autenticación
|
||
|
|
- [ ] `POST /api/admin/auth/login` implementado
|
||
|
|
- [ ] `GET /api/admin/auth/me` implementado
|
||
|
|
- [ ] JWT funcionando
|
||
|
|
- [ ] Middleware de autenticación
|
||
|
|
- [ ] Testing completo
|
||
|
|
|
||
|
|
#### 4.2 Endpoints Contenido
|
||
|
|
- [ ] `GET /api/admin/content` (lista con filtros)
|
||
|
|
- [ ] `GET /api/admin/content/:id` (detalle)
|
||
|
|
- [ ] `POST /api/admin/content` (crear)
|
||
|
|
- [ ] `PUT /api/admin/content/:id` (actualizar)
|
||
|
|
- [ ] `DELETE /api/admin/content/:id` (soft delete)
|
||
|
|
- [ ] `POST /api/admin/content/:id/publish` (publicar)
|
||
|
|
- [ ] `POST /api/admin/content/:id/validate` (validar)
|
||
|
|
- [ ] Testing completo
|
||
|
|
|
||
|
|
#### 4.3 Endpoints Recursos
|
||
|
|
- [ ] `GET /api/admin/media` (lista)
|
||
|
|
- [ ] `POST /api/admin/media/upload` (upload)
|
||
|
|
- [ ] `PUT /api/admin/media/:id` (actualizar)
|
||
|
|
- [ ] `DELETE /api/admin/media/:id` (eliminar)
|
||
|
|
- [ ] `POST /api/admin/media/:id/associate` (asociar)
|
||
|
|
- [ ] Testing completo
|
||
|
|
|
||
|
|
#### 4.4 Endpoint Pack
|
||
|
|
- [ ] `POST /api/admin/pack/generate` implementado
|
||
|
|
- [ ] `GET /api/admin/pack/versions` implementado
|
||
|
|
- [ ] Testing completo
|
||
|
|
|
||
|
|
#### 4.5 Middleware Admin
|
||
|
|
- [ ] RBAC implementado
|
||
|
|
- [ ] Rate limiting (50 req/min)
|
||
|
|
- [ ] Audit logging
|
||
|
|
- [ ] Validación de permisos
|
||
|
|
|
||
|
|
**Archivos:**
|
||
|
|
- `server/src/api/admin/auth.js`
|
||
|
|
- `server/src/api/admin/content.js`
|
||
|
|
- `server/src/api/admin/media.js`
|
||
|
|
- `server/src/api/admin/pack.js`
|
||
|
|
- `server/src/middleware/auth.js`
|
||
|
|
- `server/src/middleware/rbac.js`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### FASE 5: Panel Admin (Semana 8-10)
|
||
|
|
|
||
|
|
#### 5.1 Autenticación UI
|
||
|
|
- [ ] Página de login
|
||
|
|
- [ ] Manejo de token JWT
|
||
|
|
- [ ] Logout
|
||
|
|
- [ ] Protección de rutas
|
||
|
|
|
||
|
|
#### 5.2 Editor de Contenido
|
||
|
|
- [ ] Editor de protocolos (tabs: básico, pasos, checklist, recursos)
|
||
|
|
- [ ] Editor de guías (8 secciones Markdown)
|
||
|
|
- [ ] Editor de manual
|
||
|
|
- [ ] Editor de fármacos
|
||
|
|
- [ ] Preview "Modo TES"
|
||
|
|
- [ ] Guardado en servidor
|
||
|
|
|
||
|
|
#### 5.3 Gestor de Recursos
|
||
|
|
- [ ] Lista de recursos con filtros
|
||
|
|
- [ ] Upload de imágenes/vídeos
|
||
|
|
- [ ] Edición de metadatos
|
||
|
|
- [ ] Asociación a contenido
|
||
|
|
- [ ] Visualización de recursos sin asociar
|
||
|
|
|
||
|
|
#### 5.4 Generador de Pack
|
||
|
|
- [ ] UI para generar pack
|
||
|
|
- [ ] Selección de versión
|
||
|
|
- [ ] Indicador de progreso
|
||
|
|
- [ ] Descarga de pack generado
|
||
|
|
- [ ] Lista de versiones anteriores
|
||
|
|
|
||
|
|
#### 5.5 Dashboard
|
||
|
|
- [ ] Estadísticas de contenido
|
||
|
|
- [ ] Contenido pendiente de validación
|
||
|
|
- [ ] Recursos sin asociar
|
||
|
|
- [ ] Actividad reciente
|
||
|
|
|
||
|
|
**Archivos:**
|
||
|
|
- `admin-panel/src/pages/` (ya existe, extender)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### FASE 6: Integración App (Semana 11-12)
|
||
|
|
|
||
|
|
#### 6.1 Content Adapter
|
||
|
|
- [ ] `ContentAdapter` interface definida
|
||
|
|
- [ ] `PackContentAdapter` implementado
|
||
|
|
- [ ] `LocalContentAdapter` (fallback) implementado
|
||
|
|
- [ ] `ContentAdapterFactory` implementado
|
||
|
|
- [ ] Testing completo
|
||
|
|
|
||
|
|
#### 6.2 Descarga de Pack
|
||
|
|
- [ ] Service Worker descarga pack al iniciar
|
||
|
|
- [ ] Cache en IndexedDB
|
||
|
|
- [ ] Verificación de hash
|
||
|
|
- [ ] Actualización automática
|
||
|
|
- [ ] Fallback a procedures.ts si no hay pack
|
||
|
|
|
||
|
|
#### 6.3 Integración en App
|
||
|
|
- [ ] Hooks actualizados (useProtocol, useDrug)
|
||
|
|
- [ ] Componentes consumen desde adapter
|
||
|
|
- [ ] Enlaces bidireccionales funcionando
|
||
|
|
- [ ] Testing offline completo
|
||
|
|
|
||
|
|
**Archivos:**
|
||
|
|
- `src/services/content-pack.ts` (extender)
|
||
|
|
- `src/hooks/useContentPack.ts` (extender)
|
||
|
|
- `src/workers/content-pack-worker.ts` (nuevo)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🧪 TESTING
|
||
|
|
|
||
|
|
### Testing Unitario
|
||
|
|
- [ ] Servicios (pack-generator, content-service)
|
||
|
|
- [ ] Endpoints API (públicos y admin)
|
||
|
|
- [ ] Validaciones
|
||
|
|
- [ ] Cálculo de hash
|
||
|
|
|
||
|
|
### Testing Integración
|
||
|
|
- [ ] Flujo completo: crear → validar → publicar → generar pack
|
||
|
|
- [ ] Descarga de pack en app
|
||
|
|
- [ ] Cache offline
|
||
|
|
- [ ] Fallback a local
|
||
|
|
|
||
|
|
### Testing de Carga
|
||
|
|
- [ ] API pública (100 req/min)
|
||
|
|
- [ ] API admin (50 req/min)
|
||
|
|
- [ ] Generación de pack (tiempo < 30s)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📊 MÉTRICAS DE ÉXITO
|
||
|
|
|
||
|
|
### Fase 1 (Base de Datos)
|
||
|
|
- ✅ Schema creado sin errores
|
||
|
|
- ✅ Todas las tablas funcionando
|
||
|
|
- ✅ Índices optimizados
|
||
|
|
- ✅ Datos iniciales cargados
|
||
|
|
|
||
|
|
### Fase 2 (API Pública)
|
||
|
|
- ✅ Todos los endpoints funcionando
|
||
|
|
- ✅ Rate limiting activo
|
||
|
|
- ✅ CORS configurado
|
||
|
|
- ✅ Respuestas < 200ms
|
||
|
|
|
||
|
|
### Fase 3 (Generador Pack)
|
||
|
|
- ✅ Pack generado correctamente
|
||
|
|
- ✅ Hash calculado correctamente
|
||
|
|
- ✅ JSON válido y optimizado
|
||
|
|
- ✅ Tiempo de generación < 30s
|
||
|
|
|
||
|
|
### Fase 4 (API Admin)
|
||
|
|
- ✅ Autenticación funcionando
|
||
|
|
- ✅ RBAC funcionando
|
||
|
|
- ✅ CRUD completo
|
||
|
|
- ✅ Audit logging activo
|
||
|
|
|
||
|
|
### Fase 5 (Panel Admin)
|
||
|
|
- ✅ Login funcionando
|
||
|
|
- ✅ Editores funcionando
|
||
|
|
- ✅ Upload de recursos funcionando
|
||
|
|
- ✅ Generación de pack desde UI
|
||
|
|
|
||
|
|
### Fase 6 (Integración App)
|
||
|
|
- ✅ App descarga pack correctamente
|
||
|
|
- ✅ Cache offline funcionando
|
||
|
|
- ✅ Fallback a local funcionando
|
||
|
|
- ✅ Sin modificar código existente
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🚫 RESTRICCIONES VERIFICADAS
|
||
|
|
|
||
|
|
- [ ] NO se modificó `src/data/procedures.ts`
|
||
|
|
- [ ] NO se modificó `src/data/drugs.ts`
|
||
|
|
- [ ] NO se modificaron rutas existentes
|
||
|
|
- [ ] NO se modificó Service Worker
|
||
|
|
- [ ] NO se modificaron componentes existentes
|
||
|
|
- [ ] Todo funciona offline-first
|
||
|
|
- [ ] Sin dependencias externas (Supabase, etc.)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📝 NOTAS DE IMPLEMENTACIÓN
|
||
|
|
|
||
|
|
**Validador:** _________________
|
||
|
|
**Fecha:** _________________
|
||
|
|
**Resultado:** ☐ Aprobado ☐ Pendiente ☐ Rechazado
|
||
|
|
|
||
|
|
**Comentarios:**
|
||
|
|
```
|
||
|
|
[Espacio para comentarios]
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
**Fin del Checklist**
|
||
|
|
|