Requisitos no funcionales
Qué pedía el documento y qué se hizo de verdad. Sin adornos: lo que falta está marcado como falta.
Seguridad
| Requisito | Estado |
|---|---|
| Control de acceso por roles | Hecho. Cinco roles, directiva @auth en el contrato y guardas en el servidor |
| Autenticación segura | Hecho. Argon2id, JWT de vida corta, refresh rotatorio con detección de reutilización |
| Cifrado de información sensible | Parcial. TLS en tránsito; sin cifrado en reposo |
| Respaldo diario | NO hecho. Ver Deuda técnica |
Detalle en Seguridad.
Rendimiento
| Requisito | Estado |
|---|---|
| Carga < 3 segundos | Hecho. El bundle web va dividido por ruta; la consulta más pesada del tablero resuelve en una sola pasada |
| Múltiples usuarios simultáneos | Hecho por diseño. Rust asíncrono con pool de conexiones |
| Disponibilidad 24/7 | NO. Corre en una PC, sin servicio ni reinicio automático |
Escalabilidad
| Requisito | Nota |
|---|---|
| Arquitectura de microservicios | No se siguió, a propósito. Ver ADR-01 Rust a medida en lugar de SuiteCRM |
| Integración futura con ERP | El contrato GraphQL y la importación por Excel son las puertas |
| Integración con aplicaciones móviles | Hecho. La app móvil consume el mismo BFF |
Usabilidad
| Requisito | Estado |
|---|---|
| Interfaz intuitiva | Hecho |
| Diseño responsive | Hecho |
| Compatible con celulares, tablets y PC | Hecho: web responsive más app nativa |
Y algo que el documento no pedía y se hizo igual: accesibilidad verificada, no prometida. Ver Accesibilidad.
Infraestructura
El documento pedía 8 GB de RAM, 4 núcleos y SSD de 100 GB. El sistema corre con mucho menos: el binario de Rust ocupa decenas de megas en memoria. La base de demostración completa pesa 26 MB.
Siguiente: Trazabilidad de requisitos