Artículo

10 de agosto de 2026

Sistema Inteligente de Gestión de Ventas con Recomendaciones

Luana Quinaglia Maistro; Vinicius Santos Andrade

DOI: 10.22167/2675-6528-202601105

Artículo elaborado por la herramienta ResumeAI, solución de inteligencia artificial desarrollada por el Instituto Pecege orientada a la síntesis y redacción.

Resumen

La gestión eficiente de ventas e inventario demostró ser crucial para la competitividad empresarial en mercados dinámicos y orientados por datos. Se desarrolló Nexsell, un Sistema Inteligente de Gestión de Ventas con funcionalidades de recomendaciones personalizadas, con el objetivo de integrar el control operativo y la inteligencia de datos en una solución accesible para pequeñas y medianas empresas. El sistema fue arquitectado basándose en los principios de Clean Architecture y Domain-Driven Design, utilizando .NET 8, PostgreSQL y Entity Framework Core en el backend, y React 19 con TypeScript en el frontend. Se implementaron seis módulos funcionales completos, incluyendo registro de productos, gestión de clientes, registro de ventas, control de inventario, recomendaciones inteligentes e informes gerenciales interactivos. Las recomendaciones personalizadas se proporcionaron a través de Recombee, una plataforma externa, basándose en el historial de compras y el perfil de los clientes. Se validó el sistema mediante 212 pruebas unitarias en xUnit y pruebas de integración automatizadas, que evaluaron la calidad de las sugerencias generadas por el algoritmo con las métricas Precision@K y Recall@K en 55 escenarios simulados. Los resultados demostraron la integración exitosa de funcionalidades operativas tradicionales con un módulo de recomendaciones inteligentes, presentando una Precision@5 media de 19,3% y un Recall@5 medio de 48,2%, consistentes con lo esperado para catálogos de pequeño tamaño. La arquitectura adoptada garantizó la mantenibilidad, testeabilidad y resiliencia a fallos externos, contribuyendo a una solución robusta y adaptable a las necesidades del mercado.

Palabras clave: Arquitectura de software; Automatización; Arquitectura limpia; Diseño guiado por el dominio; Filtrado colaborativo.

1. Introducción

La transformación digital ha redefinido profundamente el panorama empresarial, exigiendo de las organizaciones una adaptación continua y la adopción de estrategias innovadoras para mantener la competitividad. En este escenario, la gestión eficiente de ventas e inventario ha emergido como un pilar fundamental para el éxito, especialmente en mercados dinámicos y crecientemente orientados por datos. La capacidad de procesar y analizar grandes volúmenes de información para optimizar operaciones y predecir tendencias de consumo se ha convertido en un diferencial estratégico. Laudon y Laudon (2023) enfatizan que los sistemas de información bien estructurados han dejado de ser un lujo para convertirse en una necesidad imperativa, ya que las empresas que no logran controlar sus operaciones y basar decisiones en datos corren el riesgo de perder relevancia. Sin embargo, las pequeñas y medianas empresas (PYMES) frecuentemente enfrentan desafíos significativos en la implementación de soluciones integradas, a menudo dependiendo de herramientas desconectadas o procesos manuales que limitan severamente su capacidad de análisis y crecimiento.

Paralelamente a esta evolución, la inteligencia artificial (IA) ha revolucionado la experiencia de compra y la gestión comercial. Entre sus diversas aplicaciones, los sistemas de recomendación se destacan como una de las vertientes más exitosas del *machine learning*, según apuntan Ricci, Rokach y Shapira (2015). Estos sistemas son capaces de analizar el comportamiento de los consumidores, como el historial de compras y las preferencias, para sugerir productos relevantes de forma personalizada. La eficacia de este enfoque está ampliamente comprobada por gigantes del mercado como Amazon y Netflix, que utilizan algoritmos sofisticados de filtrado colaborativo y basado en contenido para elevar significativamente las tasas de conversión, aumentar el valor medio de las ventas y mejorar la satisfacción del cliente. La personalización de la experiencia de compra, antes restringida a grandes corporaciones con vastos recursos tecnológicos, se ha convertido en un factor decisivo para involucrar a los clientes e impulsar el crecimiento del negocio a cualquier escala.

A pesar del potencial transformador de la inteligencia artificial, la implementación de sistemas inteligentes e integrados sigue siendo un desafío considerable para las pequeñas y medianas empresas. Los altos costos de desarrollo, la complejidad de la integración con infraestructuras existentes y la escasez de conocimiento técnico especializado a menudo hacen inviable la adopción de estas tecnologías avanzadas. En este contexto, la ingeniería de software moderna busca soluciones que equilibren funcionalidad, facilidad de uso y viabilidad económica, como preconiza Sommerville (2011), especialmente al desarrollar sistemas para organizaciones con recursos limitados. La necesidad de sistemas que no solo sean funcionales, sino también adaptables y escalables, resalta la importancia de decisiones arquitectónicas bien fundamentadas. Richards y Ford (2020) argumentan que la arquitectura de software trasciende la mera elección de tecnologías, involucrando decisiones estratégicas sobre cómo estructurar sistemas para cumplir con los requisitos de negocio, garantizando adaptabilidad a los cambios futuros y resiliencia a fallos. Principios como Clean Architecture y Domain-Driven Design (DDD) son cruciales para construir sistemas robustos y mantenibles. El DDD, según lo propuesto por Evans (2003), se centra en el modelado del dominio de negocio, utilizando conceptos como entidades y objetos de valor para encapsular reglas de negocio y garantizar la integridad de los datos, un enfoque que Vernon (2013) detalla como esencial para la lógica de validación. La Clean Architecture, por su parte, promueve la separación de preocupaciones en capas, aislando las reglas de negocio de la infraestructura y la interfaz de usuario, lo que facilita la testeabilidad, la mantenibilidad y la escalabilidad del sistema a lo largo del tiempo, características esenciales para sistemas que necesitan evolucionar e integrarse con servicios externos de forma confiable.

Ante la brecha existente entre la necesidad de las pequeñas y medianas empresas por una gestión de ventas y stock eficiente y la complejidad de implementar soluciones tecnológicas avanzadas, este trabajo se justifica por la creciente demanda de democratización de herramientas inteligentes y por la oportunidad de aplicar conceptos de ingeniería de software de vanguardia, arquitectura de sistemas e inteligencia artificial en un contexto práctico y relevante para el mercado. Así, el objetivo de este artículo es presentar el desarrollo de un sistema inteligente de gestión de ventas que integre funcionalidades operativas tradicionales con recursos de recomendaciones personalizadas, ofreciendo una solución accesible y robusta para pequeñas y medianas empresas optimicen sus operaciones y mejoren la experiencia del cliente a través de sugerencias basadas en su historial de compras.

2. Material y Métodos

La investigación se caracterizó como aplicada, con el objetivo de solucionar un problema práctico del mercado, según la clasificación de Gil (2002). Sus objetivos fueron exploratorios y descriptivos, buscando comprender los desafíos de gestión comercial en pequeñas empresas y desarrollar una solución tecnológica funcional. El enfoque metodológico adoptado fue la investigación aplicada con desarrollo de prueba de concepto, centrándose en la construcción y validación técnica de un sistema inteligente de gestión de ventas. Este proceso se llevó a cabo en ciclos iterativos, con evaluación continua de los resultados, siguiendo principios de metodología ágil, sin involucrar la participación directa de usuarios finales en un entorno operativo real.

El contexto del estudio abarcó el escenario de pequeñas y medianas empresas que buscan optimizar la gestión de ventas e inventario a través de tecnologías avanzadas. El lugar de desarrollo fue el entorno de investigación y desarrollo, sin un lugar físico específico de aplicación en campo. El período de ejecución de la investigación no estuvo explícitamente delimitado, pero el desarrollo del sistema ocurrió en ciclos iterativos, reflejando un enfoque continuo. La unidad de análisis principal fue el sistema Nexsell, un software de gestión de ventas con funcionalidades de recomendación, evaluado en cuanto a su arquitectura, implementación y rendimiento técnico.

Para la validación del sistema, no se utilizó una población o muestra de usuarios reales, sino un estudio de caso con simulación de operaciones comerciales. Los datos empleados fueron sintéticos, elaborados con base en patrones reales de negocio para garantizar relevancia. Se crearon escenarios específicos que contemplaron cinco perfiles distintos de clientes y sus respectivos patrones de compra. Este enfoque permitió evaluar la calidad de las recomendaciones generadas por el sistema en condiciones controladas, sin necesidad de interacción con un entorno de producción real o datos sensibles de clientes.

La unidad de análisis para la validación de las recomendaciones consistió en 50 productos sintéticos, distribuidos equitativamente en cinco categorías: Informática, Electrónicos, Libros, Deportes y Hogar. Para cada uno de los cinco perfiles de consumo modelados (Programador, Gamer, Lector, Deportista y HomeOffice), se instanciaron once clientes simulados, totalizando 55 escenarios de evaluación. Estos escenarios fueron cruciales para probar la capacidad del algoritmo de recomendación en diferentes contextos de preferencia e historial de compras, garantizando un análisis exhaustivo del comportamiento del sistema.

