Skip to main content

Requisitos No Funcionales Globales

Los Requisitos No Funcionales (RNF) Globales definen las restricciones transversales de ingeniería de software que aplican de forma integral a toda la plataforma MDX-Cloud, independientemente del módulo o área de negocio involucrada. Estas directivas garantizan que el sistema sea robusto, seguro, confiable, escalable y mantenible a lo largo de todo su ciclo de vida operativo.

A diferencia de los RNF específicos de cada módulo, los requisitos aquí listados establecen los estándares mínimos de calidad y las decisiones arquitectónicas globales que deben ser honradas por todos los componentes del sistema.


Resiliencia y Disponibilidad

  • RNF-GLOBAL-01 (Resiliencia Operativa Offline-First): Las interfaces de mostrador y las aplicaciones de picking en almacén deben mantener su capacidad de operación, lectura de catálogos y registro local a través de IndexedDB (Dexie.js) aun si el enlace de internet con el VPS central se interrumpe por completo, garantizando cero caídas operativas en las sucursales.
  • RNF-GLOBAL-02 (Sincronización Controlada al Reconectarse): Una vez que la conexión con el servidor central sea restablecida, el sistema deberá sincronizar automáticamente todas las operaciones capturadas en modo offline, aplicando validaciones de integridad y resolución de conflictos de forma transparente para el usuario.
  • RNF-GLOBAL-03 (Disponibilidad de la Plataforma): La arquitectura del sistema deberá estar diseñada para minimizar el tiempo de inactividad no planificada, garantizando que las áreas críticas de operación (mostrador, almacén, ventas) cuenten con mecanismos de continuidad que permitan sostener la actividad comercial ante incidencias de infraestructura.

Integridad y Consistencia Transaccional

  • RNF-GLOBAL-04 (Garantía de Idempotencia Transaccional): Toda petición de inserción de pedidos o facturación enviada desde el frontend desacoplado deberá portar un identificador único UUIDv4 generado en el cliente. El backend de .NET 10 rechazará cualquier petición duplicada con el mismo ID, blindando el sistema de dobles cargos por intermitencias de red celular.
  • RNF-GLOBAL-05 (Atomicidad de Operaciones Críticas): Las operaciones que afecten simultáneamente múltiples registros o módulos (inventario, facturación, cobranza, auditoría) deberán ejecutarse dentro de transacciones atómicas que garanticen que el cambio se aplique completamente o se revierta en su totalidad ante cualquier error, evitando estados inconsistentes en la base de datos.
  • RNF-GLOBAL-06 (Inmutabilidad del Historial de Auditoría): Los registros de auditoría, bitácoras de operaciones, firmas de transacción y evidencias digitales no podrán ser eliminados físicamente ni modificados directamente. Cualquier corrección deberá ejecutarse mediante movimientos compensatorios que preserven el historial completo.

Rendimiento

  • RNF-GLOBAL-07 (Rendimiento de Carga de Alta Densidad): Las consultas de inventario masivo y las búsquedas por código de barras de medicamentos deben resolverse en un tiempo menor a 200 milisegundos. El motor PostgreSQL implementará indexación estructurada de tipo B-Tree sobre las columnas clave de productos, lotes y perfiles de cliente.
  • RNF-GLOBAL-08 (Asincronía para Procesos No Críticos): Los procesos de análisis, generación de reportes, envío de notificaciones, cálculos de sugerencias de compra y sincronización de datos de baja prioridad deberán ejecutarse de forma asíncrona mediante Hangfire respaldado por PostgreSQL, evitando bloquear la interfaz de usuario o degradar los tiempos de respuesta de las operaciones principales.
  • RNF-GLOBAL-09 (Optimización de Consultas a Base de Datos): Toda consulta que involucre grandes volúmenes de datos deberá estar optimizada mediante índices adecuados, paginación del lado del servidor y proyecciones de columnas, evitando la recuperación de datos innecesarios que afecten el rendimiento general de la plataforma.

Seguridad

  • RNF-GLOBAL-10 (Protocolo Seguro de Comunicación): Toda la comunicación entre la SPA de React y la Web API de .NET 10 se realizará bajo el protocolo criptográfico seguro HTTPS (TLS 1.3), cifrando completamente el tráfico de datos en tránsito para proteger la información comercial, fiscal y personal gestionada por la plataforma.
  • RNF-GLOBAL-11 (Autenticación Stateless con JWT): La autenticación se manejará de forma stateless a través de tokens JWT firmados transmitidos mediante cookies HttpOnly, mitigando vulnerabilidades de inyección SQL, Cross-Site Scripting (XSS) y accesos cruzados ilegítimos.
  • RNF-GLOBAL-12 (Control de Acceso Basado en Roles — RBAC): Cada endpoint de la API de .NET 10 deberá validar que el token de sesión del usuario contenga los permisos necesarios para ejecutar la operación solicitada. El sistema deberá aplicar el principio de mínimo privilegio, garantizando que cada rol solo acceda a las capacidades estrictamente necesarias para su función.
  • RNF-GLOBAL-13 (Protección de Datos Sensibles en Reposo): La información personal, fiscal y bancaria de empleados y clientes deberá almacenarse en el esquema personal de PostgreSQL con controles de acceso lógico adicionales, segregada del resto de los dominios operativos.
  • RNF-GLOBAL-14 (Gestión Segura de Credenciales): Las contraseñas de usuario nunca deberán almacenarse en texto plano. El sistema implementará algoritmos de hash con salt (ej. bcrypt o Argon2) para el resguardo seguro de credenciales de acceso.

