# 📋 RESUMEN EJECUTIVO - ARQUITECTURA SERVIDOR DE CONTENIDO **Fecha:** 2025-01-06 **Versión:** 1.0.0 **Estado:** Diseño Completo - Listo para Implementación --- ## 🎯 DECISIÓN TÉCNICA **❌ NO Supabase** **❌ NO servicios externos** **❌ NO CMS externo** **✅ TODO en nuestro servidor** --- ## 🏗️ ARQUITECTURA ``` SERVIDOR PROPIO (PostgreSQL + Node.js) ├── Base de Datos (PostgreSQL) ├── API REST (Solo lectura para app) ├── Panel Admin (React - Puerto 5174) └── Generador Content Pack │ │ (Content Pack JSON) ▼ APP PWA (Frontend) ├── Descarga pack al iniciar ├── Cache en IndexedDB └── Funciona 100% offline ``` --- ## 📐 COMPONENTES PRINCIPALES ### 1. Base de Datos (PostgreSQL) **Schema:** `tes_content` **Tablas:** - `content_items` - Protocolos, guías, manuales, fármacos, checklists - `media_resources` - Imágenes y vídeos - `content_resource_associations` - Asociaciones contenido ⇄ recursos - `content_versions` - Historial de versiones - `audit_logs` - Auditoría completa - `users` - Usuarios del panel admin **Archivo:** `docs/SERVER_DATABASE_SCHEMA.sql` --- ### 2. API REST Pública (App) **Endpoints (Solo Lectura):** - `GET /api/health` - Estado del servidor - `GET /api/content/pack/latest` - Pack más reciente - `GET /api/content/pack/:version` - Pack específico - `GET /api/content/protocol/:slug` - Protocolo individual - `GET /api/content/guide/:slug` - Guía individual - `GET /api/content/media/:id` - Recurso multimedia **Características:** - ✅ Sin autenticación (solo lectura) - ✅ Rate limiting (100 req/min) - ✅ CORS configurado - ✅ Cache headers (ETag, Cache-Control) **Archivo:** `docs/API_ENDPOINTS_ESPECIFICACION.md` --- ### 3. API Admin (Panel) **Endpoints (Con Autenticación):** - `POST /api/admin/auth/login` - Login - `GET /api/admin/content` - Listar contenido - `POST /api/admin/content` - Crear contenido - `PUT /api/admin/content/:id` - Actualizar - `POST /api/admin/content/:id/publish` - Publicar - `POST /api/admin/media/upload` - Upload recursos - `POST /api/admin/pack/generate` - Generar pack **Características:** - ✅ Autenticación JWT - ✅ RBAC (Roles y permisos) - ✅ Rate limiting (50 req/min) - ✅ Audit logging --- ### 4. Generador Content Pack **Funcionalidad:** - Lee contenido publicado desde PostgreSQL - Genera JSON optimizado - Calcula hash SHA-256 - Guarda en `/storage/packs/` - Crea symlink `pack-latest.json` **Archivo:** `docs/GENERADOR_CONTENT_PACK.md` --- ### 5. Panel Admin **Funcionalidades:** - Editor de protocolos (tabs: básico, pasos, checklist, recursos) - Editor de guías (8 secciones Markdown) - Gestor de recursos (upload, asociación) - Generador de pack (UI) - Dashboard de estado **Ubicación:** `admin-panel/` (ya existe, extender) --- ## 📦 CONTENT PACK JSON **Estructura:** ```json { "metadata": { version, hash, total_items, ... }, "content": { protocols, guides, manuals, drugs, checklists }, "media": { resources, associations }, "links": { protocol_to_guide, guide_to_protocol, ... } } ``` **Características:** - ✅ Solo contenido `published` - ✅ Solo última versión - ✅ Hash SHA-256 para verificación - ✅ Optimizado para offline (< 10MB) **Archivo:** `docs/CONTENT_PACK_SPEC.md` (ya existe, compatible) --- ## 🔄 FLUJO DE TRABAJO 1. **Editor crea contenido** → Panel Admin → Guarda en PostgreSQL 2. **Validador revisa** → Panel Admin → Status: 'approved' 3. **Admin publica** → Panel Admin → Status: 'published' 4. **Generar pack** → Panel Admin → Genera JSON desde PostgreSQL 5. **App consume** → Descarga pack → Cache offline → Funciona sin internet --- ## 📁 ESTRUCTURA DE DIRECTORIOS ``` server/ ├── config/ │ ├── database.js │ └── storage.js ├── database/ │ └── migrations/ │ └── 001_create_schema.sql ├── src/ │ ├── api/ │ │ ├── public/ # Endpoints app │ │ └── admin/ # Endpoints admin │ ├── services/ │ │ └── pack-generator.js │ └── middleware/ │ ├── auth.js │ └── rbac.js ├── storage/ │ ├── media/ │ │ ├── images/ │ │ └── videos/ │ └── packs/ │ ├── pack-v1.0.0.json │ └── pack-latest.json └── index.js ``` --- ## ✅ CHECKLIST DE IMPLEMENTACIÓN ### Fase 1: Base de Datos (Semana 1-2) - [ ] PostgreSQL instalado - [ ] Schema `tes_content` creado - [ ] Tablas creadas - [ ] Índices creados - [ ] Datos iniciales ### Fase 2: API Pública (Semana 3-4) - [ ] Endpoints implementados - [ ] Rate limiting - [ ] CORS configurado - [ ] Testing completo ### Fase 3: Generador Pack (Semana 5) - [ ] Servicio implementado - [ ] Generación funcionando - [ ] Hash calculado - [ ] Testing completo ### Fase 4: API Admin (Semana 6-7) - [ ] Autenticación - [ ] CRUD contenido - [ ] Gestión recursos - [ ] Generación pack ### Fase 5: Panel Admin (Semana 8-10) - [ ] Editores funcionando - [ ] Upload recursos - [ ] Generación pack UI - [ ] Dashboard ### Fase 6: Integración App (Semana 11-12) - [ ] ContentAdapter - [ ] Descarga pack - [ ] Cache offline - [ ] Fallback local **Archivo:** `docs/CHECKLIST_IMPLEMENTACION_SERVIDOR.md` --- ## 🚫 RESTRICCIONES VERIFICADAS - ✅ NO modifica `src/data/procedures.ts` - ✅ NO modifica `src/data/drugs.ts` - ✅ NO modifica rutas existentes - ✅ NO modifica Service Worker - ✅ NO modifica componentes existentes - ✅ Todo en servidor propio - ✅ Sin dependencias externas --- ## 📚 DOCUMENTACIÓN COMPLETA 1. **Arquitectura:** `docs/ARQUITECTURA_SERVIDOR_CONTENIDO.md` 2. **Schema BD:** `docs/SERVER_DATABASE_SCHEMA.sql` 3. **API Endpoints:** `docs/API_ENDPOINTS_ESPECIFICACION.md` 4. **Generador Pack:** `docs/GENERADOR_CONTENT_PACK.md` 5. **Checklist:** `docs/CHECKLIST_IMPLEMENTACION_SERVIDOR.md` 6. **Content Pack Spec:** `docs/CONTENT_PACK_SPEC.md` (ya existe) --- ## 🎯 PRÓXIMOS PASOS 1. **Revisar arquitectura** - Validar diseño 2. **Aprobar schema BD** - Validar estructura 3. **Iniciar Fase 1** - Base de datos 4. **Implementar progresivamente** - Seguir checklist --- **Estado:** ✅ Diseño Completo - Listo para Implementación