6.3 KiB
6.3 KiB
📋 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, checklistsmedia_resources- Imágenes y vídeoscontent_resource_associations- Asociaciones contenido ⇄ recursoscontent_versions- Historial de versionesaudit_logs- Auditoría completausers- Usuarios del panel admin
Archivo: docs/SERVER_DATABASE_SCHEMA.sql
2. API REST Pública (App)
Endpoints (Solo Lectura):
GET /api/health- Estado del servidorGET /api/content/pack/latest- Pack más recienteGET /api/content/pack/:version- Pack específicoGET /api/content/protocol/:slug- Protocolo individualGET /api/content/guide/:slug- Guía individualGET /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- LoginGET /api/admin/content- Listar contenidoPOST /api/admin/content- Crear contenidoPUT /api/admin/content/:id- ActualizarPOST /api/admin/content/:id/publish- PublicarPOST /api/admin/media/upload- Upload recursosPOST /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:
{
"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
- Editor crea contenido → Panel Admin → Guarda en PostgreSQL
- Validador revisa → Panel Admin → Status: 'approved'
- Admin publica → Panel Admin → Status: 'published'
- Generar pack → Panel Admin → Genera JSON desde PostgreSQL
- 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_contentcreado - 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
- Arquitectura:
docs/ARQUITECTURA_SERVIDOR_CONTENIDO.md - Schema BD:
docs/SERVER_DATABASE_SCHEMA.sql - API Endpoints:
docs/API_ENDPOINTS_ESPECIFICACION.md - Generador Pack:
docs/GENERADOR_CONTENT_PACK.md - Checklist:
docs/CHECKLIST_IMPLEMENTACION_SERVIDOR.md - Content Pack Spec:
docs/CONTENT_PACK_SPEC.md(ya existe)
🎯 PRÓXIMOS PASOS
- Revisar arquitectura - Validar diseño
- Aprobar schema BD - Validar estructura
- Iniciar Fase 1 - Base de datos
- Implementar progresivamente - Seguir checklist
Estado: ✅ Diseño Completo - Listo para Implementación