Trazabilidad y Auditoría

  • RNF-GLOBAL-15 (Registro Universal de Operaciones Críticas): Toda acción que implique creación, modificación, autorización, cancelación o eliminación de registros en los dominios de ventas, inventario, facturación, crédito y personal deberá quedar registrada en el esquema auditoria de PostgreSQL, incluyendo: usuario_id, empleado_id, modulo, accion, entidad_afectada, valor_anterior, valor_nuevo, timestamp e ip_origen.
  • RNF-GLOBAL-16 (No Repudio de Transacciones): La plataforma deberá conservar evidencia suficiente para asociar de forma irrefutable cada operación crítica con el usuario que la ejecutó, impidiendo que una acción registrada pueda ser atribuida a otro empleado o desconocida por su autor.
  • RNF-GLOBAL-17 (Retención Histórica de Datos): Los registros de transacciones, documentos fiscales, movimientos de inventario y bitácoras de auditoría deberán conservarse durante el periodo que establezcan las disposiciones fiscales y sanitarias aplicables a la distribución de medicamentos en México.

Arquitectura y Escalabilidad

  • RNF-GLOBAL-18 (Arquitectura Monolito Modular con DDD Ligero): El backend de .NET 10 se estructurará como un Monolito Modular organizado en dominios de negocio independientes (catalogos, fiscal, ventas, compras, wms, credito_cobranza, tesoreria, cfdi, personal, auditoria) con aislamiento lógico mediante esquemas de PostgreSQL. Cada módulo deberá ser autónomo internamente pero comunicarse con los demás únicamente a través de interfaces y contratos definidos.
  • RNF-GLOBAL-19 (Escalabilidad Vertical y Horizontal): La plataforma deberá estar diseñada para soportar el crecimiento de sucursales, usuarios, transacciones y volúmenes de datos sin requerir rediseños estructurales. La arquitectura deberá permitir la adición de capacidad de cómputo (escalabilidad vertical en VPS) y la eventual distribución de carga sin cambios disruptivos en la lógica de negocio.
  • RNF-GLOBAL-20 (Separación Frontend-Backend): La SPA de React + Vite + TypeScript y la Web API de .NET 10 deberán operar como artefactos desplegables independientes, comunicándose exclusivamente a través de contratos de API RESTful bien definidos. Ninguna lógica de negocio crítica deberá residir exclusivamente en el frontend.
  • RNF-GLOBAL-21 (Mantenibilidad del Código): El código del sistema deberá adherirse a convenciones de nomenclatura consistentes, aplicar principios SOLID y seguir las guías de estilo establecidas para .NET (C#) y TypeScript (React), facilitando la incorporación de nuevos desarrolladores, la corrección de errores y la extensión de funcionalidades.

Multisucursal y Multiusuario

  • RNF-GLOBAL-22 (Aislamiento Lógico por Sucursal): Los datos operativos (inventario, pedidos, ventas, caja) de cada sucursal deberán estar identificados y segmentados lógicamente dentro de la base de datos, garantizando que los usuarios de una sucursal no puedan visualizar ni afectar los datos de otra sin autorización explícita.
  • RNF-GLOBAL-23 (Control de Concurrencia Optimista): En escenarios donde múltiples usuarios puedan modificar los mismos registros de forma simultánea (inventario, pedidos, límites de crédito), el sistema deberá implementar mecanismos de control de concurrencia que prevengan condiciones de carrera y garanticen la consistencia de los datos sin bloqueos excesivos.
  • RNF-GLOBAL-24 (Propagación de Información en Tiempo Real): Los cambios en existencias, estados de pedidos, autorizaciones y bloqueos operativos deberán propagarse oportunamente hacia todos los usuarios y módulos afectados, asegurando que las decisiones se tomen siempre sobre información actualizada.

Pruebas y Calidad

  • RNF-GLOBAL-25 (Cobertura de Pruebas Unitarias): La lógica de negocio del backend deberá estar cubierta por pruebas unitarias implementadas con xUnit, Moq y FluentAssertions, garantizando que los algoritmos críticos (FEFO, FIFO, División de Folios, Sugerencia de Compra) se comporten de forma determinista y predecible.
  • RNF-GLOBAL-26 (Pruebas de Integración con Base de Datos Real): Las pruebas de integración deberán ejecutarse contra instancias reales de PostgreSQL en contenedores (Testcontainers) para validar la correcta interacción entre la lógica de negocio y la base de datos, incluyendo escenarios de concurrencia y condiciones de borde.
  • RNF-GLOBAL-27 (Pruebas End-to-End con Simulación Offline): El proyecto deberá incluir pruebas E2E automatizadas con Playwright que cubran los flujos críticos de la plataforma, incluyendo escenarios de interrupción y restablecimiento de conectividad para validar el comportamiento de Dexie.js y la sincronización posterior.
  • RNF-GLOBAL-28 (Pruebas de Estrés y Concurrencia): Se deberán ejecutar pruebas de carga con k6 para simular concurrencia masiva de usuarios y validar que el sistema mantiene sus umbrales de rendimiento bajo condiciones de alta demanda operativa.
  • RNF-GLOBAL-29 (Tolerancia Cero a Errores en CI/CD): Los pipelines de integración y despliegue continuo deberán configurarse con tolerancia cero a fallos de compilación, pruebas fallidas o vulnerabilidades de seguridad detectadas, garantizando que únicamente código verificado y estable llegue a los entornos de producción.