El sistema Nexsell fue desarrollado siguiendo los principios de Domain-Driven Design (DDD) y Clean Architecture (Richards; Ford, 2020), que guiaron las decisiones arquitectónicas y tácticas de modelado. El backend fue implementado en .NET 8, utilizando PostgreSQL como base de datos y Entity Framework Core para acceso a datos. La lógica de negocio fue expuesta por medio de una API REST, organizada en cuatro capas (Domain, Application, Infrastructure y API) y documentada con Swagger/OpenAPI, facilitando la integración y el consumo de los servicios por otras aplicaciones.

El frontend del sistema se construyó como una aplicación web en React 19 con TypeScript, utilizando Ant Design para componentes de interfaz, Zustand para la gestión de estado y Axios para las solicitudes HTTP. La herramienta Vite se empleó para la compilación y el desarrollo, optimizando la velocidad. El sistema contempló seis módulos principales: registro y control de productos, gestión de clientes, registro de ventas, control de inventario, recomendaciones inteligentes e informes gerenciales. Una biblioteca TypeScript compartida, que contiene Value Objects y casos de uso, se publicó a través de GitHub Packages para su reutilización.

La funcionalidad de gestión de clientes se integró a la API ViaCEP para el autocompletado de direcciones, mejorando la experiencia del usuario y la precisión de los datos. El módulo de recomendaciones inteligentes se hizo posible gracias a la integración con Recombee, una plataforma especializada en sistemas de recomendación. Esta elección permitió centrarse en la aplicación práctica de la inteligencia artificial, delegando la complejidad del desarrollo de algoritmos de *machine learning* al servicio externo. Los datos de interacción, como el historial de compras, se enviaron a Recombee vía API para generar sugerencias personalizadas.

El desarrollo del sistema siguió una pipeline de cuatro etapas principales. Inicialmente, se realizó el análisis y modelado, con levantamiento de requisitos y definición de la arquitectura. Luego, ocurrió la implementación, con la creación de funcionalidades y la aplicación de pruebas automatizadas a cada nueva funcionalidad. La tercera etapa involucró la integración con el servicio Recombee, configurando el envío de eventos de compra y el consumo de las recomendaciones. Finalmente, se procedió a la validación final, con simulaciones de escenarios y recolección de métricas de calidad para evaluar el desempeño del sistema.

La estrategia de pruebas se estructuró en tres niveles complementarios, según lo recomendado por Sommerville (2011), para garantizar la calidad del software. Se realizaron pruebas unitarias de dominio, cubriendo entidades y objetos de valor, totalizando 154 pruebas. Adicionalmente, se ejecutaron 58 pruebas unitarias de aplicación para validar los servicios de la capa de aplicación, utilizando el framework xUnit y la biblioteca Moq para la creación de dobles. Estas pruebas verificaron comportamientos, transiciones de estado, reglas de negocio y casos de fallo esperados, asegurando la robustez interna del sistema.

Se elaboraron y ejecutaron pruebas de integración automatizadas en el proyecto Teste.Integration, utilizando el framework xUnit, directamente contra la API de Recombee. La calidad de las recomendaciones se midió a través de las métricas Precision@K y Recall@K, ampliamente reconocidas en la literatura de sistemas de recomendación (Ricci, Rokach y Shapira, 2015). Para cada uno de los 55 escenarios de evaluación, se aplicó la técnica de *train/test split*, donde se usaron cuatro compras para entrenamiento y dos se retuvieron como *ground truth* para evaluación, con K=5 para las métricas.

La comunicación con Recombee ocurrió en tres momentos clave del flujo de negocio. Al registrar o actualizar un producto, el servicio RecomendacaoService sincronizó automáticamente el ítem, enviando propiedades como nombre, categoría y precio, que componen el esquema de datos de Recombee. Al confirmar una venta, el sistema registró automáticamente un evento AddPurchase para cada ítem vendido, proporcionando el principal insumo para el algoritmo de filtrado colaborativo. La visualización de un ítem por el cliente también generó interacciones, contribuyendo al aprendizaje del algoritmo.

No se aplicaron procedimientos éticos formales, ya que la investigación implicó el desarrollo de un sistema y su validación con datos sintéticos, sin la participación directa de seres humanos ni la recopilación de datos personales. La principal limitación metodológica identificada fue el uso de datos sintéticos para la evaluación de las recomendaciones. Si bien este enfoque fue suficiente para validar la integración técnica y el funcionamiento del algoritmo, no sustituye una evaluación con datos reales de operación en un entorno de producción, lo que podría ofrecer *insights* adicionales sobre el rendimiento en condiciones de uso real.

3. Resultados y Discusión

El desarrollo del sistema Nexsell, objeto central de este trabajo, se basó en una arquitectura robusta y principios modernos de ingeniería de software, con el objetivo no solo de la funcionalidad, sino también de la mantenibilidad, escalabilidad y extensibilidad. La elección del Domain-Driven Design (DDD) y la Clean Architecture, según lo recomendado por Evans (2003) y Richards y Ford (2020), respectivamente, resultó fundamental para la organización del código en cuatro capas distintas: Dominio, Aplicación, Infraestructura y API. Esta separación de responsabilidades es un pilar para sistemas complejos, garantizando que las reglas de negocio permanezcan aisladas de los detalles tecnológicos, lo que facilita la evolución y la adaptación a nuevas demandas del mercado.

La capa de Dominio, por ejemplo, concentró las entidades de negocio esenciales, como Cliente, Producto, Inventario, Venta, ArtículoVenta y Usuario. Cada una de estas entidades fue modelada con un encapsulamiento riguroso, utilizando *setters* privados y métodos de dominio que aseguran la integridad de los datos y el cumplimiento de las invariantes de negocio. Este enfoque está en consonancia con la filosofía del DDD, que enfatiza el modelado de un dominio rico y expresivo. Además, objetos de valor como CPF, CNPJ, Documento, Contacto y Dirección fueron implementados como tipos inmutables con validación integrada. Esta práctica, defendida por Vernon (2013), garantiza que la lógica de validación resida en el propio tipo, evitando la dispersión de reglas de validación por toda la aplicación y promoviendo la consistencia de los datos desde su creación. La inmutabilidad de estos objetos de valor contribuye a la robustez del sistema, previniendo alteraciones indeseadas después de su inicialización.

La capa de Infraestructura fue responsable de la persistencia de los datos, empleando Entity Framework Core 8 y aplicando los patrones Repository y Unit of Work. Estos patrones son cruciales para abstraer las operaciones de acceso a datos, permitiendo que la lógica de negocio en la capa de Dominio no necesite conocer los detalles específicos de la base de datos. Durante el desarrollo, se utilizó SQLite por su simplicidad de configuración, ideal para entornos de prototipado y pruebas. Sin embargo, la migración a PostgreSQL en un entorno de producción, facilitada por el propio Entity Framework Core, demostró la flexibilidad de la arquitectura. La capacidad de aplicar migraciones automáticamente al inicio de la aplicación eliminó la necesidad de *scripts* manuales, reduciendo la posibilidad de errores y agilizando el *deploy*. Esta adaptabilidad a diferentes sistemas de bases de datos, sin impacto en las reglas de negocio, es un testimonio de la eficacia de la Arquitectura Limpia (Clean Architecture) para desacoplar las preocupaciones técnicas de las reglas de negocio. El modelo de datos resultante, dividido en dominios de clientes y comercial, se ilustra mediante diagramas de entidades que detallan las relaciones y atributos.

Figura 1. Diagrama de entidades del dominio de clientes

Fuente: Resultados originales de la investigación

La Figura 1, que presenta el diagrama de entidades del dominio de clientes, detalla la estructura de datos para la gestión de información crucial sobre los consumidores. Se observa la entidad `Clientes` como el núcleo, conteniendo atributos como `Id`, `Nome`, `DocumentoNumero`, `DocumentoTipo` y `Ativo`, además de `DataCadastro`. Esta entidad se relaciona con `ClienteEnderecos` y `ClienteContatos`, permitiendo el registro de múltiples direcciones y contactos para un mismo cliente. El modelado de `ClienteEnderecos` con campos como `CEP`, `Logradouro`, `Numero`, `Complemento`, `Bairro`, `Cidade` y `UF` refleja la necesidad de datos geográficos detallados para operaciones comerciales y logísticas. La integración con la API ViaCEP, mencionada en la metodología, optimiza el llenado de estos campos, reduciendo errores y mejorando la experiencia del usuario, lo que es un diferencial práctico para pequeñas empresas que buscan eficiencia. La entidad `ClienteContatos`, a su vez, permite almacenar `Telefone`, `Celular` y `Email`, ofreciendo múltiples canales de comunicación con el cliente. Esta granularidad en el modelado de datos de clientes es esencial para un sistema de gestión de ventas que apunta a la personalización y al relacionamiento duradero, como defendido por Laudon y Laudon (2023), quienes enfatizan la importancia de sistemas de información bien estructurados para la competitividad empresarial.

Figura 2. Diagrama de entidades del dominio comercial

Fuente: Resultados originales de la investigación

