2. Descripción general - migueltovarb/ISWREQUERIMIENTOS202502-1NickyValpz GitHub Wiki

2.1 Perspectiva del Producto

La Plataforma de Pedidos para un Restaurante es un sistema web independiente y modular, creado para digitalizar el proceso de toma, gestión y seguimiento de pedidos dentro de un entorno gastronómico. No pertenece a una familia de productos previa ni reemplaza otro sistema existente, sino que constituye una solución nueva, completa y adaptable a cualquier tipo de restaurante o negocio de comida rápida.

El sistema forma parte de una arquitectura basada en cliente-servidor, donde el frontend (interfaz de usuario) se comunica con el backend (servidor Flask) mediante peticiones HTTP y una base de datos central.

2.2 Funciones del Producto

Las funciones principales del sistema son las siguientes:

## Para clientes: RF001: Visualizar el menú completo con imágenes, descripciones y precios.

RF002: Realizar pedidos personalizados (ingredientes, tamaño, extras).

RF003: Registrar cuenta y autenticarse en el sistema.

RF004: Realizar pagos en línea o seleccionar pago en efectivo.

RF005: Recibir notificaciones en tiempo real sobre el estado del pedido.

RF006: Consultar historial de pedidos realizados.

### Para administradores: RF007: Crear, editar y eliminar productos del menú.

RF008: Gestionar usuarios y roles.

RF009: Visualizar reportes de ventas y desempeño del restaurante.

RF010: Monitorear pedidos en curso y actualizar estados.

### Para cocineros / personal operativo: RF011: Ver pedidos pendientes.

RF012: Actualizar el estado de un pedido (en preparación, listo, entregado).

RF013: Registrar tiempo de entrega y observaciones internas.

## Funciones generales del sistema: RNF001: Garantizar la seguridad y privacidad de los datos.

RNF002: Mantener la disponibilidad del sistema 24/7.

RNF003: Proporcionar una interfaz intuitiva, rápida y adaptable a distintos dispositivos.

RNF004: Generar reportes automáticos y permitir la exportación de información.

**### ##


2.3 Clases y Características de Usuarios

El sistema contempla las siguientes clases de usuarios: En repartidor. los cuales tendrán un rol descriptivo, es decir: El cliente será un usuario final que realice pedidos y su característica principal sería tener acceso a una interfaz amigable, tendría opciones de personalización, historial de pedidos. notificaciones y un nivel técnico básico.

Con el administrador tendría un rol como personal responsable del restaurante, donde su característica principal sea el tener acceso completo a la gestión del menú, usuario y reportes, un nivel teórico intermedio

Con el cocinero y repartidor, serian empleado operativo encargado de esperar, preparar o entregar los pedidos la característica principal es visualizar los pedidos en tiempo real, cambia estados y reporta entregas, el nivel teórico seria básico/intermedio

Los usuarios se diferencian por su rol asignado al iniciar sesión, lo cual define su nivel de acceso dentro del sistema. El sistema está diseñado para ser intuitivo y no requerir formación técnica avanzada.

2.4 Entorno Operativo

El sistema operará bajo el siguiente entorno:

Hardware mínimo:

Servidor: CPU 2 núcleos, 4GB RAM, 20GB almacenamiento.

Cliente: Dispositivo con navegador moderno (PC, tablet o smartphone).

Software:

Lenguaje backend: Python 3.12+

Framework: Flask (v3.0)

Frontend: HTML5, CSS3, JavaScript, Bootstrap 5.

Base de datos: SQLite (modo desarrollo) / MySQL o PostgreSQL (modo producción).

Sistema operativo recomendado: Windows 10+, Linux Ubuntu Server 22.04 LTS.

Navegadores compatibles: Google Chrome, Edge, Firefox, Safari.

El sistema es multiplataforma y responsivo, adaptándose tanto a equipos de escritorio como dispositivos móviles.

2.5 Restricciones de Diseño e Implementación

Lenguaje obligatorio: Python con framework Flask.

Motor de base de datos: SQLite (desarrollo) / MySQL o PostgreSQL (producción).

Seguridad: Cifrado de contraseñas (bcrypt o werkzeug), uso de HTTPS.

Interfaz web: Basada en HTML5/CSS3 con diseño responsivo y elementos Bootstrap.

Integración futura: API REST para conectividad con aplicaciones móviles.

Mantenimiento: El código debe estar estructurado en MVC (Model-View-Controller).

Restricciones de tiempo: Respuesta del servidor ≤ 2 segundos por solicitud.

Normas: Cumplimiento de lineamientos de accesibilidad WCAG 2.1.

2.6 Documentación para el Usuario

El sistema incluirá los siguientes documentos y ayudas: tipo de documento el cual trata sobre el manual de usuario, de administración, técnico, ayuda en línea, tutorial interactivo todos estos conllevan con una descripción, es decir:

Manual de usuario (Cliente) Va a tener instrucciones para realizar pedidos, pagos y seguimiento también va a tener un formato que serien en PDF/HTML Manual de administración va a ser una guía de gestión del menú, usuarios y reportes y el formato va a ser en PDF Manual teórico descripción de la arquitectura, base de datos y dependencias su formato será e PDF/ Markdown Ayuda en la línea será una sección "ayuda" dentro de la interfaz web con preguntas frecuentes su formato será integrado Tutorial interactivo una guía paso a paso dentro del sistema(modal) y su formato será JS integrado Todos los documentos estarán disponibles en español y actualizados junto con cada versión del sistema.

2.7 Suposiciones y Dependencias

Suposiciones:

Los usuarios tienen acceso estable a internet.

Los dispositivos de los clientes soportan navegadores modernos.

Los administradores cuentan con conocimientos básicos en el uso de sistemas web.

La base de datos y el servidor estarán activos de forma continua.

Dependencias:

Dependencia del framework Flask y sus librerías (SQLAlchemy, Flask-Login, Flask-WTF).

Dependencia del sistema de correo para envío de notificaciones (Flask-Mail).

Dependencia futura de pasarelas de pago (PayU, MercadoPago o Stripe).

Dependencia de servicios de mapas (Leaflet.js o Google Maps API) para el seguimiento de pedidos.