diff --git a/REQUIREMENTS.md b/REQUIREMENTS.md new file mode 100644 index 0000000..ad421ad --- /dev/null +++ b/REQUIREMENTS.md @@ -0,0 +1,210 @@ +# Requisitos del Sistema de Gestión de Préstamos de Tablets + +## Descripción General + +El sistema debe permitir la gestión del préstamo y devolución de dispositivos tablets entre un inventario y un conjunto de usuarios. El enfoque principal es el seguimiento del estado de cada dispositivo y su relación con los usuarios que los han tomado prestados. + +--- + +## Requisitos Funcionales + +### Gestión de Dispositivos + +El sistema debe permitir: +- Registrar nuevos dispositivos en el inventario +- Identificar cada dispositivo de manera única +- Almacenar información descriptiva de cada dispositivo (marca, modelo, número de serie) +- Consultar el estado actual de cada dispositivo (disponible, prestado) + +### Gestión de Usuarios + +El sistema debe permitir: +- Registrar nuevos usuarios +- Identificar cada usuario de manera única +- Almacenar información de contacto básica (nombre, identificación) +- Consultar la información de los usuarios registrados + +### Gestión de Préstamos + +El sistema debe permitir: +- Asignar un dispositivo disponible a un usuario +- Registrar la fecha y hora del préstamo +- Registrar la fecha y hora de la devolución +- Consultar el historial de préstamos de un dispositivo +- Consultar el historial de préstamos de un usuario +- Visualizar todos los dispositivos actualmente prestados + +### Consulta y Reportes + +El sistema debe permitir: +- Buscar dispositivos por cualquier atributo (marca, modelo, número de serie) +- Buscar usuarios por cualquier atributo (nombre, identificación) +- Filtrar préstamos por estado (activos, finalizados) +- Filtrar préstamos por dispositivo +- Filtrar préstamos por usuario +- Ver el historial completo de préstamos y devoluciones + +--- + +## Modelo de Datos + +### Entidades Principales + +1. **Dispositivo** + - Identificador único + - Marca + - Modelo + - Número de serie (único) + - Estado (disponible, prestado) + +2. **Usuario** + - Identificador único + - Nombre + - Identificación (única) + +3. **Préstamo** + - Identificador único + - Dispositivo asociado + - Usuario asociado + - Fecha de préstamo + - Fecha de devolución (opcional) + - Estado (activo, finalizado) + +### Relaciones + +- Un **usuario** puede tener **múltiples préstamos** (relación uno a muchos) +- Un **dispositivo** solo puede estar en **un préstamo activo** a la vez +- Un **préstamo** relaciona exactamente un dispositivo con un usuario +- El historial de préstamos permite rastrear todos los movimientos de cada dispositivo + +### Reglas de Negocio + +1. Un dispositivo en estado "prestado" no puede ser prestado a otro usuario +2. Un préstamo finalizado debe registrar fecha de devolución +3. La identificación de dispositivos y usuarios debe ser única +4. Al devolver un dispositivo, este vuelve al estado "disponible" + +--- + +## Flujos de Trabajo + +### Registro de un Nuevo Dispositivo + +1. El sistema solicita la información del dispositivo (marca, modelo, número de serie) +2. El sistema valida que el número de serie no esté registrado +3. El sistema registra el dispositivo con estado "disponible" +4. El sistema confirma el registro + +### Registro de un Nuevo Usuario + +1. El sistema solicita la información del usuario (nombre, identificación) +2. El sistema valida que la identificación no esté registrada +3. El sistema registra el usuario +4. El sistema confirma el registro + +### Préstamo de un Dispositivo + +1. El sistema muestra los dispositivos disponibles +2. El usuario selecciona un dispositivo +3. El sistema muestra los usuarios registrados +4. El usuario selecciona un usuario +5. El sistema registra el préstamo con: + - Dispositivo seleccionado + - Usuario seleccionado + - Fecha y hora actual + - Estado "activo" +6. El sistema actualiza el estado del dispositivo a "prestado" +7. El sistema confirma el préstamo + +### Devolución de un Dispositivo + +1. El sistema muestra los préstamos activos +2. El usuario selecciona un préstamo +3. El sistema registra la fecha y hora de devolución +4. El sistema actualiza el estado del préstamo a "finalizado" +5. El sistema actualiza el estado del dispositivo a "disponible" +6. El sistema confirma la devolución + +### Consulta de Préstamos por Usuario + +1. El sistema muestra la lista de usuarios +2. El usuario selecciona un usuario +3. El sistema muestra: + - Dispositivos actualmente prestados (préstamos activos) + - Historial de préstamos pasados (opcional: expandible) +4. El sistema permite buscar por cualquier campo + +--- + +## Requisitos No Funcionales + +### Usabilidad + +- La interfaz debe permitir búsqueda eficiente en listas grandes (500+ elementos) +- La visualización de información debe ser clara y organizada +- Los estados deben ser fácilmente identificables +- Las acciones principales deben ser accesibles + +### Escalabilidad + +- El diseño debe soportar un crecimiento en el número de dispositivos y usuarios +- La búsqueda debe ser eficiente +- El historial debe ser consultable sin afectar el rendimiento + +### Mantenibilidad + +- La estructura de datos debe ser clara +- Las relaciones entre entidades deben estar bien definidas +- Los flujos de trabajo deben estar documentados + +--- + +## Diseño de Interfaz (Conceptual) + +### Vistas Principales + +1. **Vista de Inventario** + - Lista de dispositivos + - Filtros por estado + - Búsqueda + +2. **Vista de Usuarios** + - Lista de usuarios + - Búsqueda + +3. **Vista de Préstamos Activos** + - Lista de préstamos en curso + - Filtros por dispositivo/usuario + - Acciones: devolver dispositivo + +4. **Vista de Historial** + - Lista completa de préstamos + - Filtros por fecha, usuario, dispositivo, estado + - Detalles de cada préstamo + +5. **Vista de Préstamos por Usuario** + - Lista de usuarios + - Para cada usuario: dispositivos actualmente prestados + - Opcional: historial de préstamos pasados (expandible) + +### Elementos de Interacción + +- Campos de búsqueda en todas las listas +- Botones de acción claros (Prestar, Devolver, Registrar) +- Indicadores visuales de estado (colores, iconos) +- Confirmación de acciones críticas + +--- + +## Notas de Implementación + +Este documento describe los requisitos a nivel de diseño. La implementación específica (lenguaje de programación, base de datos, framework, arquitectura) queda a criterio del equipo de desarrollo y puede variar según las necesidades técnicas. + +Los detalles técnicos como: +- Tecnologías específicas +- Estructura de base de datos física +- APIs +- Autenticación +- Despliegue + +Deberán ser definidos en la fase de diseño técnico y pueden evolucionar sin afectar los requisitos funcionales descritos aquí.