Flujos de usuario - FactoriaF5-Asturias/project-p5-digital-academy-team3-restaurant-frontend GitHub Wiki
Descripción de los flujos principales de la aplicación organizados por rol. Cada flujo describe los pasos que sigue el usuario y las pantallas que atraviesa.
Cliente
El cliente navega la carta del restaurante, elige productos y realiza un pedido. No necesita registrarse para hacer un pedido.
Ver la carta y añadir productos al carrito
- El cliente entra en
/. - La aplicación carga los productos desde el backend y los muestra en un grid de tarjetas.
- El cliente puede filtrar por categoría con los botones de filtro.
- El cliente puede buscar por nombre o descripción con el buscador.
- En cada tarjeta, el cliente ajusta la cantidad con los botones
+y-. La cantidad mínima es 1. - El cliente pulsa "Añadir a la cesta".
- El contador del carrito en el header se actualiza en tiempo real.
- La cantidad del selector se resetea a 1 y el cliente puede seguir añadiendo productos.
Revisar el carrito y confirmar el pedido
- El cliente pulsa el icono del carrito en el header.
- Se abre
/cartcon el listado de productos. - El cliente puede incrementar o reducir la cantidad de cada producto, o eliminarlo.
- El subtotal, el envío y el total se recalculan automáticamente.
- El cliente elige el método de entrega.
- El cliente pulsa "Completar pedido".
- La aplicación envía el pedido al backend con
POST /api/v1/orders. - El carrito se vacía.
- La aplicación navega a
/order-success/:idcon el id del pedido recién creado.
Ver la confirmación del pedido
- La aplicación muestra la vista de confirmación con el número de pedido formateado (
#P5-<id>). - El cliente puede pulsar "Seguir comprando" para volver a la home.
Administrador
El administrador gestiona la carta, los pedidos y los informes. Requiere autenticación con rol ADMIN.
Primer login y cambio de contraseña obligatorio
- El administrador entra en
/login. - Introduce su usuario y su contraseña inicial.
- La aplicación llama a
POST /api/v1/auth/token. - El backend responde con
409 Conflictporque la contraseña requiere cambio. - La aplicación redirige a
/change-password. - El administrador rellena el usuario, la contraseña actual, la nueva contraseña y su confirmación.
- La aplicación valida en cliente que las contraseñas coincidan y que la nueva tenga al menos 8 caracteres.
- La aplicación llama a
POST /api/v1/auth/change-password. - El backend responde con un token nuevo. La aplicación lo guarda en
localStorage. - La aplicación redirige a
/admin/products.
Acceder al panel de administración
- El administrador entra en
/login. - Introduce sus credenciales.
- La aplicación llama a
POST /api/v1/auth/token. - El backend devuelve el token. La aplicación lo guarda en
localStorage. - La aplicación redirige a
/. - El administrador pulsa el icono de perfil en el header.
- El icono enlaza a
/admin/products. - La aplicación renderiza el panel de administración con el sidebar.
Gestionar productos
- El administrador accede a
/admin/products. - La aplicación carga el listado de productos y las categorías desde el backend.
- El administrador ve cada producto con su información y las acciones disponibles.
- Puede buscar productos con el buscador.
- Puede cambiar el estado de un producto (activar/desactivar) con el botón correspondiente.
- Puede editar un producto pulsando "Editar". Se abre un formulario con los datos precargados.
- Puede eliminar un producto pulsando "Eliminar". Se muestra una confirmación.
- Puede añadir un producto nuevo pulsando "Añadir producto". Se abre el mismo formulario vacío.
- Al guardar, la aplicación llama al backend y actualiza el listado.
Gestionar pedidos
- El administrador accede a
/admin/orders. - La aplicación carga el listado de pedidos.
- El administrador filtra por tipo y por estado.
- Puede consultar los detalles de un pedido.
- Puede cambiar el estado de un pedido.
Consultar informes de ventas
- El administrador accede a
/admin/reports. - La aplicación muestra el resumen de ventas por día, mes, trimestre y año.
- El administrador puede solicitar la descarga del informe en PDF.
- La aplicación llama al backend y descarga el PDF.
Cocina
El personal de cocina gestiona el estado de los pedidos. Requiere autenticación con rol KITCHEN.
Acceder al dashboard de cocina
- El cocinero entra en
/login. - Introduce sus credenciales.
- La aplicación llama a
POST /api/v1/auth/token. - El backend devuelve el token. La aplicación lo guarda en
localStorage. - La aplicación redirige a
/. - El cocinero pulsa el icono de perfil en el header.
- El icono enlaza a
/kitchen. - La aplicación renderiza el dashboard de cocina.
Gestionar pedidos en cocina
- El cocinero ve el listado de pedidos activos en el dashboard.
- Puede filtrar los pedidos por estado (todos, pendientes, en curso, listos, cancelados).
- Puede filtrar por tipo de pedido (todos, para llevar, en sala, a domicilio).
- Cada pedido muestra su información: número, tipo, hora, items, estado actual.
- El cocinero cambia el estado del pedido con las acciones disponibles:
- Aceptar un pedido pendiente.
- Marcar como listo un pedido aceptado.
- Rechazar un pedido pendiente.
- El cambio de estado se envía al backend con
PUT /api/v1/orders/:id/status. - El listado se actualiza automáticamente.