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.