Saltar a contenido

Requisitos no funcionales

Requisitos transversales que aplican a todo el sistema.


Interfaz y experiencia

Requisito Descripción
Simplicidad Interfaz muy simple, sin pantallas sobrecargadas
Textos cortos Comunicación breve y directa
Mobile-first Diseño optimizado primero para móvil
Alta legibilidad Tipografía clara, contraste adecuado
Soporte para imágenes Tutoriales con capturas y guías visuales

Administración y operación

Requisito Descripción
Panel administrativo editable Contenido de aduana, tutoriales y tarifas editables sin código
Historial y auditoría Registro de todos los cambios relevantes
Exportación de reportes Datos exportables para análisis

Comunicación

Requisito Descripción
Notificaciones push Para eventos clave del paquete
Notificaciones por email Alternativa o complemento
WhatsApp (futuro) Integración posible para notificaciones

Seguridad y datos

Requisito Descripción
Protección de datos personales Cifrado, accesos restringidos, cumplimiento básico
Autenticación segura Login con contraseña robusta, recuperación de cuenta
Control de permisos Roles diferenciados (usuario, operador, admin)

Moneda y costos

Requisito Descripción
Soporte multimoneda Compras en USD como base, posible expansión
Tarifas variables Estructura flexible para manejar costos cambiantes
Cargos adicionales Modelado desde el inicio para no reestructurar después

Rendimiento

Requisito Descripción
Tiempo de respuesta API móvil debe responder en menos de 500ms para consultas comunes
Listados paginados Ningún listado devuelve más de 50 registros por página
Imágenes optimizadas Fotos comprimidas, thumbnails para previews
Carga diferida Imágenes fuera de pantalla se cargan al hacer scroll
Cache de datos Tarifas y categorías en Redis con TTL adecuado

Archivos y almacenamiento

Requisito Descripción
Subida directa a MinIO App sube archivos con URL prefirmada, no pasan por FastAPI
Validación de MIME type Se valida antes de aceptar la subida
Tamaño máximo por tipo KYC: 10 MB, fotos: 50 MB, avatar: 5 MB
Thumbnails Fotos de paquetes generan thumbnail de 200x200
URLs firmadas Archivos privados solo accesibles con URL temporal (5 min)
Log de acceso Cada lectura o descarga de documento KYC queda registrada
Separación de buckets KYC, evidencias, fotos y contenido público en buckets distintos

Seguridad

Requisito Descripción
Rate limiting Login: 5 intentos/min. OTP: 3/min. Endpoints: 60/min por usuario
Cifrado de secretos Contraseñas, API keys y tokens cifrados (no en texto plano)
URLs firmadas Archivos sensibles solo con URL temporal y log de acceso
Separación de permisos Operador vs admin vs usuario vs sysadmin
Cifrado en reposo MinIO con cifrado si el proveedor lo soporta
HTTPS obligatorio Toda comunicación entre app y API es sobre TLS

Procesos en background

Requisito Descripción
Notificaciones push Se ejecutan via jobs, no bloquean requests
Vencimiento de almacenaje Job diario verifica paquetes que superan días gratis
Expiración de OTP Códigos de teléfono expiran en 5 minutos
Expiración de crédito Job diario marca crédito vencido
Recalculo de niveles Job cada hora recalcula nivel de usuarios
Consolidación Locks en Redis para evitar estados inconsistentes

Apps móviles — experiencia offline

Requisito Descripción
Sesión expirada Si el token expira, redirigir a login sin perder contexto
Subida de foto fallida Guardar foto en cola local y reintentar cuando haya red
Recurso modificado Si push llega con dato stale, traer versión actual del servidor
Cotización vencida Si el usuario intenta pagar con cotización expirada, mostrar error y recalcular
Permiso de cámara denegado Mensaje claro: "Necesitas dar permiso para subir fotos"
Sin internet Mostrar estado offline; las acciones se encolan localmente