La Figura 2, que ilustra el dominio comercial, complementa la visión del sistema al presentar las entidades `Productos`, `Estoques`, `Vendas`, `ItensVenda` y `Usuarios`. La entidad `Productos` incluye `Id`, `Codigo`, `Nome`, `Descricao`, `PrecoUnitario`, `Categoria`, `Ativo` y `DataCadastro`, proporcionando una base sólida para el catálogo de productos. La integración automática con Recombee para la sincronización de productos, como se detalla a continuación, garantiza que las recomendaciones se basen siempre en datos actualizados. La entidad `Estoques` gestiona la `Quantidade`, `QuantidadeMinima` y `Localizacao` de cada producto, permitiendo un control preciso del inventario y la generación de alertas para niveles bajos de stock, una funcionalidad crítica para evitar pérdidas de ventas y optimizar la gestión de capital de trabajo en pequeñas empresas. Las `Vendas` se registran con `Id`, `ClienteId`, `DataVenda`, `Status`, `FormaPagamento` y `Observacao`, mientras que `ItensVenda` detalla cada producto incluido en una venta, con `ProdutoId`, `ProdutoNome`, `Quantidade` y `PrecoUnitario`. Esta estructura permite el seguimiento completo del ciclo de ventas, desde la creación hasta la confirmación y la cancelación, con la baja automática de stock y el envío de eventos de compra a Recombee, demostrando la interconexión y la automatización de los procesos de negocio. La entidad `Usuarios` gestiona el acceso al sistema con `Id`, `Nome`, `Email`, `SenhaHash` y `Role`, implementando un control de acceso basado en perfiles, esencial para la seguridad y la gobernanza del sistema.

La capa API, implementada en ASP.NET Core 8, expone la lógica de negocio a través de una interfaz RESTful. Este enfoque es ampliamente reconocido por su flexibilidad y compatibilidad con diversas aplicaciones cliente. Los *endpoints* se distribuyeron entre los módulos de Autenticación, Clientes, Productos, Inventario, Ventas, Recomendaciones e Informes. La documentación interactiva de la API, generada automáticamente con Swagger/OpenAPI, facilitó el consumo y las pruebas de los *endpoints*. La OpenAPI Specification (OPENAPI INITIATIVE, 2015) es un estándar que permite la creación automatizada de SDKs, agilizando la integración entre *frontend* y *backend* y reduciendo la carga de trabajo de desarrollo. Esta conformidad con estándares abiertos es un indicativo de la madurez del proyecto y de su capacidad de integración con ecosistemas externos.

La separación en capas, según la Arquitectura Limpia, es un resultado arquitectónico de gran valor. Richards y Ford (2020) describen la mantenibilidad, extensibilidad y testeabilidad como características arquitectónicas esenciales. Nexsell, al aislar responsabilidades, garantiza que las modificaciones en una capa no afecten a las otras, facilitando el mantenimiento. La extensibilidad se ve favorecida por el uso de interfaces e inyección de dependencias, permitiendo la fácil sustitución de componentes. La testeabilidad se hace posible por el desacoplamiento entre las capas, posibilitando la escritura de pruebas unitarias y de integración eficaces.

El *frontend* del sistema se construyó como una aplicación web en React 19 con TypeScript, utilizando Ant Design para componentes de interfaz, Zustand para la gestión de estado y Axios para las solicitudes HTTP. La elección de React (REACT, 2013) se debe a su madurez y vasta comunidad, que garantizan un ecosistema robusto y en constante evolución. Ant Design (DEVOGRAPHICS, 2024), por su parte, es una biblioteca de componentes ampliamente utilizada en aplicaciones corporativas, que ofrece más de 50 componentes responsivos y facilita el mantenimiento de la consistencia visual. Zustand fue seleccionado por su simplicidad en la gestión de estado global, abstraiendo detalles de implementación y ofreciendo flexibilidad organizacional. La biblioteca Axios, aunque existen alternativas nativas como Fetch API, fue preferida por sus facilitadores, como el tratamiento automático de *status codes*, la capacidad de tratar errores HTTP como excepciones y la facilidad de uso de *interceptors*, que reducen el código repetitivo y estandarizan el comportamiento de las solicitudes. La herramienta Vite optimizó el proceso de *build* y desarrollo, contribuyendo a la agilidad en la entrega. Una biblioteca TypeScript compartida, que contiene *Value Objects* y casos de uso, fue publicada a través de GitHub Packages, promoviendo la reutilización de código y reforzando la adaptabilidad de la aplicación, permitiendo que el *frontend* evolucione independientemente de la lógica de dominio invariante.

El sistema Nexsell contempló seis módulos principales, cada uno con un conjunto de funcionalidades diseñadas para optimizar la gestión comercial de pequeñas empresas. La Tabla 1 detalla estos módulos y sus principales funcionalidades.

Tabla 1. Módulos implementados y sus funcionalidades principales

Unidad

Características

Clientes

Registro con CPF/CNPJ, contactos y direcciones múltiples, activación e inactividad

Productos

Registro por código, categoría y precio, sincronización automática con Recombee

Inventario

Control de cantidad, alertas de stock por debajo del mínimo, entradas y salidas (En el frontend, integrado con la pantalla de productos)

Ventas

Creación, adición y eliminación de artículos, confirmación con baja automática de stock, cancelación

Recomendaciones

Integración con Recombee, sugerencias personalizadas por cliente (En el frontend integrado junto con la pantalla de clientes)

Informes

Resumen de ventas por período, productos más vendidos, clientes que más compraron y posición del stock

Fuente: Resultados originales de la investigación

La Tabla 1 presenta un resumen conciso de los módulos implementados y sus funcionalidades, demostrando la amplitud del sistema Nexsell. El módulo de `Clientes` ofrece registro completo con CPF/CNPJ, múltiples contactos y direcciones, además de activación e inactivación, lo cual es crucial para mantener una base de datos de clientes actualizada y precisa, soportando estrategias de segmentación y relación. El módulo de `Productos` permite el registro por código, categoría y precio, y se destaca por la sincronización automática con Recombee, garantizando que el sistema de recomendaciones opere con información de producto siempre actualizada. El `Inventario` proporciona control de cantidad, alertas para stock por debajo del mínimo y registro de entradas y salidas, una funcionalidad vital para la gestión de inventario y para evitar roturas o excesos de stock. El módulo de `Ventas` abarca la creación, adición y eliminación de artículos, confirmación con baja automática de stock y cancelación, automatizando procesos operativos y reduciendo la intervención manual. Las `Recomendaciones Inteligentes` se integran con Recombee para proporcionar sugerencias personalizadas por cliente, un recurso de inteligencia artificial que puede impulsar las ventas y la satisfacción del cliente. Finalmente, los `Informes Gerenciales` ofrecen un resumen de ventas por período, productos más vendidos, clientes que más compraron y la posición del inventario, proporcionando *insights* estratégicos para la toma de decisiones. La implementación de estos módulos demuestra el éxito en integrar funcionalidades operativas tradicionales con recursos avanzados de inteligencia artificial, respondiendo a la problemática de gestión de ventas e inventario en pequeñas empresas.

La interfaz REST expone los *endpoints* distribuidos en los módulos, según se detalla en la Tabla 2. La implementación de estos *endpoints* sigue las mejores prácticas de diseño de APIs, garantizando una comunicación eficiente y segura entre el *frontend* y el *backend*.

Tabla 2. Endpoints implementados por módulo

Procedimiento

Ruta

Descripción

Posgrado

/api/auth/login

Autentica al usuario y devuelve un token JWT

Posgrado

/api/auth/usuarios

Crea un nuevo usuario del sistema (solo Admin)

OBTENER

/api/clientes

Lista todos los clientes

OBTENER

/api/clientes/{id}

Devuelve un cliente por ID

OBTENER

/api/usuarios/archivo/{documento}

Busca un cliente por el CPF o CNPJ

OBTENER

/api/clientes/activos

Lista solo los clientes activos

OBTENER

/api/clientes/buscar?nombre={nome}

Busca clientes por nombre

Posgrado

/api/clientes

Registra un nuevo cliente

opción de venta

/api/clientes/{id}

Actualiza los datos de un cliente

PARCHE

/api/clientes/{id}/activar

Reactivar un cliente inactivo

PARCHE

/api/clientes/{id}/inactivar

Inactiva un cliente activo

Posgrado

/api/clientes/{id}/contactos

Añade un contacto secundario al cliente

Posgrado

/api/clientes/{id}/direcciones

Añade una dirección secundaria al cliente

OBTENER

/api/productos

Lista todos los productos

OBTENER

/api/productos/{id}

Retorna un producto por ID

OBTENER

/api/productos/codigo/{codigo}

Busca un producto por el código interno

OBTENER

/api/productos/activos

Lista solo los productos activos

OBTENER

/api/productos/categoria/{categoria}

Listar productos por categoría

OBTENER

/api/productos/buscar?nombre={nome}

Busca productos por el nombre

Posgrado

/api/productos

Registra un nuevo producto

opción de venta

/api/productos/{id}

Actualiza los datos de un producto

PARCHE

/api/productos/{id}/activar

Reactivar un producto inactivo

PARCHE

/api/productos/{id}/inactivar

Inactiva un producto activo

PARCHE

/api/productos/{id}/stock/add

Añade cantidad al stock del producto

PARCHE

/api/productos/{id}/stock/remover

Eliminar cantidad del stock del producto

OBTENER

/api/stock

Enumera el inventario de todos los productos

OBTENER

/api/stock/{id}

Devuelve un registro de inventario por ID

