- Updated docs and inventory files - Added new architecture docs Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
6.3 KiB
US-MAI006-014: Cambiar proveedor GPS
Metadata
| Campo | Valor |
|---|---|
| ID | US-MAI006-014 |
| Epica | EPIC-MAI-006 - Tracking en Tiempo Real |
| Modulo | tracking |
| Prioridad | P1 |
| Story Points | 5 |
| Sprint | Por asignar |
| Estado | Backlog |
Historia de Usuario
Como gerente de operaciones de una empresa transportista, quiero poder migrar de un proveedor GPS a otro sin perder historico de posiciones, para cambiar de servicio de telematica cuando encuentre una mejor opcion o mejores condiciones comerciales.
Descripcion Detallada
Las empresas de transporte pueden necesitar cambiar de proveedor de telematica por diversas razones: mejores tarifas, mejor cobertura, funcionalidades adicionales, o consolidacion de proveedores. La migracion debe ser transparente para la operacion: el historico de posiciones debe permanecer intacto, las geocercas y alertas deben seguir funcionando, y el cambio debe poder hacerse gradualmente (unidad por unidad o toda la flota).
El sistema soporta multiples proveedores simultaneamente, lo que permite una migracion gradual: se pueden activar dispositivos del nuevo proveedor en algunas unidades mientras otras siguen con el proveedor anterior. El campo proveedor_gps en cada posicion almacena el origen del dato, permitiendo trazar el historial aunque haya cambios de proveedor.
El proceso de migracion incluye: configuracion del nuevo proveedor a nivel tenant, actualizacion del mapping de dispositivos (IMEI -> device_id_externo del nuevo proveedor), periodo de prueba en paralelo, y finalmente desactivacion del proveedor anterior.
Criterios de Aceptacion
Escenario 1: Configurar nuevo proveedor GPS
Dado que el tenant actualmente usa Traccar como proveedor GPS, Cuando el administrador configura Samsara como proveedor adicional (ingresando API key y configuracion), Entonces el sistema valida las credenciales contra el API de Samsara, almacena la configuracion de forma segura (credenciales encriptadas), y muestra mensaje de "Proveedor configurado exitosamente".
Escenario 2: Actualizar dispositivo a nuevo proveedor
Dado que el dispositivo de la Unidad T-001 usaba Traccar (device_id_externo: "123") y ahora tiene un dispositivo Samsara (device_id: "sam-456"),
Cuando el administrador actualiza el dispositivo con: proveedor = "samsara", device_id_externo = "sam-456",
Entonces el sistema actualiza el registro del dispositivo, las nuevas posiciones llegan desde Samsara con proveedor_gps = 'samsara', y el historial anterior permanece con proveedor_gps = 'traccar'.
Escenario 3: Periodo de ejecucion en paralelo
Dado que algunas unidades usan Traccar y otras Samsara, Cuando se consulta el dashboard de flota, Entonces todas las unidades se muestran en el mapa independientemente del proveedor, con indicador visual del proveedor actual de cada unidad.
Escenario 4: Consultar historial con multiples proveedores
Dado que la Unidad T-001 tiene posiciones de Traccar (enero-junio) y Samsara (julio-diciembre), Cuando el usuario consulta el historial de todo el ano, Entonces el sistema muestra todas las posiciones ordenadas cronologicamente, pudiendo filtrar por proveedor si se desea.
Escenario 5: Desactivar proveedor anterior
Dado que todas las unidades del tenant ya fueron migradas a Samsara, Cuando el administrador desactiva la configuracion de Traccar, Entonces el sistema deja de procesar webhooks de Traccar para ese tenant, el historial de posiciones de Traccar permanece intacto, y se libera la configuracion (credenciales borradas de forma segura).
Escenario 6: Verificar conectividad de nuevo proveedor
Dado que el administrador configuro un nuevo proveedor, Cuando solicita verificar la conectividad, Entonces el sistema intenta listar dispositivos desde el API del proveedor y muestra: numero de dispositivos encontrados, estado de conexion, y cualquier error de autenticacion o configuracion.
Tareas Tecnicas
- Database: Crear tabla
tracking.tenant_gps_providerscon campos: tenant_id, proveedor, config (JSONB encriptado), activo, verificado_at, created_at, updated_at. Permitir multiples proveedores activos por tenant. - Backend: Crear
TenantGpsProviderServicecon metodos: addProvider(), updateProvider(), removeProvider(), verifyConnection(), listProviders(). Crear endpoint/api/tracking/providerscon CRUD. - Security: Implementar encriptacion de credenciales sensibles (API keys, passwords) usando el servicio de vault o encriptacion AES con clave de ambiente.
- Migration Tool: Crear herramienta/script para actualizar masivamente los dispositivos al cambiar de proveedor: mapeo de device_id_externo antiguo a nuevo.
- Frontend: Crear seccion "Proveedores GPS" en configuracion del tenant. Mostrar lista de proveedores con estado (activo, verificado), permitir agregar/editar/eliminar. Agregar indicador de proveedor en el listado de dispositivos.
- Tests: Tests de configuracion de multiples proveedores. Tests de migracion de dispositivos. Tests de consulta de historial multi-proveedor.
Dependencias
- Depende de: US-MAI006-011 (configurar dispositivo), MAI-001 (tenant settings), Integracion GPS Multi-Provider
- Bloquea: Ninguna
Notas Tecnicas
-
Endpoints:
GET /api/tracking/providers- Listar proveedores del tenantPOST /api/tracking/providers- Agregar proveedorPUT /api/tracking/providers/:provider- Actualizar configuracionDELETE /api/tracking/providers/:provider- Desactivar proveedorPOST /api/tracking/providers/:provider/verify- Verificar conectividad
-
Estructura de configuracion por proveedor:
// Traccar
{
provider: 'traccar',
config: {
apiUrl: 'https://traccar.example.com/api',
wsUrl: 'wss://traccar.example.com/api/socket',
email: 'admin@example.com',
password: 'encrypted...'
}
}
// Samsara
{
provider: 'samsara',
config: {
apiKey: 'encrypted...',
webhookSecret: 'encrypted...'
}
}
- Webhook routing: Al recibir webhook, identificar tenant por API key o firma, no por URL
- Auditoria: Registrar todos los cambios de proveedor en audit log
- Rollback: Mantener configuracion anterior por 30 dias despues de desactivar para posible rollback
US-MAI006-014 - ERP Transportistas v1.0.0