98 lines
2.7 KiB
Markdown
98 lines
2.7 KiB
Markdown
|
|
# 🎛️ 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
|
||
|
|
```
|
||
|
|
|