OBTENER

/api/stock/product/{produtold}

Devuelve el stock de un producto específico

OBTENER

/api/stock/low

Listar productos con stock por debajo del mínimo

OBTENER

/api/stock/available/{produtold}/{quantidade}

Verifica disponibilidad de stock

Posgrado

/api/stock

Crea el registro de inventario de un producto

opción de venta

/api/stock/{id}

Actualiza cantidad mínima y ubicación

Posgrado

/api/inventario/entrada

Registra entrada de mercancía

Posgrado

/api/inventario/salida

Registra salida de mercancía

OBTENER

/api/ventas

Listar todas las ventas

OBTENER

/api/ventas/{id}

Devuelve una venta por ID

OBTENER

/api/ventas/cliente/{clienteld}

Listar todas las ventas de un cliente

OBTENER

/api/ventas/status/{status}

Filtrar ventas por estado

OBTENER

/api/ventas/período?fechaInicio={data}&fechaFin={data}

Lista ventas por período

OBTENER

/api/ventas/total?fechaInicio={data}&fechaFin={data}

Devuelve el valor total de ventas en el período

Posgrado

/api/ventas

Crear una nueva venta

Posgrado

/api/ventas/{id}/ítems

Añadir un artículo a la venta

ELIMINAR

/api/ventas/{id}/ítems/{itemId}

Eliminar un artículo de la venta

PARCHE

/api/ventas/{id}/items/{itemId}/cantidad

Actualiza la cantidad de un artículo

Posgrado

/api/ventas/{id}/confirmar

Confirma la venta y baja el stock

Posgrado

/api/ventas/{id}/cancelar

Cancela la venta

OBTENER

/api/recomendaciones/cliente/{clienteld}

Devuelve productos recomendados para un cliente

OBTENER

/api/recomendaciones/cliente/{clienteId}/completo

Devuelve el cliente con sus recomendaciones

OBTENER

/api/recomendaciones/todos

Devuelve todos los clientes con sus recomendaciones

OBTENER

/api/informes/ventas/total-órdenes?fechaInicio={data}&fechaFin={data}

Total de pedidos en el período

OBTENER

/api/informes/ventas/valor-total?fechaInicio={data}&fechaFin={data}

Valor total vendido en el período

OBTENER

/api/informes/ventas/ticket-promedio?fechaInicio={data}&fechaFin={data}

Ticket promedio en el período

OBTENER

/api/informes/ventas/por-producto?fechaInicio={data}&fechaFin={data}

Productos más vendidos en el período

OBTENER

/api/reportes/ventas/por-cliente?fechaInicio={data}&fechaFin={data}

Clientes que más compraron en el período

OBTENER

/api/relatorios/vendas/por-categoria?dataInicio={data}&dataFim={data}

Categorías más vendidas en el período

OBTENER

/api/informes/inventario

Posición actual del inventario

Fuente: Resultados originales de la investigación

La Tabla 2 detalla los *endpoints* implementados, revelando la granularidad y la organización de la API REST. Cada *endpoint* se describe por el método HTTP (POST, GET, PUT, PATCH, DELETE), su ruta y una breve descripción de la funcionalidad. Por ejemplo, `/api/auth/login` y `/api/auth/usuarios` gestionan la autenticación y el registro de usuarios, respectivamente, con el primero devolviendo un token JWT para sesiones seguras. Los *endpoints* de `/api/clientes` permiten operaciones CRUD completas, incluyendo búsqueda por ID, documento, nombre, estado (activos), y la adición de contactos y direcciones secundarias, evidenciando la robustez de la gestión de clientes. Similarmente, `/api/productos` ofrece funcionalidades para listar, buscar, registrar, actualizar e inactivar productos, además de gestionar el stock directamente (`/api/productos/{id}/estoque/adicionar`, `/api/productos/{id}/estoque/remover`). Los *endpoints* de `/api/estoque` proporcionan visibilidad sobre el inventario, incluyendo productos con bajo stock y verificación de disponibilidad. El módulo de ventas, accesible vía `/api/vendas`, permite la creación, gestión de ítems, confirmación y cancelación de ventas, con la baja automática de stock. Los *endpoints* de `/api/recomendacoes` son cruciales para el módulo de inteligencia artificial, permitiendo la recuperación de sugerencias personalizadas para clientes específicos o todos los clientes. Por último, `/api/relatorios` ofrece *endpoints* para obtener datos agregados de ventas (total de pedidos, valor total, ticket promedio, productos más vendidos, clientes que más compraron, ventas por categoría) y la posición actual del stock, proporcionando la base para las visualizaciones gerenciales. Esta estructura de *endpoints* demuestra la capacidad del sistema de soportar todas las operaciones de negocio de forma programática y eficiente, facilitando la integración con el *frontend* y futuras extensiones.

El módulo de Ventas merece destaque por su integración entre capas y servicios. Al confirmar una venta, el sistema verifica automáticamente la disponibilidad de stock para cada artículo, realiza la baja de las cantidades y, a continuación, envía los eventos de compra al Recombee para alimentar el modelo de recomendaciones. Esta integración se produce de forma resiliente, donde una eventual falla en la comunicación con Recombee no impide la confirmación de la venta, garantizando que el sistema central de negocio no se vea afectado por dependencias externas. Este enfoque está alineado con los principios de tolerancia a fallos discutidos por Richards y Ford (2020), que enfatizan la importancia de diseñar sistemas que puedan seguir operando incluso en presencia de fallos parciales. La automatización de la baja de stock y el envío de eventos de compra en tiempo real son cruciales para la eficiencia operativa y para la precisión de las recomendaciones, respectivamente.

De la misma manera, el módulo de Productos sincroniza automáticamente los datos con Recombee al crear o actualizar un producto. Esta sincronización garantiza que el catálogo del sistema de recomendación esté siempre actualizado, sin requerir acción manual del operador. La consistencia de los datos entre el sistema de gestión y el servicio de recomendación es vital para la relevancia y la calidad de las sugerencias ofrecidas a los clientes, impactando directamente la experiencia de compra y las tasas de conversión.

La seguridad de la información se abordó con la implementación de autenticación basada en JSON Web Tokens (JWT), un estándar ampliamente adoptado en las APIs REST modernas por su naturaleza *stateless* y compatibilidad con aplicaciones distribuidas. La comunicación entre el *frontend* y la API se realiza exclusivamente vía HTTPS, con los tokens JWT transmitidos en la cabecera Authorization de cada solicitud autenticada. El sistema utiliza el paquete Microsoft.AspNetCore.Authentication.JwtBearer para la validación de los tokens y el IPasswordHasher del propio ecosistema ASP.NET Core para el *hashing* de contraseñas, con el algoritmo PBKDF2, garantizando seguridad adecuada sin dependencia de bibliotecas externas. Todos los *endpoints*, con excepción del login, requieren un token JWT válido, y el *endpoint* de creación de usuarios está restringido al *role* Admin, impidiendo que usuarios comunes creen nuevas cuentas. Un usuario administrador por defecto se crea automáticamente en la primera inicialización del sistema, posibilitando el acceso inicial sin necesidad de *scripts* manuales. Los tokens generados tienen una validez de 8 horas e incluyen las *claims* de identificación, correo electrónico, nombre y *role* del usuario. Esta implementación de seguridad es robusta y sigue las mejores prácticas de la industria, protegiendo los datos y el acceso al sistema.

La estrategia de pruebas se estructuró en tres niveles complementarios, según lo recomendado por Sommerville (2011), para garantizar la calidad del software. Se realizaron pruebas unitarias de dominio, cubriendo entidades y objetos de valor, totalizando 154 pruebas. Estas pruebas validaron comportamientos como la creación e inmutabilidad de los objetos de valor (CPF, CNPJ, Documento, Contacto, Dirección), las transiciones de estado de las entidades (activación, inactivación, confirmación y cancelación de ventas), las reglas de negocio que protegen las invariantes del dominio y los casos de fallo esperados. Las 154 pruebas fueron aprobadas, confirmando la robustez de la lógica de negocio.

Adicionalmente, se ejecutaron 58 pruebas unitarias de aplicación para validar los servicios de la capa de aplicación, utilizando el *framework* xUnit y la biblioteca Moq para la creación de *mocks*. Los servicios probados fueron ClienteService, ProductoService, EstoqueService, VendaService y RecomendacaoService. Estas pruebas verificaron escenarios como el rechazo de documentos duplicados en el registro de clientes, la propagación correcta de errores de dominio (como stock insuficiente al confirmar una venta), el comportamiento ante fallos en la integración con Recombee y la correcta devolución de cantidades al stock en la cancelación de una venta previamente confirmada. Las 58 pruebas fueron aprobadas, garantizando la integridad y el comportamiento esperado de los servicios de aplicación. La distribución de estas pruebas por servicio se presenta en la Tabla 3.

Tabla 3. Distribución de las pruebas unitarias por servicio

Servicio

Cantidad de Pruebas

ServicioCliente

11

ServicioProducto

11

InventarioServicio

14

VentaService

17

RecomendacaoService

5

Suma

58

Fuente: Resultados originales de la investigación

