codigo0/admin-panel/README.md

98 lines
2.7 KiB
Markdown
Raw Normal View History

2026-01-19 08:10:16 +00:00
# 🎛️ 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
```