# 🎛️ Admin Panel - EMERGES TES Panel de administración para gestionar contenido (protocolos, guías, manual, vademécum, checklists) sin modificar el código de la app. ## 🏗️ Arquitectura - **Frontend**: React + Vite + TypeScript - **Backend**: Node.js + Express + PostgreSQL - **Autenticación**: JWT - **RBAC**: Roles y permisos granulares ## 🚀 Inicio Rápido ### Backend ```bash cd backend npm install npm run db:create # Crear BD y tablas npm run seed:admin # Crear usuario admin npm run seed:content # Crear contenido de ejemplo npm run dev # Iniciar servidor (puerto 3000) ``` ### Admin Panel ```bash cd admin-panel npm install npm run dev # Iniciar en http://localhost:5174 ``` ### Credenciales por defecto - **Email**: `admin@emerges-tes.local` - **Password**: `Admin123!` - **Role**: `super_admin` ⚠️ **IMPORTANTE**: Cambiar la contraseña después del primer login. ## 📁 Estructura ``` admin-panel/ ├── src/ │ ├── components/ # Componentes React │ │ ├── dashboard/ # Dashboard principal │ │ ├── content/ # Editores de contenido │ │ ├── audit/ # Auditoría y versiones │ │ └── common/ # Componentes compartidos │ ├── pages/ # Páginas principales │ ├── hooks/ # Custom hooks │ ├── services/ # API services │ └── utils/ # Utilidades ├── shared/ │ └── types/ # TypeScript types compartidos └── package.json ``` ## 🔐 Roles y Permisos - **super_admin**: Acceso total - **editor_clinico**: Editar protocolos, fármacos, checklists - **editor_formativo**: Editar guías formativas - **revisor**: Revisar y validar contenido - **viewer**: Solo lectura ## 📝 Funcionalidades - ✅ Dashboard con estadísticas - ✅ Biblioteca de contenido con filtros - ✅ Editor de Protocolo con vista previa "modo TES" - ✅ Editor de Checklist reutilizable - ✅ Editor de Guías Markdown con preview - ✅ Manager de Vademécum - ✅ Pantalla de Fuentes y Actualizaciones - ✅ Auditoría (logs + comparar versiones + revertir) - ✅ Sistema de versionado - ✅ Validación de contenido ## 🔄 Integración con App Principal El content pack se consume como "override" del contenido local: 1. La app intenta obtener el último pack publicado desde `/api/content/pack/latest` 2. Si existe y está validado, lo usa 3. Si no, usa los datos locales actuales (`src/data/`) 4. Funciona offline usando cache del último pack ## 🧪 Tests ```bash npm test # Tests unitarios npm run test:e2e # Tests end-to-end npm run test:manual # Checklist manual de verificación ```