La Tabla 3, que detalla la distribución de las pruebas unitarias por servicio, ofrece una visión cuantitativa de la cobertura de pruebas en la capa de aplicación. Se observa que `VendaService` posee el mayor número de pruebas (17), lo cual es esperado, dada la complejidad y criticidad de las operaciones de venta, que involucran múltiples reglas de negocio e interacciones con otras capas y servicios (como inventario y recomendaciones). `EstoqueService` también presenta un número significativo de pruebas (14), reflejando la importancia del control de inventario para la operación del negocio. `ClienteService` y `ProdutoService` poseen 11 pruebas cada uno, cubriendo las funcionalidades CRUD y validaciones específicas de cada entidad. `RecomendacaoService`, con 5 pruebas, se enfoca en la validación de la integración con Recombee y en el manejo de escenarios de fallo, dado que la lógica compleja de recomendación se delega al servicio externo. El total de 58 pruebas unitarias en la capa de aplicación, sumadas a las 154 pruebas de dominio, totalizando 212 pruebas unitarias, demuestra un compromiso con la calidad del software y la aplicación rigurosa de prácticas de ingeniería de software, como defiende Sommerville (2011). Esta cobertura integral de pruebas es un resultado crucial para la confiabilidad y mantenibilidad del sistema Nexsell.

Se desarrollaron y ejecutaron pruebas de integración automatizadas en el proyecto Teste.Integration, utilizando el *framework* xUnit, directamente contra la API de Recombee. La calidad de las recomendaciones se midió a través de las métricas Precision@K y Recall@K, ampliamente reconocidas en la literatura de sistemas de recomendación (Ricci, Rokach y Shapira, 2015). Para cada uno de los 55 escenarios de evaluación, se aplicó la técnica de *train/test split*, donde se utilizaron cuatro compras para entrenamiento y dos se retuvieron como *ground truth* para evaluación, con K=5 para las métricas. Esta metodología permitió simular el comportamiento de clientes reales y evaluar la capacidad del algoritmo de recomendación en diferentes contextos de preferencia e historial de compras.

Los resultados obtenidos de la integración con Recombee y la evaluación de las recomendaciones se presentan en la Tabla 4.

Tabla 4. Precisión@5 y Recall@5 por perfil de cliente

Reseña

N

Precisión@5

Recordar@5

Deportista

11

34,50%

86,4%

Videojugador

11

12,70%

31,8%

Teletrabajo

11

7,3%

18,2%

Lector

11

34,5%

86,4%

Desarrollador

11

7,3%

18,2%

Fuente: Resultados originales de la investigación

La Tabla 4 presenta los resultados de las métricas Precision@5 y Recall@5 para cada uno de los cinco perfiles de cliente simulados, además de un total general. Estos datos son fundamentales para comprender el rendimiento del sistema de recomendación en diferentes contextos de consumo. El perfil `Deportista` y `Lector` demostraron los mejores resultados, con Precision@5 de 34,5% y Recall@5 de 86,4%. Estos valores son notablemente cercanos al techo teórico de 40% para Precision@5 y 100% para Recall@5 en el escenario evaluado (con 2 ítems de *ground truth* y K=5), indicando una alta asertividad del algoritmo para perfiles con comportamiento de compra homogéneo dentro de una única categoría. Este hallazgo corrobora la literatura que apunta la eficacia de la filtración colaborativa en identificar patrones de similitud entre usuarios con preferencias bien definidas (Ricci, Rokach y Shapira, 2015).

En contraste, los perfiles `Programador` y `HomeOffice` registraron los menores desempeños, con Precision@5 de 7,3% y Recall@5 de 18,2%. Esta diferencia significativa se explica por el comportamiento de compra heterogéneo de estos perfiles, donde los ítems de *ground truth* pertenecían a categorías distintas. Los algoritmos de filtrado colaborativo, aunque potentes, tienden a tener mayor dificultad en acertar recomendaciones cuando los intereses del usuario son muy diversificados o distribuidos por categorías poco relacionadas, como observado por Ricci, Rokach y Shapira (2015). En estos casos, el algoritmo puede tender a concentrarse en una de las categorías, recuperando solo uno de los ítems relevantes en la mayoría de los escenarios.

El perfil `Gamer` presentó un rendimiento intermedio, con Precision@5 del 12,7% y Recall@5 del 31,8%. Este resultado puede atribuirse a la superposición de dos categorías (Informática y Electrónica) en el historial de compras, lo que, aunque menos homogéneo que los perfiles `Lector` y `Deportista`, es menos disperso que los perfiles `Programador` y `HomeOffice`. El algoritmo demostró mayor asertividad en los artículos de Informática que en los artículos de Electrónica para este perfil, resultando en aciertos parciales en la mayoría de los escenarios.

La media general de Precision@5 del 19,3% y Recall@5 del 48,2% posiciona el sistema dentro del rango de rendimiento esperado para la configuración de datos utilizada y para catálogos de pequeño tamaño. Estos resultados demuestran que el Sistema de recomendación, incluso con datos sintéticos, es capaz de generar sugerencias relevantes, con un rendimiento que varía según la complejidad de los patrones de consumo. La Figura 3 presenta estos mismos resultados en formato gráfico, facilitando la comparación visual entre los perfiles.

Figura 3. Comparativa de Precisión@5 y Recall@5 por perfil de cliente en los 55 escenarios de prueba de integración con Recombee

Fuente: Resultados originales de la investigación

La Figura 3 ofrece una representación visual clara y concisa de los resultados presentados en la Tabla 4, permitiendo una rápida comparación del rendimiento de las métricas Precision@5 y Recall@5 entre los diferentes perfiles de clientes. El gráfico de barras horizontales destaca visualmente la superioridad de los perfiles `Deportista` y `Lector` en ambas métricas, con las barras de Precision@5 y Recall@5 alcanzando longitudes significativamente mayores en comparación con los otros perfiles. Esta visualización refuerza la conclusión de que la homogeneidad del comportamiento de compra del cliente impacta directamente la eficacia del sistema de recomendación. Los perfiles `Gamer` muestran un rendimiento intermedio, con barras de longitud moderada, mientras que `HomeOffice` y `Programador` exhiben las barras más cortas, ilustrando gráficamente la dificultad del algoritmo para lidiar con intereses más heterogéneos. La representación gráfica facilita la identificación de los puntos fuertes y débiles del sistema de recomendación en diferentes escenarios, siendo una herramienta valiosa para la interpretación de los resultados y para la comunicación de los hallazgos. La claridad visual es esencial para que gerentes y desarrolladores comprendan rápidamente dónde el sistema funciona mejor y dónde hay espacio para optimización, por ejemplo, a través de estrategias de diversificación de recomendaciones para perfiles con intereses amplios.

La ejecución automatizada de los 55 escenarios de prueba con el cálculo de las métricas por perfil se puede verificar en la Figura 4, que muestra la salida de la prueba de integración.

Figura 4. Salida de la prueba de integración que muestra las métricas Precision@5 y Recall@5 calculadas para los 55 escenarios evaluados por perfil de cliente

Fuente: Resultados originales de la investigación

La Figura 4 presenta la salida textual de la prueba de integración, que valida el proceso de sincronización de datos con Recombee y la evaluación de las recomendaciones. La secuencia de mensajes “[0/4] Asegurando esquema de propiedades en Recombee… OK Esquema verificado (nombre, categoría, precio).”, “[1/4] Registrando productos en Recombee (secuencial)… OK 50 productos registrados.”, “[2/4] Enviando interacciones de entrenamiento (secuencial)… OK 220 interacciones (55 clientes × 4 compras).”, “[3/4] Esperando procesamiento de Recombee (3 s)…”, y “[4/4] Obteniendo y evaluando recomendaciones… OK 55 escenarios evaluados.” demuestra el flujo completo y exitoso de la ejecución de las pruebas. Esta salida confirma que el sistema realizó todas las etapas necesarias para la validación del módulo de recomendaciones, desde la verificación del esquema de datos hasta el registro de productos, el envío de interacciones de entrenamiento y, finalmente, la obtención y evaluación de las recomendaciones para los 55 escenarios. La sección “MÉTRICAS POR PERFIL” en la Figura 4 replica los datos de la Tabla 4, proporcionando una prueba directa de la computación de estas métricas durante la ejecución de la prueba. La línea “TOTAL 55 19,3% 48,2%” resume el rendimiento general, corroborando los resultados agregados. Esta evidencia de la ejecución automatizada de las pruebas es crucial para la credibilidad de los resultados, ya que muestra que el proceso de evaluación es replicable y consistente, un pilar de la ingeniería de software moderna (Sommerville, 2011).

La validación de los umbrales mínimos establecidos (Precision@5 ≥ 5% y Recall@5 ≥ 10%), confirmada por el *framework* xUnit, se presenta en la Figura 5.

Figura 5. Resultado final de la ejecución de las pruebas de integración, confirmando la aprobación en los umbrales mínimos establecidos

Fuente: Resultados originales de la investigación

