codigo0/docs/CHECKLIST_IMPLEMENTACION_SERVIDOR.md

311 lines
7.7 KiB
Markdown
Raw Normal View History

2026-01-19 08:10:16 +00:00
# ✅ 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**