Micro-frontend del submódulo Beneficios para Egresados del Sistema de Gestión Académica (SGA) de la Universidad Distrital Francisco José de Caldas. Atiende dos perfiles: egresado (catálogo, solicitudes, perfil académico) y empresa aliada (publicación de beneficios, bandeja de solicitudes, mensajería).
Backend:
egresados_service
(lógica) →
egresados_crud
(persistencia).
- Angular 20.3.26
- Incluye Animations, CDK, Common, Compiler, Core, Forms, Material, Platform-Browser, Platform-Browser-Dynamic, Router
- Arquitectura NgModule (no standalone); builder clásico
browser(webpack), no el nuevoapplication(esbuild/vite) — ver nota de Single-SPA abajo
- Angular Material 20.2.14
- Angular CDK 20.2.14
- Bootstrap 5.3.2
- RxJS ~7.8.0
- SweetAlert2 11.26.x
- ts-md5 2.0.1
- tslib 2.3.0
- Zone.js ~0.15.1
- TypeScript ~5.8.3
- Autenticación OAuth2 Implicit Flow + OIDC sobre WSO2 (mismo esquema del
sga_clienteinstitucional) - Pruebas unitarias: Karma + Jasmine (scaffold estándar de Angular CLI)
Pendiente: integración single-spa con el shell del SGA (
sga_cliente_root+core_mf_cliente) — hoy arranca como app Angular normal (ng serve), a diferencia de otros micro-frontends institucionales que ya corren bajo Single-SPA. Importante:single-spa-angularexige el builder clásicobrowser(necesita salida SystemJS, que el builderapplication/esbuild no soporta) — no migrar al builder nuevo antes de esa integración. Además, a la fechasingle-spa-angular@9.xsolo soporta Angular hasta la 18 en estable (19 solo en beta, 20 sin release aún) — confirmar con OATI el orden de estas dos migraciones antes de avanzar con Single-SPA.
core/
services/ fachadas BeneficiosService / SolicitudesService / EmpresaService
→ reactivas a la sesión (recargan solas al resolver el JIT o
cambiar de empresa activa); los componentes solo dependen
de ellas (Observables)
api/ beneficios-mid.service (espejo 1:1 de las rutas del MID),
api.types.ts (DTOs), mappers.ts (DTO → modelos de UI),
perfil-api.service (cadena C-2a: userRol → terceros_crud →
consultar_persona → proyecto_academico)
interceptors/ auth.interceptor (anexa Bearer; no fuerza re-login en 401)
guards/ guards de sesión del routing
features/ catalogo · beneficio-detalle · solicitudes · dashboard ·
empresa-registro · empresa-dashboard · empresa-beneficios · login
shared/ solicitud-modal · tipos OATI
UsuarioSesionServicecentraliza el usuario del token y el perfil enriquecido (nombre, correo, código, programa, foto con fallback a iniciales). Tras el login dispara el JIT provisioning del perfil correspondiente (egresado o empresa) contra el MID y guarda los ids locales; para empresa mantiene la lista completa de empresas vinculadas (selector multiempresa, caso 1:N).
A diferencia de los backends (que leen env vars en runtime), Angular compila la
configuración: src/environments/environment.ts (dev, usado por ng serve y
npm run build:test) y environment.prod.ts (aplicado por fileReplacements en
ng build --configuration production, o sea npm run build:prod).
export const environment = {
production: false,
TOKEN: {
AUTORIZATION_URL: 'https://autenticacion.portaloas.udistrital.edu.co/oauth2/authorize',
CLIENTE_ID: '', // ← lo entrega OATI (D-6); NO reutilizar el del SGA en prod
RESPONSE_TYPE: 'id_token token',
SCOPE: 'openid email role documento',
REDIRECT_URL: 'http://localhost:4200/', // debe coincidir con lo registrado en WSO2
SIGN_OUT_URL: 'https://autenticacion.portaloas.udistrital.edu.co/oidc/logout',
SIGN_OUT_REDIRECT_URL: 'http://localhost:4200/',
SIGN_OUT_APPEND_TOKEN: 'true',
AUTENTICACION_MID: 'https://autenticacion.portaloas.udistrital.edu.co/apioas/autenticacion_mid/v1/token/userRol',
},
API_GET_IDENTIFICATION: 'https://autenticacion.portaloas.udistrital.edu.co/apioas/autenticacion_mid/v1/token/userRol',
DATOS_IDENTIFICACION_TERCERO_ENDPOINT: 'https://autenticacion.portaloas.udistrital.edu.co/apioas/terceros_crud/v1/datos_identificacion',
TERCEROS_SERVICE: 'https://autenticacion.portaloas.udistrital.edu.co/apioas/terceros_crud/v1',
// Perfil académico del egresado (C-2a)
SGA_MID: 'https://autenticacion.portaloas.udistrital.edu.co/apioas/sga_mid/v1',
PROYECTO_ACADEMICO_SERVICE: 'https://autenticacion.portaloas.udistrital.edu.co/apioas/proyecto_academico_crud/v1',
// MID de Beneficios Egresados: :8081 en local, tras el gateway /apioas/ en despliegue
BENEFICIOS_MID: 'http://localhost:8081/v1',
// Roles de WSO2 que habilitan cada vista (pendientes de confirmar con OATI, D-5/D-7)
ROLES_EGRESADO: ['egresado', 'EGRESADO'],
ROLES_EMPRESA: ['empresa', 'EMPRESA'],
};| Campo | Descripción |
|---|---|
BENEFICIOS_MID |
URL del MID (http://localhost:8081/v1 en local) |
TOKEN.* (AUTORIZATION_URL, CLIENTE_ID, REDIRECT_URL, AUTENTICACION_MID, ...) |
OAuth2/OIDC WSO2 — el CLIENTE_ID propio del módulo está pendiente de la OAS (no reutilizar el del SGA en prod) |
ROLES_EGRESADO / ROLES_EMPRESA |
nombres de rol WSO2 — pendientes de definición con OATI; mientras tanto los guards solo exigen sesión autenticada |
TERCEROS_SERVICE, SGA_MID, PROYECTO_ACADEMICO_SERVICE |
servicios institucionales usados por el perfil del egresado (C-2a) |
environment.prod.ts no trae CLIENTE_ID/REDIRECT_URL embebidos (quedan vacíos
a propósito): los entrega OATI al desplegar cada ambiente.
# 1. Clonar el repositorio
git clone -b develop https://github.com/udistrital/egresados_cliente.git
# 2. Moverse a la carpeta del repositorio
cd egresados_cliente
# 3. Instalar las dependencias
npm install
# 4. Iniciar el proyecto
npm start # http://localhost:4200Requiere el CRUD (:8080) y el MID (:8081) corriendo; el login redirige a WSO2
(credenciales institucionales). Este proyecto no depende hoy de un Root/Core
Single-SPA para arrancar (ver nota de "Pendiente" arriba).
# No aplica: el CI publica el `dist/` compilado directo a S3 (ver .drone.yml),
# no se construye una imagen Docker para este repo.# No aplica.Pruebas unitarias con Karma + Jasmine (scaffold estándar de Angular CLI; no Jest).
npm test # ng test — abre Chrome y corre las specs *.spec.tsNo hay un script de lint configurado todavía en package.json.
| Develop | Master | Sonar |
|---|---|---|
specs/cliente-ui/— spec y tareas del micro-frontend (arquitectura, vistas, sesión).specs/lineamientos/— restricciones institucionales OATI aplicables al front.docs/referencia-autenticacion-wso2.md— patrón de autenticación del ecosistema SGA.- Las especificaciones transversales (visión general, autenticación, parámetros)
viven en
specs/system/del repoegresados_service.
Desarrollado en el marco de la pasantía de Ingeniería de Sistemas (2026) para la Oficina Asesora de Sistemas (OAS) / OATI, siguiendo los lineamientos de micro-frontends del SGA (Single-SPA, Angular, autenticación delegada al Core MF).
This file is part of egresados_cliente.
egresados_cliente is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
egresados_cliente is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with egresados_cliente. If not, see https://www.gnu.org/licenses/.