La Figura 5 muestra el resultado final de la ejecución de las pruebas de integración, proporcionando una confirmación explícita de que el sistema cumplió con los criterios mínimos de rendimiento establecidos. El mensaje “Ejecución de Prueba Exitosa. Total de pruebas: 1 Aprobadas: 1 Tiempo total: 1,2245 Minutos Prueba.Integration prueba net8.0 éxito (74,4s)” indica que la prueba de integración principal se completó con éxito, sin fallos. La línea “Resumen de la prueba: total: 1; fallidas: 0; exitosas: 1; ignoradas: 0; duración: 74,3s” refuerza la aprobación total. Esta validación formal, realizada por un *framework* de pruebas, es un resultado crítico que atestigua la funcionalidad y la calidad del módulo de recomendaciones. La aprobación en los umbrales mínimos de Precision@5 (≥ 5%) y Recall@5 (≥ 10%) demuestra que el sistema es capaz de generar recomendaciones con un nivel aceptable de relevancia, incluso en los escenarios más desafiantes. Aunque los umbrales son relativamente bajos, sirven como base para garantizar que el algoritmo esté funcionando correctamente y que la integración técnica con Recombee haya sido exitosa. Para las pequeñas empresas, tener un sistema que genera recomendaciones, aunque sea con un rendimiento variable, ya representa un avance significativo en comparación con la ausencia de tal funcionalidad, abriendo puertas a la personalización de la experiencia del cliente y al potencial aumento de las ventas.

Los resultados demuestran un rendimiento satisfactorio para sistemas de recomendación aplicados a catálogos de pequeño tamaño. Ricci, Rokach y Shapira (2015) destacan que el rendimiento de sistemas de recomendación varía significativamente según el volumen de interacciones disponibles por usuario, lo que explica la diferencia de rendimiento observada entre los perfiles evaluados. Los perfiles con comportamiento homogéneo (Lector y Deportista) alcanzaron Precision@5 de 34,5% y Recall@5 de 86,4%, valores cercanos al techo teórico de 40% para el escenario evaluado. En estos casos, el algoritmo de filtrado colaborativo identificó con precisión la similitud entre los usuarios y concentró las recomendaciones en los ítems correctos. En la mayoría de los escenarios de estos perfiles, ambos ítems de *ground truth* fueron recuperados entre las cinco primeras sugerencias, alcanzando Recall@5 = 100% individualmente. Esto sugiere que para empresas con un nicho de mercado bien definido o clientes con patrones de compra consistentes, el sistema Nexsell puede ofrecer recomendaciones altamente eficaces, impulsando la venta cruzada y la satisfacción del cliente.

El perfil Gamer obtuvo un Recall@5 del 31,8%, un rendimiento intermedio explicado por la superposición de dos categorías en el historial de compras. El algoritmo demostró mayor asertividad en los artículos de Informática que en los artículos de Electrónica, lo que resultó en aciertos parciales en la mayoría de los escenarios. Esto indica que, para clientes con intereses en categorías adyacentes, el sistema aún puede generar recomendaciones relevantes, pero con una precisión ligeramente menor. Para optimizar el rendimiento en estos casos, futuras mejoras podrían explorar la ponderación de categorías o la incorporación de más atributos de artículo para refinar el filtrado basado en contenido.

Los perfiles Programador y HomeOffice registraron el menor Recall@5 (18,2% cada uno). En estos perfiles, los dos ítems de *ground truth* pertenecían a categorías distintas, exigiendo que el sistema acertara en ambas simultáneamente. Las recomendaciones de Recombee tendieron a concentrarse en una de las categorías, recuperando solo uno de los dos ítems relevantes en la mayoría de los casos. Este comportamiento es consistente con la literatura, que indica mayor dificultad para algoritmos de filtrado colaborativo cuando el usuario posee intereses heterogéneos entre categorías poco relacionadas (Ricci, Rokach y Shapira, 2015). Para empresas con clientes de intereses muy diversificados, la implicación práctica es que el sistema puede necesitar más datos de interacción o estrategias de recomendación híbridas para mejorar la diversidad y la relevancia de las sugerencias. La media general de Precision@5 de 19,3% y Recall@5 de 48,2% posiciona el sistema dentro del rango de rendimiento esperado para la configuración de datos utilizada, confirmando la viabilidad de la solución para catálogos de pequeño tamaño.

Además de las pruebas automatizadas, el módulo de recomendaciones fue validado funcionalmente a través del *endpoint* GET `/api/recomendaciones/cliente/{clienteId}/completo` de la API REST. Este *endpoint* devuelve los productos recomendados enriquecidos con los datos de registro del sistema, incluyendo nombre del producto, categoría y precio unitario. La respuesta del *endpoint* para un cliente específico, como se ilustra en la Figura 6, confirma que el flujo completo de integración está operativo: las compras registradas en el sistema se envían automáticamente a Recombee, que procesa el historial y devuelve sugerencias personalizadas en tiempo real.

Figura 6. Respuesta del endpoint de recomendaciones de la API REST devolviendo productos personalizados para un cliente basándose en su historial de compras.

Fuente: Resultados originales de la investigación.

La Figura 6 muestra la respuesta JSON del *endpoint* `/api/recomendaciones/cliente/{clienteId}/completo`, demostrando la validación funcional del módulo de recomendaciones inteligentes. El cuerpo de la respuesta muestra una lista de objetos JSON bajo la clave “recomendaciones”, donde cada objeto representa un producto sugerido. Para cada producto, se retornan el `productoId`, `productoNome`, `categoria` y `precoUnitario`. Por ejemplo, la primera recomendación es un “Mouse Inalámbrico Logitech MX Master” de la categoría “Periféricos” con precio unitario de 599.9. Otras recomendaciones incluyen un “Notebook Dell XPS” de la categoría “Informática” y un “Teclado Mecánico Logitech” también de “Periféricos”. Esta estructura de datos enriquecida es crucial para el *frontend*, ya que permite mostrar las recomendaciones de forma completa y útil para el cliente, sin la necesidad de realizar llamadas adicionales al *backend* para obtener detalles del producto. La presencia de diferentes categorías en las recomendaciones (Periféricos, Informática) sugiere que el algoritmo está considerando una variedad de productos, aunque la diversificación puede ser un desafío para perfiles heterogéneos, como se discutió anteriormente. La validación funcional del *endpoint* es un resultado práctico que confirma la capacidad del sistema de entregar sugerencias personalizadas en tiempo real, un recurso de inteligencia artificial que puede transformar la experiencia de compra en pequeñas empresas, haciéndolas más competitivas al ofrecer un servicio similar al de grandes *e-commerces*.

En resumen, el sistema Nexsell representa una solución tecnológica que integra control operativo e inteligencia de datos de forma accesible para pequeñas empresas. La adopción de principios de Domain-Driven Design y Clean Architecture, junto con una estrategia de pruebas integral, garantizó la construcción de un sistema robusto, mantenible y extensible. La integración con servicios externos como ViaCEP y Recombee demostró la capacidad del sistema de aprovechar tecnologías avanzadas sin incurrir en la complejidad de desarrollarlas desde cero. Los resultados de la evaluación del módulo de recomendaciones, aunque con datos sintéticos, confirmaron la eficacia del algoritmo en identificar patrones de consumo y generar sugerencias relevantes, especialmente para perfiles de clientes con intereses homogéneos. La resiliencia frente a fallos externos, garantizada por el aislamiento de las integraciones, es un resultado arquitectónico crucial que protege las operaciones centrales del negocio.

La principal limitación metodológica identificada fue el uso de datos sintéticos para la evaluación de las recomendaciones. Aunque este enfoque fue suficiente para validar la integración técnica y el funcionamiento del algoritmo, no sustituye una evaluación con datos reales de operación en un entorno de producción. Los datos reales podrían ofrecer *insights* adicionales sobre el rendimiento en condiciones de uso real, incluyendo la interacción de los usuarios con las recomendaciones y el impacto en las métricas de negocio. Como trabajos futuros, se sugiere la validación del sistema con datos reales de operación en entorno de producción, la expansión del módulo de informes con indicadores de rendimiento de las recomendaciones (por ejemplo, tasa de clics, tasa de conversión de las recomendaciones) y la evaluación del impacto de las sugerencias en el comportamiento de compra de los clientes a lo largo del tiempo. Estos pasos futuros serían cruciales para refinar el sistema y maximizar su valor para las pequeñas y medianas empresas.

4. Conclusión

Se concluye que el objetivo se alcanzó, presentando el desarrollo de Nexsell, un sistema inteligente de gestión de ventas que integra funcionalidades operativas tradicionales con recursos de recomendaciones personalizadas. La solución demostró ser accesible y robusta, optimizando las operaciones y mejorando la experiencia del cliente en pequeñas y medianas empresas a través de sugerencias basadas en su historial de compras. La arquitectura adoptada, basada en Domain-Driven Design y Clean Architecture, garantizó la construcción de un sistema mantenible, extensible y resiliente, con integraciones exitosas a servicios externos como ViaCEP y Recombee. Las pruebas automatizadas confirmaron la robustez de la lógica de negocio y la eficacia de la integración. El módulo de recomendaciones, incluso con datos sintéticos, presentó una Precision@5 media de 19,3% y Recall@5 de 48,2%, con un rendimiento superior para perfiles de clientes con comportamiento de compra homogéneo, validando la capacidad del sistema para generar sugerencias relevantes e impulsar ventas.

