codigo0/docs/RESUMEN_ARQUITECTURA_SERVIDOR.md

260 lines
6.3 KiB
Markdown

# 📋 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