Panel de Administración
Carpeta: frontend/ · Puerto: 4201 · Enlace: http://localhost:4201
· Tecnología: Angular 17 servido con Nginx
La herramienta de gestión de la plataforma. Es la aplicación desde la que se administra todo lo que no gestiona el propio socio de la comunidad: usuarios, comunidades, puntos de suministro, precios y los registros de energía.
Qué hace
- Usuarios y permisos. Alta, baja y asignación de roles.
- Comunidades. Creación y edición de comunidades energéticas, con su coeficiente de reparto y su precio de la energía.
- CUPS. Gestión de los puntos de suministro y su vínculo con cada comunidad y cada cliente, incluidas las credenciales de Datadis por punto.
- Energía. Consulta de los registros horarios de consumo, producción y excedente, y de las transacciones de reparto entre miembros.
- Buscador. Localización de instalaciones sobre mapa, apoyado en los datos de radiación de PVGIS, de la Comisión Europea.
Cómo entrar
Con el usuario del seed inicial:
| Usuario | Contraseña |
|---|---|
admin | admin123 |
El acceso con Google no funciona recién instalado: requiere credenciales propias, que se configuran en la API de Zertipower.
El backend concede acceso total si el rol del usuario se llama exactamente
ADMIN. Si se renombra a admin, Admin o ADMINISTRADOR, ese usuario
pierde todos los privilegios, porque la comprobación es una comparación de
cadenas. Ver Cómo encajan las piezas.
Configuración
El Panel sólo necesita saber dónde está la API. Angular incrusta esa URL al compilar, no al arrancar, así que llega como argumento de construcción y no como variable de entorno del contenedor.
En docker-compose.yml:
frontend:
build:
args:
# [CAMBIAR EN PRODUCCIÓN] La URL que usará el NAVEGADOR del usuario,
# no la red interna de Docker.
API_URL: http://localhost:3000
| Argumento | Qué es | Por defecto |
|---|---|---|
API_URL | URL pública de la API de Zertipower | http://localhost:3000 |
GOOGLE_MAPS_API_KEY | Clave de Google Maps, para el mapa del buscador | (vacía) |
Es una clave de navegador: acaba en el HTML que se sirve al usuario, así que no se puede ocultar. No se protege manteniéndola en secreto, sino restringiéndola por dominio en Google Cloud Console (APIs y servicios → Credenciales → Restricciones de aplicación → Sitios web).
Por eso viene vacía en el repositorio: sin ella el mapa no carga, pero el resto del Panel funciona con normalidad.
Recargar el navegador no basta: la URL está dentro del bundle compilado.
./dev.sh up -d --build frontend
Apuntar a las APIs de producción
Existe un archivo aparte para compilar los frontends contra los servidores reales, útil para trabajar con datos de verdad:
./dev.sh -f docker-compose.apis-produccion.yml up -d --build
Con eso, cualquier alta, edición o borrado afecta a la base de datos de producción y no tiene vuelta atrás.
Dependencia externa pendiente
El botón de acceso con Google apunta, escrito a mano en el código, a
auth.zertifier.com —el servicio de identidad de Zertifier— en dos sitios:
frontend/src/app/features/auth/pages/login-page/login-page.component.tsfrontend/src/app/features/auth/services/auth-api.service.ts
Al estar fijado en el código, ningún argumento de construcción lo cambia. Es una de las ataduras que hay que eliminar antes de entregar el sistema a un tercero.