La principal limitación metodológica de este trabajo reside en la utilización de datos sintéticos para la evaluación de las recomendaciones. Aunque este enfoque ha sido crucial para validar la integración técnica y el funcionamiento del algoritmo, no refleja plenamente el rendimiento en un entorno de producción con datos reales, lo que podría ofrecer *insights* más profundos sobre la interacción de los usuarios y el impacto en las métricas de negocio. Como estudios futuros, se sugiere la validación del sistema con datos reales de operación, la expansión del módulo de informes para incluir indicadores de rendimiento de las recomendaciones, como tasa de clics y conversión, y la evaluación del impacto de las sugerencias en el comportamiento de compra de los clientes a lo largo del tiempo. Estos próximos pasos son esenciales para la mejora continua de Nexsell y la maximización de su valor para el mercado.

Referencias Bibliográficas

EVANS, E. Domain-Driven Design: Tackling Complexity in the Heart of Software. Boston: Addison-Wesley, 2003.

GIL, A. C. Como elaborar projetos de pesquisa. 4. ed. São Paulo: Atlas, 2002.

LAUDON, K. C.; LAUDON, J. P. Sistemas de Informação Gerenciais: Administrando a Empresa Digital. 17. ed. São Paulo: Pearson; Porto Alegre: Bookman, 2023.

OPENAPI INITIATIVE. A Short History of the OpenAPI Initiative and the OpenAPI Specification. 2015. Disponível em: https://www.openapis

RICCI, F.; ROKACH, L.; SHAPIRA, B. Recommender Systems Handbook. 2. ed. New York: Springer, 2015.

RICHARDS, M.; FORD, N. Fundamentos de Arquitetura de Software: Uma Abordagem de Engenharia. São Paulo: Novatec Editora, 2020.

SOMMERVILLE, I. Engenharia de Software. 9. ed. São Paulo: Pearson Prentice Hall, 2011.

VERNON, V. Implementing Domain-Driven Design. Boston: Addison-Wesley, 2013.

Artículo originado del Trabajo de Conclusión de Curso de la Especialización en Ingeniería de Software del MBA USP/Esalq

Para saber más sobre el curso, haga clic aquí y acceda a la plataforma MBX Academy

También te puede interesar

27 de octubre de 2026

Eficacia de la política monetaria del Banco Central de Brasil y sus posibles costos sociales (1999-2024)

La conducción de la política monetaria en Brasil, particularmente bajo el Régimen de Metas de Inflación, ha sido ampliamente debatida debido a sus posibles impactos sobre la inflación y la actividad económica. El estudio tuvo como objetivo evaluar la eficacia de la política monetaria brasileña, conducida por la tasa Selic, en el control de la inflación, e investigar sus posibles costos sociales en el período de 1999 a 2024. Para ello, se utilizaron datos trimestrales de Producto Interno Bruto (PIB), Índice de Precios al Consumidor Amplio (IPCA), tasa Selic y tipo de cambio, extraídos del Banco Central de Brasil. La metodología empleó un modelo Vectorial de Corrección de Errores (VECM), precedido por pruebas de estacionariedad y cointegración, y complementado por análisis de Función de Respuesta al Impulso y Descomposición de la Varianza. Los resultados indicaron que la inflación presentó un fuerte componente inercial, siendo predominantemente explicada por su propia dinámica, mientras que los choques en la tasa de interés y en el tipo de cambio demostraron un impacto estadísticamente limitado sobre el IPCA. Adicionalmente, se verificó que el PIB no respondió de forma significativa a variaciones en la Selic, sugiriendo baja sensibilidad de la actividad económica a la política monetaria en el período analizado. En síntesis, se concluyó que la política monetaria demostró eficacia limitada en el control de la inflación, sin, sin embargo, generar costos sociales directos y significativos sobre el Producto Interno Bruto, que actúa como principal motor de la generación de empleo.

Palabras clave: Cointegración; Econometría; Inercia inflacionaria; Metas de inflación; Producto Interno Bruto.

27 de octubre de 2026

Eficiencia financiera y mitigación de riesgos en departamentos jurídicos

La investigación exploró cómo los mecanismos de gobernanza y los controles internos, aplicados a las prácticas de “Legal Operations”, pueden fortalecer la gestión financiera y la previsibilidad presupuestaria de un departamento legal en una empresa multinacional. El estudio tuvo como objetivo diagnosticar puntos críticos del ciclo presupuestario legal, desde la previsión hasta el pago, e identificar mejoras de procesos, indicadores y responsabilidades entre los departamentos legal y financiero. Para ello, se realizó una investigación aplicada de naturaleza cualitativa, configurada como estudio de caso. La recopilación de datos incluyó entrevistas con profesionales de las áreas legal y financiera, análisis documental de hojas de cálculo de costos (2022-2024) y políticas de cumplimiento, además de mapeo del flujo de gastos legales. Los resultados revelaron debilidades en la coordinación interdepartamental, especialmente en la definición de centros de costos y en la utilización de instrumentos de control presupuestario. Se observaron lagunas en el seguimiento de procesos y en la integración de información de bufetes externos, además de oportunidades para la automatización de rutinas y el perfeccionamiento de indicadores de gestión. La previsibilidad presupuestaria se vio afectada por factores exógenos, como la dinámica del Poder Judicial, y endógenos, como la calidad de la información y la gobernanza del ciclo presupuestario. Se concluyó que la previsibilidad presupuestaria depende de la madurez de la gobernanza aplicada a los procesos, datos y rutinas operativas. Se propuso un modelo de gobernanza y control para el presupuesto legal, con enfoque en la estandarización de procesos, el fortalecimiento del seguimiento y la mejora de la toma de decisiones, incluyendo mapeo de procesos, matriz de riesgos y controles, e indicadores de desempeño.

Palabras clave: Automatización; Controles internos; Gobernanza corporativa; Legal Operations; Previsibilidad presupuestaria.

27 de octubre de 2026

Comparación de modelos de riesgo de prepago en carteras de crédito a tipo fijo

El riesgo de liquidación anticipada en carteras de crédito prepagadas constituyó un desafío relevante para la Gestión de Activos y Pasivos (ALM) en instituciones financieras, por generar asimetrías de flujo de caja e ineficiencias en estrategias de cobertura. El trabajo tuvo como objetivo evaluar comparativamente el desempeño predictivo de modelos econométricos y estadísticos tradicionales frente a algoritmos de aprendizaje automático en la estimación de la Tasa de Mortalidad Mensual (SMM). Para ello, se utilizó una base de datos real de operaciones de crédito originadas entre 2016 y 2025, totalizando aproximadamente 500 millones de observaciones. Se evaluaron modelos como CPR Histórico, Regresión Beta, Regresión Cuantílica, Regresión Logística, Riesgos Proporcionales de Cox y LightGBM, con el rendimiento medido por el Error Absoluto Medio (MAE) y validado mediante validación cruzada temporal con ventana expandida. Los resultados demostraron la superioridad de los enfoques no lineales, con el modelo LightGBM presentando el mejor rendimiento en el período de prueba (ene/2024 a jul/2025), reduciendo el MAE en un 34,21% en relación con el benchmark histórico. Adicionalmente, se emplearon técnicas de interpretabilidad basadas en valores SHAP y análisis de supervivencia para identificar el spread de la tasa de contrato, la tasa de mercado y la edad del título como los principales determinantes económicos de la anticipación. La aplicación del modelo propuesto mejoró la precisión de las estimaciones de flujo de caja y ofreció evidencias favorables a la mejora del cálculo de la duración efectiva y del dimensionamiento del colchón de liquidez institucional, sugiriendo que modelos más flexibles pueden optimizar la gestión de ALM.

Palabras clave: Aprendizaje automático; Gestión de ALM; Cobertura; Modelado financiero; Riesgo de interés.

27 de octubre de 2026

Arquitectura imperativa vs. reactiva: impacto en la depuración y corrección de errores en el desarrollo móvil de iOS

El desarrollo de aplicaciones móviles para iOS puede realizarse bajo arquitecturas imperativas y reactivas, impactando directamente las prácticas de depuración y mantenimiento. El objetivo fue establecer el impacto de la elección arquitectónica en la depuración y corrección de errores en aplicaciones iOS, evaluando la detectabilidad automática de fallos, la trazabilidad de los informes y la utilidad de los logs. Se llevó a cabo una investigación experimental, en la que se desarrollaron dos aplicaciones nativas funcionalmente equivalentes con UIKit (imperativa) y SwiftUI/Combine (reactiva). Se insertaron cuatro escenarios de error controlados, clasificados en crashes explícitos y errores silenciosos. Se recopilaron datos con Firebase Crashlytics y Xcode Debugger en cuarenta sesiones, y estos fueron analizados por estadística descriptiva y análisis de contenido. Los resultados revelaron que, para inconsistencias de estado, la arquitectura UIKit generó crash inmediato y reporte automático, mientras que SwiftUI suprimió el crash y produjo una advertencia silenciosa invisible a herramientas automáticas. Para el desempaquetado forzado, la arquitectura se mostró irrelevante. En escenarios silenciosos, ninguna arquitectura ofreció observabilidad automática, lo que evidenció limitaciones de las herramientas. Se concluyó que la arquitectura reactiva, al abstraer mecanismos de control de estado, redujo errores explícitos, pero introdujo fallos silenciosos con menor trazabilidad. La decisión arquitectónica debe considerar las implicaciones para el monitoreo en producción, exigiendo instrumentación manual de logs en proyectos SwiftUI/Combine para errores que serían capturados automáticamente en UIKit.

