diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index f71eca5..0000000 --- a/Dockerfile +++ /dev/null @@ -1,28 +0,0 @@ -FROM node:20.19.1-alpine AS build - -# Establecer directorio de trabajo -WORKDIR /app - -# Copiar archivos de dependencias e instalar -COPY package*.json ./ -RUN npm install - -# Copiar el resto de archivos de la aplicación -COPY . . - -# Compilar la aplicación -RUN npm run build:prod - -# Segunda etapa: Nginx -FROM nginx:latest - -# Copiar la configuración de Nginx -COPY nginx.conf /etc/nginx/nginx.conf - -# Copiar archivos compilados desde la etapa anterior -COPY --from=build /app/dist/cronogramas-primeng/browser /usr/share/nginx/html - -# Exponer puerto -EXPOSE 80 - -# Comando para iniciar Nginx (usa el predeterminado de la imagen) \ No newline at end of file diff --git a/HU - definiciones(1).txt b/HU - definiciones(1).txt deleted file mode 100644 index 7f07c51..0000000 --- a/HU - definiciones(1).txt +++ /dev/null @@ -1,276 +0,0 @@ -********************************************************************* -EP01 – Ingresar al Sistema -El objetivo es comprobar la autenticidad del usuario. Los usuarios serán los analistas técnicos de la unidad de concesiones, la jefatura de dicha unidad y un usuario de la Unidad de Información. ---------------------------------------------------------------------- -EP01.HU01 – Implementar servicio validación de usuario -COMO Desarrollador -QUIERO crear un servicio que valide usuario -PARA Permitir acceder al sistema - -CRITERIOS DE ACEPTACIÓN -- Debe recibir como parametros USUARIO (correo electronico) y CONTRASEÑA. -- Debe validar formato correo electronico. -- Se debe crear un endpoint accesible vía HTTP (por ejemplo, POST /api/login). -- El servicio debe conectarse a una fuente de datos (LDAP). -- La respuesta debe estar en formato (POR DEFINIR) con una estructura clara. -- La respuesta debe entregar el ROL del usuario validado dentro del sistema. -- El servicio debe retornar códigos HTTP de respuestas adecuados (200, 400, 500, etc.). -- Los errores además, deben presentar mensajes descriptivos. -- Considerar seguridad (token, roles, etc.) si aplica. -- Aplicar principios de clean code y separación de responsabilidades. ---------------------------------------------------------------------- -EP01.HU02 – Autenticar usuario -COMO Usuario -QUIERO Ingresar mi correo electronico institucional y mi contraseña en un formulario de acceso -PARA Que el sistema valide mi identidad y me permita acceder a mi cuenta personal de manera segura. - -CRITERIOS DE ACEPTACIÓN -1. Debe existir un formulario con campos obligatorios de usuario y contraseña. -2. El sistema debe validar que ninguno de los campos esté vacío. -3. Si el usuario o la contraseña son incorrectos, se mostrará un mensaje de error (por definir) -4. Si las credenciales son válidas, el usuario será redirigido al panel principal del sistema. -5. Si las credenciales son válidas, el sistema deberá desplegar las opciones de MENÚ habiltadas para el ROL del usuario logueado. -********************************************************************* -EP02 – Pantalla de Usuario Administrador Unidad de Concesiones -El objetivo es mostrar de forma consolidada las cargas temporales del PR047, para que un usuario administrador asigne cronogramas a los analistas y se notifique. Además, que permita realizar solicitud de carga a la Unidad de Información y notifique a la empresa. ---------------------------------------------------------------------- -EP02.HU01. Implementar servicio asignación de cronograma -COMO Desarrollador -QUIERO Crear un servicio que asigne cronogramas -PARA Perimtir asignar cronogramas a un analista. - -CRITERIOS DE ACEPTACIÓN -- Debe recibir como parametros el identificador del cronograma y del analista. -- Debe generar los registros que sean necesarios en la base de datos. -- Se debe crear un endpoint accesible vía HTTP (por ejemplo, POST /api/cronogramas/asignar). -- El servicio debe conectarse a la fuente de datos correspondiente (base de datos, API externa, etc.). -- El servicio debe retornar códigos HTTP de respuestas adecuados (200, 400, 500, etc.). -- Los errores además, deben presentar mensajes descriptivos. -- Considerar seguridad (token, roles, etc.) si aplica. -- Aplicar principios de clean code y separación de responsabilidades. ---------------------------------------------------------------------- -EP02.HU02. Implementar servicio de solicitudes de carga -COMO Desarrollador -QUIERO Crear un servicio que solicite la carga de ¿cronogramas? -PARA Perimtir solicitar la carga de nuevos ¿cronogramas? a la unidad de información. - -CRITERIOS DE ACEPTACIÓN -- Debe recibir como parametros el identificador del ¿cronograma? que se desea cargar. -- Debe generar los registros que sean necesarios en la base de datos. -- Se debe crear un endpoint accesible vía HTTP (por ejemplo, POST /api/cronogramas/solicitudcarga). -- El servicio debe conectarse a la fuente de datos correspondiente (base de datos, API externa, etc.). -- El servicio debe retornar códigos HTTP de respuestas adecuados (200, 400, 500, etc.). -- Los errores además, deben presentar mensajes descriptivos. -- Considerar seguridad (token, roles, etc.) si aplica. -- Aplicar principios de clean code y separación de responsabilidades. ---------------------------------------------------------------------- -EP02.HU03. Cargar cronogramas ---------------------------------------------------------------------- -EP02.HU04. Implementar filtros ---------------------------------------------------------------------- -EP02.HU05. Asignar cronograma ---------------------------------------------------------------------- -EP02.HU06. Implementar semaforo ---------------------------------------------------------------------- -EP02.HU07. Solicitar carga de cronogramas ---------------------------------------------------------------------- -EP02.HU08. Notificar a Unidad de Información -********************************************************************* -EP03 – Vista de Carga de Cronograma Temporal por Actualización de PD -El objetivo es desplegar la carga temporal de los cronogramas de actualización de PD o nuevas concesiones para cada analista, aprobar o rechazar la carga, añadir comentarios generales y/o por cada glosa, notificar a la empresa cuando se rechace la carga y exportar los datos a un archivo pdf. ---------------------------------------------------------------------- -EP03.HU01. Implementar servicio de gestión de glosas (aprobación/rechazo) ---------------------------------------------------------------------- -EP03.HU02. Implementar servicio para exportar datos a Excel ---------------------------------------------------------------------- -EP03.HU03. Cargar cronogramas ---------------------------------------------------------------------- -EP03.HU04. Implementar filtros ---------------------------------------------------------------------- -EP03.HU05. Aprobar carga ---------------------------------------------------------------------- -EP03.HU06. Rechazar carga ---------------------------------------------------------------------- -EP03.HU07. Ingresar observación ---------------------------------------------------------------------- -EP03.HU08. Exportar a Excel ---------------------------------------------------------------------- -EP03.HU09. Notificar a empresa -********************************************************************* -EP04 – Vista de Carga de Cronograma Temporal por Ajuste de PD -EP04.01. Implementar servicio para obtener listado de ajustes y amplicaciones ---------------------------------------------------------------------- -EP04.HU02. Cargar cronogramas ---------------------------------------------------------------------- -EP04.HU03. Cargar ajustes PD y ampliación TO ---------------------------------------------------------------------- -EP04.HU04. Implementar filtros ---------------------------------------------------------------------- -EP04.HU05. Ingresar observación ---------------------------------------------------------------------- -EP04.HU06. Aprobar carga ---------------------------------------------------------------------- -EP04.HU07. Rechazar carga ---------------------------------------------------------------------- -EP04.HU08. Exportar a Excel ---------------------------------------------------------------------- -EP04.HU09. Exportar a PDF ---------------------------------------------------------------------- -EP04.HU10. Notificar a empresa -********************************************************************* -EP05 – Vista de Resumen -EP05.HU01. Implementar switch vistas ---------------------------------------------------------------------- -EP05.HU02. Cargar cronogramas aprobados ---------------------------------------------------------------------- -EP05.HU03. Cargar cronogramas rechazados ---------------------------------------------------------------------- -EP05.HU04. Implementar filtros ---------------------------------------------------------------------- -EP05.HU05. Generar PDF para firma digital (x2) ---------------------------------------------------------------------- -EP05.HU06. Notificar a empresa -********************************************************************* -EP06 – Vista para Usuario de Unidad de Información -EP06.HU01. Cargar cronogramas pendientes de carga ---------------------------------------------------------------------- -EP06.HU02. Cargar cronogramas aprobados ---------------------------------------------------------------------- -EP06.HU03. Cargar cronogramas rechazados -********************************************************************* -EP07. Servicios transversales -EP07.HU01. Implementar servicio listado de cronogramas por estado -COMO Desarrollador -QUIERO Crear un servicio que devuelva una lista de cronogramas por estado -PARA Ser cargados/consultados por la funcionalidad que lo requiera. - -CRITERIOS DE ACEPTACIÓN -- El servicio debe retornar todos los registros -- El servicio debe retornar el registro completo (todos los campos y descripciones si corresponde) -- Se debe crear un endpoint accesible vía HTTP (por ejemplo, GET /api/cronogramas/listado). -- El servicio debe conectarse a la fuente de datos correspondiente. -- La respuesta debe estar en formato (POR DEFINIR) con una estructura clara. -- Debe implementar paginación para manejar grandes volúmenes de datos. -- Debe permitir filtros opcionales mediante parámetros (por ejemplo, 'estado'). -- El servicio debe retornar códigos HTTP de respuestas adecuados (200, 400, 500, etc.). -- Los errores además, deben presentar mensajes descriptivos. -- Considerar seguridad (token, roles, etc.) si aplica. -- Aplicar principios de clean code y separación de responsabilidades. -- Evaluar rendimiento si el volumen de datos es alto (índices, consultas optimizadas, etc.). ---------------------------------------------------------------------- -EP07.HU02. Implementar servicio listado empresas -COMO Desarrollador -QUIERO Crear un servicio que devuelva una lista de empresas -PARA Ser cargados/consultados por la funcionalidad que lo requiera. - -CRITERIOS DE ACEPTACIÓN -- El servicio debe retornar todos los registros -- El servicio debe retornar el registro completo (todos los campos y descripciones si corresponde) -- Se debe crear un endpoint accesible vía HTTP (por ejemplo, GET /api/ cronogramas /empresas). -- El servicio debe conectarse a la fuente de datos correspondiente. -- La respuesta debe estar en formato (POR DEFINIR) con una estructura clara. -- Debe implementar paginación para manejar grandes volúmenes de datos. -- Debe permitir filtros opcionales mediante parámetros (por ejemplo, 'estado'). -- El servicio debe retornar códigos HTTP de respuestas adecuados (200, 400, 500, etc.). -- Los errores además, deben presentar mensajes descriptivos. -- Considerar seguridad (token, roles, etc.) si aplica. -- Aplicar principios de clean code y separación de responsabilidades. -- Evaluar rendimiento si el volumen de datos es alto (índices, consultas optimizadas, etc.). ---------------------------------------------------------------------- -EP07.HU03. Implementar servicio listado ajustes PD -COMO Desarrollador -QUIERO Crear un servicio que devuelva una lista de ajustes de PD -PARA Ser cargados/consultados por la funcionalidad que lo requiera. - -CRITERIOS DE ACEPTACIÓN -- El servicio debe retornar todos los registros -- El servicio debe retornar el registro completo (todos los campos y descripciones si corresponde) -- Se debe crear un endpoint accesible vía HTTP (por ejemplo, GET /api/ cronogramas /ajustespd). -- El servicio debe conectarse a la fuente de datos correspondiente. -- La respuesta debe estar en formato (POR DEFINIR) con una estructura clara. -- Debe implementar paginación para manejar grandes volúmenes de datos. -- El servicio debe retornar códigos HTTP de respuestas adecuados (200, 400, 500, etc.). -- Los errores además, deben presentar mensajes descriptivos. -- Considerar seguridad (token, roles, etc.) si aplica. -- Aplicar principios de clean code y separación de responsabilidades. -- Evaluar rendimiento si el volumen de datos es alto (índices, consultas optimizadas, etc.). ---------------------------------------------------------------------- -EP07.HU04. Implementar servicio listado ampliación TO -COMO Desarrollador -QUIERO Crear un servicio que devuelva una lista de ampliación de TO -PARA Ser cargados/consultados por la funcionalidad que lo requiera. - -CRITERIOS DE ACEPTACIÓN -- El servicio debe retornar todos los registros -- El servicio debe retornar el registro completo (todos los campos y descripciones si corresponde) -- Se debe crear un endpoint accesible vía HTTP (por ejemplo, GET /api/ cronogramas /ampliacionto). -- El servicio debe conectarse a la fuente de datos correspondiente. -- La respuesta debe estar en formato (POR DEFINIR) con una estructura clara. -- Debe implementar paginación para manejar grandes volúmenes de datos. -- El servicio debe retornar códigos HTTP de respuestas adecuados (200, 400, 500, etc.). -- Los errores además, deben presentar mensajes descriptivos. -- Considerar seguridad (token, roles, etc.) si aplica. -- Aplicar principios de clean code y separación de responsabilidades. -- Evaluar rendimiento si el volumen de datos es alto (índices, consultas optimizadas, etc.). ---------------------------------------------------------------------- -EP07.HU05. Implementar servicio notificaciones -COMO Desarrollador -QUIERO Crear un servicio que envie correos electronicos -PARA Notificar a quien corresponda respecto de alertas o confirmaciones. - -CRITERIOS DE ACEPTACIÓN -- El servicio debe aceptar al menos los siguientes parámetros: - - Destinatario(s) - - Asunto - - Cuerpo del mensaje (HTML o texto plano) - - Remitente (opcional, configurable) -- Debe realizar validaciones básicas (formato de email, campos requeridos). -- Debe manejar errores como correos inválidos, errores de red, o problemas con el servidor SMTP. -- El servicio debe retornar respuestas con códigos HTTP claros (200, 400, 500, etc.). -- El envío debe ser asincrónico si se anticipa alto volumen (opcional). -- Debe registrar los envíos en logs o base de datos (para trazabilidad, opcional). - ---------------------------------------------------------------------- -********************************************************************* - -generar epica de servicios transversales -por cada HU generar su propio exportar a excel -generar servicio por cada pdf a generar -no incluir botonera de switch de vistas -generar matriz de autorizaciones (perfil, pantalla) - - - - - - - ---- - -### ✅ **Criterios de Aceptación:** - -- Se debe crear un endpoint (por ejemplo, `POST /api/email/send`) que reciba los datos del correo. - ---- - -### 🔁 **Flujo Básico de Desarrollo:** - -1. Diseñar el endpoint REST (por ejemplo, en .NET, Node.js, Spring Boot). -2. Configurar un proveedor de correo (SMTP, SendGrid, Mailgun, etc.). -3. Implementar la lógica de envío y validación. -4. Manejar errores y respuestas. -5. Agregar logs y/o almacenamiento de eventos. -6. Probar con diferentes escenarios y correos de prueba. - ---- - -### 🛠️ **Notas Técnicas:** - -- Se recomienda usar una biblioteca estándar de envío de correo según el lenguaje (ej. Nodemailer en Node.js, MailKit en .NET, JavaMail en Java). -- Usar plantillas de email si se requiere formato HTML. -- Considerar seguridad: autenticación con el proveedor, evitar inyecciones, validar origen de llamadas. -- Considerar colas de mensajes si se requiere alta disponibilidad (ej. RabbitMQ, Azure Service Bus). - ---- - -¿Te gustaría que prepare una versión adaptada para .NET Core, Node.js o algún otro stack específico? \ No newline at end of file diff --git a/Requerimientos_vista PR047.docx b/Requerimientos_vista PR047.docx deleted file mode 100644 index 9329cf6..0000000 Binary files a/Requerimientos_vista PR047.docx and /dev/null differ diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 791043d..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,12 +0,0 @@ -version: '3.8' - -services: - web: - build: - context: . - dockerfile: Dockerfile - ports: - - "80:80" - volumes: - - ./nginx.conf:/etc/nginx/nginx.conf - restart: unless-stopped \ No newline at end of file diff --git a/nginx.conf b/nginx.conf deleted file mode 100644 index bd3cc2b..0000000 --- a/nginx.conf +++ /dev/null @@ -1,27 +0,0 @@ -# the events block is required -events{} - -http { - # include the default mime.types to map file extensions to MIME types - include /etc/nginx/mime.types; - - server { - # set the root directory for the server (we need to copy our - # application files here) - root /usr/share/nginx/html; - - # set the default index file for the server (Angular generates the - # index.html file for us and it will be in the above directory) - index index.html; - - # specify the configuration for the '/' location - location / { - # try to serve the requested URI. if that fails then try to - # serve the URI with a trailing slash. if that fails, then - # serve the index.html file; this is needed in order to serve - # Angular routes--e.g.,'localhost:8080/customer' will serve - # the index.html file - try_files $uri $uri/ /index.html; - } - } -} diff --git a/src/app/README-ROUTE-ANIMATIONS.md b/src/app/README-ROUTE-ANIMATIONS.md deleted file mode 100644 index 4b37e6a..0000000 --- a/src/app/README-ROUTE-ANIMATIONS.md +++ /dev/null @@ -1,108 +0,0 @@ -# Animaciones de Ruta en PrimeNG Cronogramas - -Esta documentación explica cómo se implementaron las animaciones durante la navegación entre rutas en la aplicación. - -## Componentes Principales - -La solución consta de tres partes principales: - -1. **RouteAnimationsComponent**: Un componente contenedor para el router-outlet que aplica animaciones. -2. **CustomRouteReuseStrategy**: Una estrategia personalizada que fuerza la recreación de componentes. -3. **Configuración en app.config.ts**: Donde registramos la estrategia personalizada. - -## Cómo Funciona - -### 1. Componente de Animaciones de Ruta - -El `RouteAnimationsComponent` envuelve el router-outlet estándar y aplica una clase de animación aleatoria cada vez que ocurre una navegación. - -```typescript -// src/app/components/route-animations/route-animations.component.ts -``` - -Este componente: -- Se suscribe a los eventos de navegación del router -- Elimina brevemente la clase de animación -- Aplica una nueva animación aleatoria -- Todo esto crea un efecto de "reinicio" de la animación en cada navegación - -### 2. Estrategia de Reuso de Rutas - -Angular por defecto reutiliza componentes cuando navega entre rutas similares para optimizar el rendimiento. Sin embargo, para nuestras animaciones, necesitamos que los componentes se recreen. - -```typescript -// src/app/utils/custom-route-reuse-strategy.ts -``` - -Esta clase implementa `RouteReuseStrategy` y: -- Evita almacenar o recuperar componentes desactivados -- Solo reutiliza componentes cuando son exactamente la misma ruta -- Fuerza la recreación del componente en cada navegación - -### 3. Configuración en app.config.ts - -Registramos nuestra estrategia personalizada en el archivo de configuración de la aplicación: - -```typescript -// src/app/app.config.ts -{ - provide: RouteReuseStrategy, - useClass: CustomRouteReuseStrategy -} -``` - -### 4. Integración con el Layout - -En el layout principal, reemplazamos el router-outlet estándar con nuestro componente personalizado: - -```html - -