codigo0/docs/RESUMEN_ARQUITECTURA_SERVIDOR.md

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, 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:

{
  "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