Palabras clave: Combine; Mantenibilidad; Observabilidad; SwiftUI; UIKit.

27 de octubre de 2026

CRM EN LA RETENCIÓN DE DATOS PARA EL ANÁLISIS DEL POTENCIAL DEL CLIENTE EN EL SECTOR B2B DE SALUD

La gestión comercial en el sector B2B de la salud enfrentó desafíos constantes, exigiendo visión estratégica y atención aguda para la entrega de resultados. Se investigó cómo la implementación del sistema CRM (Customer Relationship Management) colaboró para mitigar la pérdida de información histórica y potenciar la retención de clientes frente al costo de vender. Se adoptó un enfoque cualitativo-cuantitativo, de carácter exploratorio-descriptivo, y los datos se recolectaron por medio de un cuestionario respondido por 42 profesionales del área comercial, insertos en la industria o en empresas del segmento de la salud. Los resultados revelaron que, aunque el 71,4% de los entrevistados utilizaban CRM informatizado, la cultura organizacional impuso una fuerte resistencia, confirmada por el 57,1% de los profesionales que dependían de métodos manuales, como agendas y hojas de cálculo aisladas, para el registro y la retención de los datos. Se evidenció también una brecha en la capacitación, visto que el 24,4% de los entrevistados raramente o nunca recibieron entrenamientos específicos. La investigación infirió que la subnotificación de datos no provino solo de la falta de tecnología o por falla tecnológica, sino por la existencia de una deficiencia en la gestión estratégica de personas y procesos. Se reforzó la visión de la necesidad de una gestión integrada para generar inteligencia competitiva y previsibilidad en las ventas, y se alertó sobre la necesidad de entrenamientos y capacitación más frecuentes. La mitigación del costo de vender y la potenciación de la retención de clientes dependen de la integración consistente entre capital humano y tecnología, generando activos gerenciales para aumentar la producción comercial y la retención de datos estratégicos.

Palabras clave: Capacitación; Estrategia de ventas; Gestión de clientes; Gestión estratégica; Inteligencia comercial.

27 de octubre de 2026

Evaluación de la aplicación de Scrum en la mejora de la eficiencia y adaptabilidad en proyectos de tecnología

La creciente complejidad de los proyectos de tecnología exigió enfoques capaces de equilibrar control, eficiencia y adaptabilidad a cambios constantes, dado que los modelos tradicionales de gestión presentaron limitaciones en entornos dinámicos. Se evaluó la gestión de proyectos de tecnología antes de la implementación de un método ágil, se propusieron mejoras basadas en prácticas iterativas y se reevaluó el desempeño post-implementación, buscando identificar ganancias en eficiencia operativa y adaptabilidad a lo largo del ciclo de vida del proyecto. La investigación empleó un estudio de caso descriptivo, de enfoque cualitativo, en dos empresas del sector tecnológico. Se recolectaron datos por medio de formularios estructurados aplicados antes y después de la intervención, complementados por análisis documental y observación sistemática a lo largo de noventa días de aplicación de la solución. Los resultados evidenciaron una mejora consistente en la flexibilidad de la planificación, un mayor alineamiento con las necesidades del cliente, un aumento de la previsibilidad de las entregas y un perfeccionamiento de la productividad de los equipos. Una ganancia de productividad fue el indicador más expresivo, con un 85,7% de concordancia total sobre la mejora del desempeño de los equipos tras la adopción del *framework*. Se concluyó que la implementación estructurada del método perfeccionó la gestión de los proyectos analizados, reforzando la capacidad de respuesta a cambios y promoviendo una mayor generación de valor para el negocio.

Palabras clave: Adaptación organizacional; Entrega incremental; Gestión ágil; Planificación iterativa; Productividad de equipos.

27 de octubre de 2026

Desafíos en la operacionalización del crédito rural: percepción de empleados de una institución financiera en el Sudeste brasileño

El crédito rural constituye un instrumento crucial de la política agrícola brasileña, esencial para la viabilización de los ciclos productivos agropecuarios y el desarrollo del sector. A pesar de su relevancia, la operacionalización del crédito rural enfrentó desafíos significativos en las instituciones financieras, derivados de la complejidad normativa, burocracia documental y riesgos inherentes a la actividad agrícola. En este contexto, el estudio objetivó analizar la percepción de empleados de una institución financiera sobre el proceso de liberación del crédito rural, identificando dificultades, desafíos operacionales y oportunidades de mejora. Se adoptó un enfoque cuantitativo de carácter descriptivo, con aplicación de cuestionario estructurado a 37 empleados que actúan directa o indirectamente en la concesión de crédito rural. La muestra fue intencional, y los datos fueron analizados de forma descriptiva, con apoyo de tabulación y representación gráfica. Los resultados indicaron que los principales desafíos enfrentados por las instituciones financieras se relacionaron con el exceso de burocracia, exigencia de garantías, análisis de riesgo, limitación de autonomía de los agentes y necesidad de mayor capacitación técnica. Factores externos, como endeudamiento de los productores, eventos climáticos adversos y elevados costos de producción, también impactaron negativamente el acceso al crédito. Se concluyó que el perfeccionamiento de los procesos internos, aliado a la capacitación continua de los profesionales y a la articulación entre agentes reguladores e instituciones financieras, puede contribuir a tornar el crédito rural más eficiente y accesible.

Palabras clave: Agronegocio; Burocracia; Política agrícola.

27 de octubre de 2026

Disonancia Institucional y Barreras de Privacidad en la Adopción del DREX en Brasil

Se analizó la percepción de diferentes partes interesadas sobre la implementación del DREX (Real Digital) en el sistema financiero brasileño, centrándose en los impactos esperados en seguridad, privacidad y adopción. El estudio tuvo como objetivo investigar las percepciones de distintos grupos sobre los riesgos y oportunidades del DREX, ofreciendo información para la toma de decisiones de instituciones financieras y reguladores. Para ello, se aplicaron tres cuestionarios a 415 participantes, divididos entre profesionales del sector financiero y tecnológico (81), inversores en criptoactivos (149) y público general (185). Los datos recopilados se tabularon y sometieron a análisis descriptivo cuantitativo, complementado por un análisis comparativo entre los grupos. Se identificó una disonancia institucional consistente, donde la confianza técnica en el Banco Central superó la confianza política en el Gobierno Federal. Entre los inversores en criptoactivos, se observó un rechazo ideológico al DREX, impulsado por preocupaciones sobre la trazabilidad y el control gubernamental, con una relación inversa entre conocimiento técnico y intención de adopción. El público general demostró una disposición pragmática, condicionada a la ausencia de una percepción explícita de vigilancia financiera, un patrón denominado “Brecha Pix-Privacidad”. La privacidad financiera emergió como el principal obstáculo transversal a la adopción en todos los grupos, y un incentivo de cashback del 1% resultó insuficiente para superar esta resistencia. Se concluyó que la adopción voluntaria del DREX tiende a ser fragmentada y condicional, dependiendo de iniciativas estructuradas de comunicación, educación financiera digital y arquitecturas de privacidad auditables que refuercen la credibilidad e independencia del Banco Central ante la sociedad.

Palabras clave: CBDC; Confianza institucional; Percepción de riesgo; Trazabilidad; Sistema financiero.

27 de octubre de 2026

Aplicación de Six Sigma DMAIC y Gemba Walk para el análisis de la disponibilidad mecánica de equipos móviles

La gestión ineficiente de las rutinas de mantenimiento de equipos móviles en obras de infraestructura había evidenciado impactos directos en los indicadores de disponibilidad mecánica y en el desempeño productivo. El estudio objetivó analizar la disponibilidad mecánica de equipos en una obra de superestructura vial, empleando el ciclo Six Sigma DMAIC y la práctica del Gemba Walk. La metodología adoptada se caracterizó como un estudio de caso aplicado, de naturaleza mixta. Se realizó la recolección y tratamiento de datos de apuntes operacionales, se calcularon indicadores de disponibilidad mecánica y se condujeron análisis cualitativos por medio del Diagrama de Ishikawa. En la fase Define, se mapearon las rutinas y se recolectaron datos históricos. En Measure, se estandarizaron los registros de pérdidas mecánicas y se calculó la disponibilidad mecánica, identificando equipos críticos con desempeño inferior al 85%. La etapa Analyze utilizó el Diagrama de Ishikawa para identificar causas raíz, y en la fase Improve, se estructuraron acciones de mejora y un cronograma de implementación. Los resultados revelaron que ciertas familias de equipos presentaron desempeño por debajo del nivel aceptable, destacándose la planta de asfalto por su indisponibilidad del 79%, impactando directamente la producción. Las principales causas identificadas incluyeron la ausencia de planificación preventiva, fallas en la gestión de mantenimiento y la indisponibilidad de insumos críticos. Se concluyó que la aplicación integrada de las metodologías permitió no solo identificar las causas de la baja disponibilidad, sino también estructurar un modelo de gestión orientado a la confiabilidad operacional y a la mejora continua, proponiendo la transición de un modelo reactivo a un mantenimiento proactivo y basado en campo.

Palabras clave: Confiabilidad operacional; Gestión de activos; Indicadores de desempeño; Mantenimiento; Mejora continua.