121 lines
3.8 KiB
Markdown
121 lines
3.8 KiB
Markdown
**Idioma:** [English](README.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Español](README.es.md)
|
|
|
|
# EUSRR
|
|
|
|
EUSRR es un portal empresarial interno para empleados, solicitudes, documentos,
|
|
compras, planificación, asistencia y comunicación en tiempo real. La aplicación
|
|
actual consta de un backend ASGI Django/DRF y un frontend Next.js.
|
|
|
|
## Funcionalidad
|
|
|
|
- directorio de empleados, departamentos, puestos, permisos y sincronización LDAP/AD opcional;
|
|
- solicitudes, aprobaciones, tareas y cambios de estado con notificaciones;
|
|
- documentos, adjuntos, comentarios y confirmaciones;
|
|
- compras, rutas de aprobación, presupuestos e inventario;
|
|
- calendarios, eventos compartidos y análisis de asistencia mediante LogStorm;
|
|
- chats, reacciones, encuestas y notificaciones por una conexión WebSocket autenticada;
|
|
- entrega mediante WebSocket, correo electrónico y Web Push.
|
|
|
|
## Stack
|
|
|
|
- Backend: Python 3.13, Django 5.2, Django REST Framework, Channels y Daphne.
|
|
- Datos y tareas: PostgreSQL, Redis, Celery y Celery Beat.
|
|
- Frontend: Next.js 16, React 19, TypeScript, Tailwind CSS, TanStack Table y Recharts.
|
|
- Integraciones: LDAP/Active Directory, Web Push y LogStorm.
|
|
- Pruebas: pytest/pytest-django, Node test runner, ESLint y build de producción Next.js.
|
|
|
|
Las versiones fijadas están en [`backend/requirements.txt`](backend/requirements.txt)
|
|
y [`frontend/package.json`](frontend/package.json).
|
|
|
|
## Documentación y contratos
|
|
|
|
- [Índice de documentación](docs/README.md)
|
|
- [HTTP API](docs/guides/API.md)
|
|
- [LDAP y Active Directory](docs/guides/LDAP.md)
|
|
- [WebSocket y tiempo real](docs/guides/WEBSOCKET.md)
|
|
- [Notificaciones](docs/guides/NOTIFICATIONS.md)
|
|
|
|
Con el backend iniciado, Swagger está en `/api/docs/`, ReDoc en `/api/redoc/`,
|
|
OpenAPI en `/api/schema/`, la documentación WebSocket en `/api/ws/docs/` y
|
|
AsyncAPI en `/api/ws/schema/`, todos en el puerto 8000.
|
|
|
|
## Estructura
|
|
|
|
```text
|
|
backend/ Aplicaciones Django, REST API, tareas Celery, migraciones y pruebas backend
|
|
frontend/ Aplicación Next.js y pruebas frontend
|
|
docs/ Guías actualizadas de API, integraciones, operaciones y desarrollo
|
|
```
|
|
|
|
## Desarrollo local
|
|
|
|
Se requieren Python 3.13, Node.js 20 o posterior, PostgreSQL y Redis.
|
|
`backend/docker-compose.yml` solo crea un entorno Samba AD de pruebas; no es un
|
|
stack completo de la aplicación.
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
El ejemplo utiliza los hostnames de servicio `db` y `redis`. Si los servicios se
|
|
ejecutan localmente, cambia `DB_HOST` y `REDIS_HOST` a `127.0.0.1`, establece
|
|
`DEBUG=True` y proporciona una base PostgreSQL y credenciales válidas. LDAP está
|
|
desactivado en el ejemplo.
|
|
|
|
Backend:
|
|
|
|
```bash
|
|
cd backend
|
|
python3.13 -m venv .venv
|
|
source .venv/bin/activate
|
|
python -m pip install -r requirements.txt
|
|
python manage.py migrate
|
|
daphne -b 0.0.0.0 -p 8000 eusrr_backend.asgi:application
|
|
```
|
|
|
|
Celery para notificaciones asíncronas y otras tareas en segundo plano:
|
|
|
|
```bash
|
|
cd backend
|
|
celery -A eusrr_backend worker -l info
|
|
celery -A eusrr_backend beat -l info
|
|
```
|
|
|
|
Frontend:
|
|
|
|
```bash
|
|
cd frontend
|
|
cp .env.example .env.local
|
|
npm install
|
|
npm run dev
|
|
```
|
|
|
|
Abre `http://localhost:3000`. Next.js redirige las solicitudes HTTP del browser
|
|
a `NEXT_PUBLIC_BACKEND_URL`; realtime utiliza el endpoint `/ws/` del backend.
|
|
|
|
## Verificación
|
|
|
|
```bash
|
|
cd backend
|
|
pytest
|
|
python manage.py check
|
|
```
|
|
|
|
```bash
|
|
cd frontend
|
|
npm test
|
|
npm run lint
|
|
npm run build
|
|
```
|
|
|
|
## Seguridad y datos
|
|
|
|
Los archivos de entorno, bases locales, uploads, certificados, builds generados
|
|
y dependencias se ignoran en Git. No deben añadirse datos de producción ni
|
|
secrets al repositorio.
|
|
|
|
Los settings legacy todavía contienen valores fallback para LDAP y VAPID. Fuera
|
|
de un entorno aislado deben sobrescribirse todas las credenciales mediante
|
|
variables de entorno y rotarse cualquier clave que haya estado en el código.
|
|
También deben revisarse los dominios, branding y DN específicos de la empresa.
|