Este repositorio es parte del backend de la aplicacion class-connect, para conocer informacion mas general sobre el proyecto visita el siguiente link Organization Homepage.
Este microservicio es responsable de gestionar las notificaciones dentro de la aplicación. Sus principales funciones incluyen:
- Envio de Notificaciones: Push o Correo Electrónico.
- Manejo de Permisos: Explicitamente para notificaciones particulares a los usuarios. se puede desactivar las push o las de correo.
- Envío de emails informativos a todos los usuarios en caso de actualizaciones de reglas o políticas. Esta operación requiere la inclusión de un encabezado Authorization con un token JWT válido de administrador.
- Registro de Logs: Tres estados posibles para un notificación:
SentNot Sent - No PermissionsError
- Historial de Notificaciones Push: Mantiene un registro por usuario, incluyendo la capacidad de marcar cada notificación como leída o no leída.
Los endpoints de este microservicio se pueden encontrar en el swagger del mismo, los mismos son:
-
GET/swagger (Documentacion de la API) -
POST/push (Envio de notificaciones push a los usuarios por uuid) -
GET/email?by=(id or email) (Envio de correos a los usuarios por uuid o email. El parametro send_to_all es para admins y requiere autentificación con el JWT token de admins) -
GET/user/permissions (Obtiene los permisos de un usuario según su JWT token) -
PUT/user/permissions (Actualiza los permisos de un usuario según su JWT token) -
GET/user/history (Obtiene el historial de notificaciones push de un usuario según su JWT token.) -
PUT/user/history (Marca una notificación del historial como leída) -
GET/logs
Se utiliza la arquitectura package by layer, donde los controladores se pueden encontrar en la carpeta endpoints, los servicios en services y los repositorios en repository.
- Se hace feature branching desde la rama dev.
- Una vez listo para integrar se realiza PR a dev, donde corre el pipeline de testing y coverage.
- Una vez esta listo para desplegar se realiza PR a main, se vuelven a correr pipelines de calidad de codigo.
- Cuando se hace el push a main se ejecuta el pipeline de continous delivery, construye la imagen y la desplega a k8s.