- TypeScript 90.4%
- JavaScript 8.6%
- Dockerfile 0.8%
- HTML 0.2%
- exportar-config.js: vuelca empresas, areas, harness, proyectos (ambientes y servidores MCP con headers descifrados) y credenciales LLM de la base local a un JSON; lista los usuarios para recrearlos a mano - importar-config.js: idempotente, sin dependencias (Node 18+), importa el JSON via la API del portal destino, que re-cifra los secretos con su propia clave; corre dentro del contenedor api - .gitignore: los exports (contienen secretos en claro) nunca se versionan Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
||
|---|---|---|
| backend | ||
| frontend | ||
| scripts | ||
| .env.example | ||
| .gitignore | ||
| DISENO_PORTAL_ADMINISTRACION.md | ||
| DISENO_PORTAL_ADMINISTRACION.pdf | ||
| docker-compose.dev.yml | ||
| docker-compose.yml | ||
| README.md | ||
| SECCIONES_CORREGIDAS_3.2_y_7.md | ||
| SECCIONES_CORREGIDAS_3.2_y_7.pdf | ||
Portal de Administración — Workspace de Agentes · Exxis Group
Portal independiente de altas y bajas: administra Empresas, Áreas, Roles, Usuarios y
Proyectos (agentes). Es la fuente de verdad de quién — la definición de cada agente
vive en el harness (Gabinete Exxis) como Configuration Package versionado que el
Proyecto referencia (harness_package + package_version).
Diseño: DISENO_PORTAL_ADMINISTRACION.pdf + SECCIONES_CORREGIDAS_3.2_y_7.md.
Stack
- Backend: NestJS 10 + Prisma 5 + PostgreSQL 16 — API REST
/api, JWT, guards por rol - Frontend: React 18 + Vite + Ant Design 5 — SPA servida por Nginx
- Infraestructura: Docker / docker-compose (Linux); Node >= 22
Desarrollo (Windows/Linux)
Necesitas PostgreSQL accesible. Con Docker: docker compose -f docker-compose.dev.yml up -d.
Sin Docker: instala PostgreSQL 16 y crea la BD/usuario del .env.
# 1. Backend
cd backend
copy .env.example .env # ajusta DATABASE_URL si hace falta
npm install
npx prisma migrate dev # crea el esquema (primera vez genera la migracion)
npm run prisma:seed # roles base + Exxis Group + miriam.pacasi@exxis-group.com
npm run start:dev # API en http://localhost:3000/api
# 2. Frontend (otra consola)
cd frontend
npm install
npm run dev # SPA en http://localhost:5173 (proxy /api -> :3000)
Login inicial: miriam.pacasi@exxis-group.com / la contraseña del seed (ADMIN_PASSWORD al
correr el seed, por defecto Admin.2026 — cámbiala tras el primer login).
Producción (servidor Linux con Docker)
cp .env.example .env # completar POSTGRES_PASSWORD, JWT_SECRET, SERVICE_TOKEN
docker compose up -d --build
docker compose run --rm api npx prisma db seed # solo la primera vez
Único punto de entrada: web en el puerto 80 (Nginx sirve la SPA y hace proxy de
/api). TLS: terminación delante de web (Traefik/Caddy o el reverse proxy corporativo).
Respaldos: pg_dump programado. La BD no expone puerto al host.
Endpoints principales
| Ruta | Descripción | Autorización |
|---|---|---|
POST /api/auth/login |
JWT + datos del usuario | Pública |
GET /api/auth/me |
Perfil del usuario autenticado | JWT |
GET/POST/PATCH/DELETE /api/empresas |
CRUD (delete = baja lógica) | Escritura: ADMIN |
GET/POST/PATCH/DELETE /api/areas |
CRUD, ?empresaId= filtra |
Escritura: ADMIN, GESTOR |
GET/POST/PATCH/DELETE /api/roles |
CRUD roles y permisos | Escritura: ADMIN |
GET/POST/PATCH/DELETE /api/usuarios |
CRUD, alta con contraseña temporal | Escritura: ADMIN |
PATCH /api/usuarios/:id/password |
Reset de contraseña | ADMIN o el propio usuario |
GET /api/usuarios/:id/proyectos |
Proyectos activos del usuario (Portal de Agentes) | ADMIN o el propio usuario |
GET/POST/PATCH/DELETE /api/proyectos |
CRUD proyectos/agentes | Escritura: ADMIN, GESTOR |
PUT /api/proyectos/:id/miembros |
Reemplaza la asignación de usuarios | ADMIN, GESTOR |
GET /api/proyectos/slug/:slug/config |
Config del agente para el harness | Header x-service-token |
Convenciones: paginación ?page=&pageSize=, búsqueda ?q=, respuestas { data, total },
mensajes de error en español.