Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ghostriderdev/sysdeliveryauthapi
Authentication Service of Delivery Sistem
https://github.com/ghostriderdev/sysdeliveryauthapi
authentication delivery gps microservice nestjs
Last synced: 10 days ago
JSON representation
Authentication Service of Delivery Sistem
- Host: GitHub
- URL: https://github.com/ghostriderdev/sysdeliveryauthapi
- Owner: GhostRiderDev
- Created: 2024-12-14T18:28:10.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2024-12-22T03:01:17.000Z (about 1 month ago)
- Last Synced: 2024-12-22T04:17:23.990Z (about 1 month ago)
- Topics: authentication, delivery, gps, microservice, nestjs
- Language: TypeScript
- Homepage:
- Size: 873 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Sistema de Delivery
## Análisis del Sistema
El sistema de Delivery/Logística debe permitir:
1. **Seguimiento de repartos**: Los usuarios pueden ver el estado actual de sus pedidos y su ubicación.
2. **Optimización de rutas**: El sistema debe calcular las rutas más eficientes para los repartidores basándose en diferentes factores como el tráfico y la distancia.
3. **Gestión de repartidores**: Incluir la asignación de pedidos, el seguimiento de su ubicación y la gestión de su disponibilidad.
4. **Estimación de tiempos**: Proveer estimaciones precisas del tiempo de entrega a los clientes.
5. **Notificaciones en tiempo real**: Informar a los usuarios sobre el estado de su pedido mediante notificaciones por Whatsaap, SMS o correo electrónico.### Requerimientos Funcionales
1. Usuarios pueden crear, ver y gestionar sus pedidos.
2. El sistema debe registrar y mostrar el estado y la ubicación del pedido en tiempo real.
3. Repartidores pueden ver y actualizar el estado de los pedidos asignados.
4. El sistema debe optimizar y asignar rutas a los repartidores.
5. Notificaciones en tiempo real deben ser enviadas a los clientes sobre el estado de sus pedidos.
6. Administradores pueden gestionar repartidores, pedidos y rutas.### Requerimientos No Funcionales
1. **Escalabilidad**: El sistema debe manejar un gran número de usuarios y pedidos.
2. **Disponibilidad**: Alta disponibilidad para asegurar que el sistema esté operativo 24/7.
3. **Seguridad**: Proteger los datos de los usuarios y asegurar comunicaciones seguras.
4. **Desempeño**: Respuestas rápidas y eficientes, especialmente para cálculos de rutas y seguimiento en tiempo real.## Casos de Uso
### Registrar Usuario
- **Actor**: Usuario
- **Descripción**: Permitir a un nuevo usuario registrarse en el sistema.
- **Precondiciones**: Ninguna
- **Flujo Principal**:
1. El usuario ingresa sus datos (nombre, email, contraseña, dirección, teléfono).
2. El sistema valida la información y crea una cuenta.
- **Postcondiciones**: El usuario está registrado y puede iniciar sesión.### Iniciar Sesión
- **Actor**: Usuario
- **Descripción**: Permitir a un usuario registrado iniciar sesión en el sistema.
- **Precondiciones**: El usuario debe estar registrado.
- **Flujo Principal**:
1. El usuario ingresa su email y contraseña.
2. El sistema verifica la información y permite el acceso.
- **Postcondiciones**: El usuario está autenticado.### Crear Pedido
- **Actor**: Cliente
- **Descripción**: Permitir a un cliente crear un nuevo pedido.
- **Precondiciones**: El cliente debe haber iniciado sesión.
- **Flujo Principal**:
1. El cliente ingresa los detalles del pedido (dirección de entrega, descripción del producto).
2. El sistema guarda el pedido y lo asigna a un repartidor.
- **Postcondiciones**: El pedido está creado y asignado.### Actualizar Estado del Pedido
- **Actor**: Repartidor
- **Descripción**: Permitir a un repartidor actualizar el estado de un pedido.
- **Precondiciones**: El repartidor debe haber iniciado sesión.
- **Flujo Principal**:
1. El repartidor selecciona un pedido asignado.
2. El repartidor actualiza el estado del pedido (en camino, entregado).
3. El sistema guarda el nuevo estado del pedido.
- **Postcondiciones**: El estado del pedido está actualizado.### Ver Estado del Pedido
- **Actor**: Cliente
- **Descripción**: Permitir a un cliente ver el estado de sus pedidos.
- **Precondiciones**: El cliente debe haber iniciado sesión.
- **Flujo Principal**:
1. El cliente selecciona un pedido.
2. El sistema muestra el estado actual y la ubicación del pedido.
- **Postcondiciones**: El cliente puede ver el estado y la ubicación de su pedido.### Optimizar Ruta
- **Actor**: Sistema
- **Descripción**: Calcular la ruta más eficiente para un repartidor.
- **Precondiciones**: Deben existir pedidos asignados al repartidor.
- **Flujo Principal**:
1. El sistema toma la ubicación actual del repartidor y las direcciones de entrega.
2. El sistema calcula la ruta más eficiente.
3. El sistema guarda y muestra la ruta al repartidor.
- **Postcondiciones**: La ruta óptima está calculada y asignada.### Enviar Notificación
- **Actor**: Sistema
- **Descripción**: Enviar notificaciones en tiempo real a los usuarios sobre el estado de sus pedidos.
- **Precondiciones**: Debe haber un cambio en el estado del pedido.
- **Flujo Principal**:
1. El sistema detecta un cambio en el estado del pedido.
2. El sistema envía una notificación al cliente por el método seleccionado (push, SMS, email).
- **Postcondiciones**: El cliente recibe una notificación con el estado actualizado del pedido.### Gestionar Repartidores
- **Actor**: Administrador
- **Descripción**: Permitir a un administrador gestionar repartidores (asignar pedidos, actualizar disponibilidad).
- **Precondiciones**: El administrador debe haber iniciado sesión.
- **Flujo Principal**:
1. El administrador selecciona un repartidor.
2. El administrador asigna pedidos o actualiza la disponibilidad del repartidor.
- **Postcondiciones**: Los repartidores están gestionados correctamente.### Gestionar Usuarios
- **Actor**: Administrador
- **Descripción**: Permitir a un administrador gestionar usuarios (crear, editar, bloquear, sancionar).
- **Precondiciones**: El administrador debe haber iniciado sesión.
- **Flujo Principal**:
1. El administrador selecciona un usuario.
2. El administrador realiza la acción deseada (crear, editar, eliminar).
- **Postcondiciones**: Los usuarios están gestionados correctamente.### Ver Historial de Pedidos
- **Actor**: Cliente
- **Descripción**: Permitir a un cliente ver el historial de sus pedidos.
- **Precondiciones**: El cliente debe haber iniciado sesión.
- **Flujo Principal**:
1. El cliente selecciona la opción de historial de pedidos.
2. El sistema muestra una lista de pedidos anteriores.
- **Postcondiciones**: El cliente puede ver el historial de sus pedidos.### Ver Detalles del Pedido
- **Actor**: Cliente
- **Descripción**: Permitir a un cliente ver los detalles de un pedido específico.
- **Precondiciones**: El cliente debe haber iniciado sesión.
- **Flujo Principal**:
1. El cliente selecciona un pedido del historial.
2. El sistema muestra los detalles del pedido.
- **Postcondiciones**: El cliente puede ver los detalles del pedido seleccionado.### Cancelar Pedido
- **Actor**: Cliente
- **Descripción**: Permitir a un cliente cancelar un pedido.
- **Precondiciones**: El cliente debe haber iniciado sesión y el pedido debe estar en un estado cancelable.
- **Flujo Principal**:
1. El cliente selecciona un pedido en curso.
2. El cliente elige cancelar el pedido.
3. El sistema actualiza el estado del pedido a cancelado.
- **Postcondiciones**: El pedido está cancelado, el cliente recibe una notificación. Se genera una penalización si aplica.### Generar Reportes
- **Actor**: Administrador
- **Descripción**: Permitir a un administrador generar reportes sobre el desempeño del sistema (pedidos, repartidores, tiempos de entrega).
- **Precondiciones**: El administrador debe haber iniciado sesión.
- **Flujo Principal**:
1. El administrador selecciona el tipo de reporte.
2. El sistema genera y muestra el reporte.
- **Postcondiciones**: El administrador puede ver y analizar el reporte generado.### Actualizar Perfil de Usuario
- **Actor**: Usuario
- **Descripción**: Permitir a un usuario actualizar su perfil (nombre, dirección, teléfono, etc.).
- **Precondiciones**: El usuario debe haber iniciado sesión.
- **Flujo Principal**:
1. El usuario selecciona la opción de editar perfil.
2. El usuario actualiza la información deseada.
3. El sistema guarda los cambios.
- **Postcondiciones**: El perfil del usuario está actualizado.### Recuperar Contraseña
- **Actor**: Usuario
- **Descripción**: Permitir a un usuario recuperar su contraseña.
- **Precondiciones**: El usuario debe haber olvidado su contraseña.
- **Flujo Principal**:
1. El usuario selecciona la opción de recuperar contraseña.
2. El usuario ingresa su email.
3. El sistema envía un enlace de recuperación de contraseña al email del usuario.
- **Postcondiciones**: El usuario puede restablecer su contraseña a través del enlace enviado.### Ver Mapa de Entregas
- **Actor**: Cliente
- **Descripción**: Permitir a un cliente ver un mapa con las ubicaciones de sus entregas.
- **Precondiciones**: El cliente debe haber iniciado sesión.
- **Flujo Principal**:
1. El cliente selecciona la opción de ver mapa de entregas.
2. El sistema muestra un mapa con las ubicaciones de las entregas en curso.
- **Postcondiciones**: El cliente puede ver las ubicaciones de sus entregas en un mapa.### Soporte al Cliente
- **Actor**: Usuario
- **Descripción**: Permitir a un usuario contactar al soporte del sistema.
- **Precondiciones**: Ninguna
- **Flujo Principal**:
1. El usuario selecciona la opción de soporte.
2. El usuario ingresa su consulta o problema.
3. El sistema envía la consulta al equipo de soporte.
- **Postcondiciones**: El usuario ha contactado al soporte y recibirá asistencia.### Ver Estadísticas de Uso
- **Actor**: Administrador
- **Descripción**: Permitir a un administrador ver estadísticas de uso del sistema (número de usuarios, pedidos, repartidores activos, etc.).
- **Precondiciones**: El administrador debe haber iniciado sesión.
- **Flujo Principal**:
1. El administrador selecciona la opción de ver estadísticas.
2. El sistema muestra las estadísticas de uso actualizadas.
- **Postcondiciones**: El administrador puede ver las estadísticas de uso del sistema.### Gestionar Notificaciones
- **Actor**: Administrador
- **Descripción**: Permitir a un administrador gestionar las notificaciones enviadas a los usuarios.
- **Precondiciones**: El administrador debe haber iniciado sesión.
- **Flujo Principal**:
1. El administrador selecciona la opción de gestionar notificaciones.
2. El administrador configura las notificaciones (contenido, destinatarios, métodos).
3. El sistema guarda y aplica la configuración.
- **Postcondiciones**: Las notificaciones están gestionadas correctamente.### Ver Opiniones de Clientes
- **Actor**: Administrador
- **Descripción**: Permitir a un administrador ver las opiniones y calificaciones de los clientes sobre el servicio.
- **Precondiciones**: El administrador debe haber iniciado sesión.
- **Flujo Principal**:
1. El administrador selecciona la opción de ver opiniones.
2. El sistema muestra las opiniones y calificaciones de los clientes.
- **Postcondiciones**: El administrador puede ver y analizar las opiniones de los clientes.### Calificar Pedido
- **Actor**: Cliente
- **Descripción**: Permitir a un cliente calificar un pedido entregado.
- **Precondiciones**: El cliente debe haber iniciado sesión y el pedido debe haber sido entregado.
- **Flujo Principal**:
1. El cliente selecciona un pedido entregado.
2. El cliente ingresa su calificación y opinión.
3. El sistema guarda la calificación y opinión.
- **Postcondiciones**: El pedido está calificado y la opinión del cliente está registrada.### Actualizar Disponibilidad de Repartidor
- **Actor**: Repartidor
- **Descripción**: Permitir a un repartidor actualizar su disponibilidad.
- **Precondiciones**: El repartidor debe haber iniciado sesión.
- **Flujo Principal**:
1. El repartidor selecciona la opción de actualizar disponibilidad.
2. El repartidor cambia su estado de disponibilidad.
3. El sistema guarda el nuevo estado de disponibilidad.
- **Postcondiciones**: La disponibilidad del repartidor está actualizada.