Sobre este projeto
it-programming / mobile-development
Aberto
Se requiere el desarrollo de un sistema de geolocalización avanzado para mejorar la precisión y fiabilidad de la ubicación de los taxistas en las aplicaciones móviles de Android e iOS. El objetivo principal es eliminar la visualización de coordenadas antiguas como si fueran actuales y establecer una única fuente de ubicación para cada plataforma.
El proyecto implica:
1. **Desarrollo de Aplicaciones Móviles (Android e iOS)**:
* Las pantallas de las aplicaciones no deben iniciar sus propias suscripciones GPS; solo deben observar la última ubicación disponible.
* Separar la captura de datos gps del envío de peticiones http.
* Implementar una lógica "latest wins" para la conservación de ubicaciones: si llegan varias posiciones mientras se está enviando una, solo la más reciente debe conservarse, sin acumular ubicaciones.
2. **Desarrollo de Nuevo Endpoint Backend**:
* Crear un nuevo endpoint POST /v1/driver/location para recibir las actualizaciones de ubicación.
* El endpoint GET actual se mantendrá temporalmente durante la migración de las aplicaciones.
* El endpoint debe recibir los siguientes campos como mínimo:
* taxi_id
* location_session_id
* sequence
* fix_id
* captured_at
* latitude y longitude
* precisión horizontal
* velocidad y precisión
* dirección
* proveedor GPS
* indicador de ubicación simulada
3. **Lógica de Validación y Almacenamiento Backend**:
* El backend debe aceptar una posición solamente si:
* El taxi está en uso.
* Pertenece al conductor autenticado.
* Es su taxi activo.
* La sesión coincide con la sesión actual.
* La secuencia es superior a la última aceptada.
* Las coordenadas y el timestamp son válidos.
* Una petición antigua nunca puede sobrescribir una posición nueva, aunque llegue más tarde. Esta comprobación debe realizarse de forma atómica en base de datos.
* Al cambiar de conductor, taxi o jornada, debe comenzar una nueva sesión de ubicación e invalidarse la posición del conductor anterior.
* El nuevo endpoint debe ser ligero, enfocado únicamente en validar y guardar la posición. Tareas pesadas como la llegada al origen, paradas, métricas, notificaciones, etc., Deben ejecutarse mediante eventos o jobs asíncronos.
4. **Almacenamiento de Datos de Ubicación**:
* Guardar separadamente la última lectura recibida, la última lectura usable, la última lectura válida para asignación, la hora real de captura, la precisión y el estado (fresh, degraded o lost).
5. **Frecuencias de Actualización Objetivo**:
* Taxi en movimiento o camino al origen: cada 3–5 segundos.
* Taxi libre moviéndose: cada 5 segundos.
* Taxi parado: cada 20–30 segundos.
* Envío inmediato al moverse unos 10–15 metros.
* Timeout del envío: 5–8 segundos.
Categoria TI e Programação
Subcategoria Programação de Apps para Android, iOS e outros
Qual é o alcance do projeto? Criar um novo aplicativo
Duração do projeto Não estabelecido
Habilidades necessárias