PreLoc by LAUDE
Banco de medida de precisión para APIs de localización de red · CAMARA / Open Gateway
comprobando…
Qué es y qué mide
Banco de medida para las APIs de localización de red de CAMARA / Open Gateway. Cada captura contrasta la respuesta del operador con el GPS del terminal en el mismo instante y lugar: en Location Retrieval, el desvío al centro del área devuelta y la contención dentro de ella; en Location Verification, la tasa de aceptación y el tamaño del área que la red se atribuye. Los resultados se agregan por entorno o emplazamiento y se juzgan contra umbrales configurables, con la respuesta íntegra del operador guardada para poder auditar cualquier cifra.
Seguir capturando
Tienes una sesión abierta en este dispositivo:
Componentes
Tester en campo Vista de captura
Te unes a una sesión con su PIN y capturas: el móvil manda su GPS, el backend pregunta a la red y ves el resultado y el mapa al momento. Con ráfaga automática para muestrear un trayecto sin pulsar cada vez, y en LV con barrido de radios si la sesión lo lleva: cada tick prueba varios y se ve dónde la red empieza a confirmar.
/campo.html Abrir →
Quien organiza la prueba Gestión de sesiones
Da de alta la sesión con el número a localizar, el tipo —LR, LV o LV Custom con posición declarada— y genera el PIN que se pasa al tester. Es tarea operativa, se hace antes de salir a medir, y por eso está separada del análisis.
/sesiones.html Abrir →
Quien analiza lo medido Backoffice
Todas las sesiones con su resumen y su veredicto, filtrando por tipo, escenario, estado y fechas. Desde aquí se abre el detalle de cada una, que en pantalla ancha es un banco de análisis: cifras de cabecera, tablas a un lado y el mapa fijo al otro.
/backoffice.html Abrir →
Analista Detalle de sesión
Métricas por escenario con su umbral y veredicto —también en LV—, la curva del barrido de radios, mapa con todas las capturas, tabla completa con la respuesta íntegra del operador y export a CSV o JSON para analizar fuera.
desde el listado Abrir →
Analista Zonas
El mismo sitio medido en varias visitas: la etiqueta agrupa las capturas a través de sesiones y se juzga la zona, no la visita. Con el desvío separado en sesgo —sistemático, y con una dirección— y dispersión, que es el ruido de verdad.
/zonas.html Abrir →
Preventa · Arquitectura Caso de uso
Al revés que el resto: en lugar de mirar qué mide la red, se parte de para qué la quieres y sale el plan de pruebas — dónde medir, cuántas capturas, con qué radios, qué métricas mirar y qué se podrá afirmar al final. El agente redacta; las cifras las pone la aplicación con lo medido, y tiene prohibido citar ninguna otra.
/caso.html Abrir →
Administrador Configuración
Endpoints y credenciales del operador, rutas del parser, umbrales y parámetros de prueba. Los umbrales van en metros por etiqueta y sirven para las dos APIs: lo que se le exige al operador en un sitio no depende de con cuál se mida. Incluye probar conexión, que llama al operador de verdad y te dice si las credenciales valen.
/config.html Abrir →
Analista Informe IA
Redacta el informe de una sesión a partir de sus métricas —no de las capturas sueltas—, lo guarda con el modelo y la fecha, y lo deja listo para guardar como PDF con portada.
desde el detalle Abrir →
Analista Prompts de los informes
Con qué instrucciones redacta el modelo, editable sin tocar código y con previsualización sobre una sesión real. Las reglas que impiden que el informe se invente números no se pueden quitar desde ahí: las añade el backend.
/prompts.html Abrir →
Sin operador Modo simulación
El backend fabrica las respuestas de la red, sin credenciales ni llamadas. Sirve para probar la herramienta entera, y las capturas quedan marcadas para que nunca se confundan con medidas reales.
en configuración
Métricas y su definición
Todo lo que la herramienta calcula, con lo que significa y —cuando importa— con lo que no significa. Las agregadas no se almacenan: se recalculan sobre las capturas cada vez que se piden, así que borrar una medida o cambiar un umbral se refleja al instante.
En el export y en la tabla Campos de cada captura
Una captura es una medida: lo que envió el móvil, lo que respondió la red y lo que se deduce de ambos. Los campos derivados se calculan al leer y no se guardan, así que si una fórmula cambia, las capturas viejas se recalculan solas.
- id · session_id · scenario · created_at
- Identificadores, la etiqueta con la que se midió —congelada aquí, aunque la sesión la cambie después— y el instante de la captura. Se guarda y se exporta en UTC; en pantalla se lee en hora de Madrid.
- gps_lat · gps_lon · gps_accuracy_m
- La verdad-terreno: lo único que envía el móvil. La precisión es la que declara el propio navegador, en metros.
- gps_poor
- La precisión del GPS era peor que el umbral configurado, así que no sirve de referencia. La captura se guarda y queda fuera de las métricas; se puede incluir a mano.
- net_lat · net_lon · net_radius_m
- El área que devuelve la red: centro y radio. En LV solo aparecen si la sesión llevaba una Location Retrieval emparejada.
- net_time
- El
lastLocationTimedel operador: cuándo aprendió la red algo de tu posición por última vez, que no es cuándo te localizó — desconectarse también es uno de esos momentos. - error_m
- El desvío en metros: distancia del GPS al centro del área. Conserva el nombre que tenía en el prototipo original —en la API, la base de datos y el CSV— para no romper lo que ya los procesa; en pantalla se llama «desvío», que es lo que es.
- contained
- El GPS cae dentro del área devuelta. Es la comprobación que juzga a la red contra su propia afirmación.
- result · match_rate · radius_m
- De LV: el veredicto que respondió la red, su matchRate —solo con PARTIAL— y el radio del círculo que se envió a verificar.
- implied_network_radius_m
- Derivado. El matchRate en metros: cota superior del radio del área de la red, r / raíz(m/100). Solo existe con PARTIAL, y es exacta si esa área contiene a la pedida y comparten centro.
- max_age_s · location_age_s · stale_location
- El
maxAgeque se pidió en esta captura —se guarda porque el de configuración cambia— y, derivados, la edad de la posición en el momento de pedirla y si supera lo pedido. Esa es la referencia justa para juzgar al operador: no responde de nuestro CIBA. SinmaxAgeno hay nada que incumplir y no se afirma nada. - age_at_response_s
- Derivado. La edad de la posición cuando llegó la respuesta, y es la que se ve en la columna Antigüedad. Hacen falta las dos: si la red calcula el fix durante la llamada, medir desde que salió la petición da negativo y deja la fila sin número, mientras que esta responde a lo que quieres saber al leerla —cuántos segundos tenía el dato que tienes en la mano—. Vacía solo si la red sella después de que su respuesta llegara, que no es antigüedad sino desajuste de relojes.
- fix_group
- Capturas del mismo tick de un barrido: mismo GPS y mismo instante, distinto radio. Es lo que las hace comparables entre sí.
- paired_time · same_fix
- El
lastLocationTimede la llamada emparejada y, derivado, si coincide con el de la principal: solo entonces vienen del mismo posicionamiento y la comparación es exacta. - predicted_match_rate · match_rate_delta
- Derivados. El matchRate que sale de la geometría con el área que devolvió LR, y su diferencia con el que devolvió LV. Cerca de cero, los dos APIs se apoyan en la misma posición. La diferencia se mide contra la predicción tal y como la red la habría escrito —entero y topada en 99, porque el 100 es lo que significa TRUE y ninguna de las 64 respuestas medidas lo alcanza—; si no, la resolución con la que viaja la respuesta se contaría como desacuerdo.
- sent_at
- Cuándo salió la petición hacia el gateway. Es la referencia con la que se juzga la
frescura de la posición, y no
created_at: entre uno y otro están el token CIBA —que con polling puede tardar segundos— y el viaje de ida y vuelta, y ninguno de los dos lo pone la red. - net_time_after_request
- Derivado. El
lastLocationTimecae después del instante en que se pidió la posición, con la llamada todavía en curso: la red dice haber calculado el fix mientras respondía. Contra Orange pasa en 32 de 36 capturas, y el sello cae al 61 % de la llamada, no al final. Lo más probable es que sea cierto —si solo pusiera la hora de responder no devolvería nunca fixes de hace un minuto, y los devuelve—, pero desde fuera no se verifica: una hora puesta al construir la respuesta se vería igual. No se juzga; se cuenta y se dice al lado del número. - gps_jump
- Derivado. El GPS saltó respecto a la captura anterior a una velocidad imposible. El tramo no sirve para medir movimiento y se descarta en lugar de dejar que envenene la media.
- speed_mps · explained_by_age_m
- Derivados, y necesitan la captura anterior de la misma sesión. La velocidad del GPS entre ambas, y los metros del desvío que explica el retraso de la posición: velocidad × antigüedad. A 41 km/h, un fix de 60 s sitúa el dispositivo 690 m atrás sin que la red se equivoque en nada; al contrario, un desvío grande con una posición fresca sí es imprecisión suya. Es la cifra que separa «la red es imprecisa» de «la red llega tarde».
- latency_ms
- Lo que tardó la llamada al gateway, de punta a punta. No incluye la obtención del
token: eso pasa antes de
sent_at. - ok · error_code · error_message
- Si la llamada salió bien y, si no, con qué código. Las fallidas se guardan: un
DEVICE_NOT_FOUNDo un timeout son dato, no un motivo para perder la medida. - simulated
- La respuesta la fabricó el modo simulación. No dice nada de la red.
En las dos APIs Muestreo, latencia y frescura
- n
- Capturas válidas del escenario: las que la red contestó y cuyo GPS era bastante preciso para hacer de verdad-terreno.
- Capturas totales, válidas y con error
- Las fallidas se guardan igual —un timeout es un dato— y no entran en las métricas.
- Descartadas por GPS impreciso
- Su precisión era peor que el umbral configurado. El GPS es la referencia contra la que se juzga a la red; una posición de WiFi con ±300 m no puede hacer de verdad-terreno. Se pueden incluir a mano.
- Simuladas
- Fabricadas por el modo simulación, sin operador. No dicen nada de la red, y el informe lo advierte.
- Errores por código
- Reparto de los fallos:
CONFIG_ERRORyAUTH_ERRORson nuestros,TIMEOUTdel gateway, y los códigos CAMARA los explica el operador. - Latencia media
- Lo que tarda la llamada de localización, sin la obtención del token: el reloj arranca al enviar la petición al gateway, con CIBA ya resuelto. Contra Orange la mediana es de 1,6 s y el máximo pasa de 10 s, así que no es un viaje de milisegundos: ahí dentro cabe un posicionamiento.
- Edad de la posición
- Instante de la captura menos el
lastLocationTimedevuelto, en media, p95 y máximo, y lo mismo medido a la llegada de la respuesta, que es lo que se ve por captura. La red solo sabe dónde estás cuando el terminal le habla: un fix viejo explica desvíos enormes que no son imprecisión. - Velocidad de la medida
- A qué velocidad se estaba midiendo, del GPS entre capturas seguidas. Decide cómo se leen las demás cifras: en marcha, el retraso de la posición pesa más que la precisión, y separar sesgo de dispersión deja de tener sentido.
- Desvío que explica el retraso
- Cuánto del desvío queda explicado por la antigüedad de la posición, en media y en p95. Compáralo con el desvío medio: si son parecidos, la red no es imprecisa, llega tarde; si el desvío es mucho mayor, el error es suyo.
- ¿Se puede medir la antigüedad?
- En cuántas capturas la hora que devolvió la red es posterior al momento en que
se le pidió la posición. Cuando eso pasa, la red no está diciendo de cuándo es su dato:
dice haberlo calculado mientras respondía. No es un defecto —es lo que se espera de un
posicionamiento activo— pero tampoco se puede comprobar desde fuera, así que en esas
capturas la frescura es declarada por la red y no medida por nosotros. Si son
cero, la antigüedad de cada posición es un dato medido y se puede juzgar el
maxAgecon él. - Reselección de celda
- Cuántas veces cambió el emplazamiento que devuelve la red durante la sesión, cuánto
salta cada cambio, y cuántas veces se vuelve a una celda ya usada —ping-pong
entre dos casi igualadas—. La reselección va por señal recibida y con histéresis, no
por distancia: una antena lejana con línea de vista bate a una cercana detrás de un
edificio. De ahí también «no era el más cercano»: instantes en los que servía un
emplazamiento más lejano que otro que la red misma usó en esa sesión — y se destacan solo
las diferencias de más de 250 m, porque por debajo lo explica la orientación del
sector y no hay nada que concluir.
En el fichero exportado, cada cambio (transitions) trae su instante (at), eljump_mque separa las dos antenas, lossecondstranscurridos, si vuelve a una ya usada (back_to_known) y loscapture_idsde las dos capturas implicadas. Y cada caso de antena lejana (not_nearest) trae la captura (capture_id), la que usó la antena cercana (nearer_capture_id) y las dos distancias:served_mynearer_m. Es normal, y deshace la idea de que la celda te sitúa dentro de su radio — es también lo que explica las respuestas que no contienen al dispositivo. - Cómo fallan las peticiones
- Una tasa media de fallos confunde causas distintas, así que se mira la forma.
Si en el mismo instante unas llamadas fallan y otras no, es concurrencia: varias
peticiones simultáneas para la misma línea. Si fallan todas y en tiradas de
minutos, es que la línea que se localiza no tiene contexto utilizable. Si además el
fallo llega antes que el éxito, la red no está esperando al dispositivo: lo sabe
de inmediato. Y si el mismo sitio da resultados opuestos en dos pasadas próximas, la
causa no es el lugar — con dos condiciones que estuvieron mal puestas: a menos de
50 m y menos de dos minutos. Con el umbral en 150 m se emparejaban intentos a una
manzana y media y separados doce minutos, y un caso que se presenta como «aquí sí y
aquí no» tiene que ser aquí y ahora. Si además servía la misma celda
(
same_cell), el caso ya no admite discusión: ni el sitio ni la celda cambiaron, y el resultado sí. Se enseña el par más ajustado de todos. Medido en campo: 0 fallos en 130 llamadas de una en una, 24 % con cuatro simultáneas, y 61 % con la línea medida en espera y el terminal en movimiento.
En el fichero exportado, cada tirada (failure_runs) trae desde cuándo y hasta cuándo (from,to), cuántos instantes duró (ticks), lossecondsy losmetresrecorridos, y loscapture_idsde sus capturas. Cada par del mismo sitio (same_place_pairs) trae sus doscapture_idsy losmetresque los separan. - Saltos del GPS
- Tramos descartados por velocidad imposible entre capturas. Salió uno de 310 km/h con 245 m de salto en 2,9 s y el GPS declarando ±20 m de precisión.
- maxAge respetado
- Porcentaje de capturas cuya posición no superaba el
maxAgeque se pidió. Según CAMARA, no poder cumplirlo debería devolver un422y no una posición caducada. Las caducadas no se apartan de las métricas: son la respuesta del operador.
Location Retrieval Desvío, contención y veredicto
- Desvío: media, mediana, p90, p95, mínimo y máximo
- Distancia Haversine del GPS al centro del área devuelta. Es comparable entre escenarios y operadores, pero un desvío menor que el radio no es un fallo: la red no afirma que estés en el centro, sino dentro del círculo.
- Radio medio de la red
- Tamaño medio del área devuelta, que es lo que la red se atribuye como incertidumbre.
- Radios devueltos
- Cuántas veces devolvió la red cada radio, agrupado al metro. La media no contesta la pregunta que importa: unos pocos valores repetidos clavados apuntan a un radio sacado de una tabla —el alcance nominal de la celda— o a un suelo configurado; una nube de valores distintos, a una incertidumbre calculada por medida. Y si nunca baja de un número, ese número es el suelo.
- Celdas presuntas
- Las capturas agrupadas por la posición y el radio que devolvió la red, con el
desvío y la contención de cada grupo. No es la celda de verdad —el navegador no la da
ni en iPhone ni en Android—, pero cada grupo es casi con seguridad una: la red contesta
con el mismo punto mientras te sirva la misma. Es lo que enseña qué
emplazamientos dan mal resultado, y a qué grupos ponerle el Cell ID si algún día se
cruza un registro de campo.
Cada grupo dice además cuánto se movió el GPS mientras la red respondía lo mismo (gps_span_m), que es la prueba de un vistazo: si recorriste 1,5 km y te devolvió tres veces el mismo punto, no está localizando el dispositivo — devuelve un punto almacenado, y el desvío mide tu distancia a él.
De cada grupo salen también el desvío máximo (max_error_m) y las horas de la primera y la última captura que sirvió (first_at,last_at), que es lo que permite reconstruir por dónde ibas. - Contención
- Parte de las capturas cuyo GPS cae dentro del área devuelta. Es la métrica que juzga a la red contra su propia afirmación.
- Umbral p95 y contención objetivo
- Lo que se le exige al operador en ese sitio, configurable por etiqueta.
- Veredicto
- PASA si cumple los dos criterios; FALLA solo si fallan los dos; REVISAR en medio o cuando falta el umbral. Radios enormes aciertan siempre la contención y no sirven de nada; radios pequeños con desvíos grandes fingen precisión.
- Sesgo
- Vector medio del GPS al centro de la red, con su magnitud y su rumbo. Es sistemático: se puede calibrar, y su dirección suele explicarlo.
- Dispersión
- Cuánto varía la red alrededor de ese sesgo. Es el ruido, y no se corrige. Dos redes con el mismo p95 son productos distintos según cómo se reparta entre las dos.
- Llamadas que respondieron
- Un veredicto se firma sobre lo que quedó después de apartar los fallos y las
posiciones caducadas, así que las cifras de precisión pueden salir estupendas sobre un
resto que no las sostiene. Se vio con una sesión de siete llamadas: tres fallaron con
el teléfono apagado, dos devolvieron posiciones de veinte minutos antes, y el
veredicto se firmaba sobre las dos restantes — PASA, con el 43 % de las
llamadas sin respuesta.
Por eso van al lado del veredictoattempted_n(lo intentado),failed_nysuccess_pct. Si el operador no respondió lo suficiente, o no respetó elmaxAgepedido, el veredicto se topa en REVISAR y se dice cuál de las dos condiciones lo impidió. Nunca en FALLA: no es que la red se equivoque midiendo, es que no hay con qué aprobarla. - Punto fijo
- Separar sesgo de dispersión solo tiene sentido con la verdad-terreno quieta. Se
deduce de los datos y no se declara: manda el diámetro de las posiciones
(
gps_span_m, de extremo a extremo), y tiene que quedarse por debajo de 25 m.
No vale la dispersión, que es lo que se usaba: un paseo de ida y vuelta la deja pequeña porque las dos mitades se compensan —131 m de dispersión para 486 m de recorrido, en una sesión de 1 540 m andados—. Y el umbral tampoco puede depender del ruido de la red, como dependía: eso hacía que cuanto peor localizaba la red, más te dejara moverte, y es justo al revés — si el tester se mueve, el sesgo no significa nada por mucho ruido que haya. - Centroide de celda
- Dispersión casi nula con sesgo grande, y pocas posiciones distintas: la red no está localizando, está devolviendo siempre el mismo punto. Ese desvío no baja midiendo más veces.
- spatial
- El bloque que agrupa sesgo, dispersión y sus condiciones.
Location Verification Veredictos, matchRate y área de la red
- Reparto TRUE / PARTIAL / FALSE / UNKNOWN
- Lo que respondió la red, y no se toca nunca. UNKNOWN es «no pude localizar», que no es lo mismo que «no estabas ahí».
- matchRate medio
- El operador lo define como (R ∩ N) / N × 100: la parte del área en que la red sitúa el dispositivo (N) que cae dentro de la que pediste (R). Solo llega con PARTIAL.
- Área de la red (media, p95)
- El matchRate en metros: como la intersección nunca supera a R, sale una cota superior del radio de N — R_n ≤ r / raíz(m/100). Un TRUE aporta el radio pedido; un FALSE no dice nada del tamaño y queda fuera.
- Tasa de aceptación
- Lo que nosotros damos por bueno: TRUE siempre, y PARTIAL si su matchRate llega al umbral configurado. Un TRUE es ese mismo número al 100 %.
- Tasa de aceptación objetivo
- El mínimo exigido para PASA. El otro criterio, el tamaño del área de la red, se juzga con los mismos umbrales en metros que LR.
- Curva por radio
- Una fila por radio barrido, medida sobre el mismo GPS y el mismo instante: la única variable es el radio.
- Radio mínimo útil
- El radio más pequeño del barrido que alcanza el objetivo de aceptación. Es la cifra que decide el radio de un producto.
- Coherencia del barrido
- Dentro de un instante el área de la red es una sola, así que los radios deducidos de sus matchRate deberían coincidir. Esta es su dispersión: cerca de cero, la red es coherente consigo misma.
- matchRate calculado y su diferencia
- Con una Location Retrieval emparejada se conoce dónde está el área de la red, así que el matchRate se calcula por geometría y se compara con el devuelto —redondeado al entero y topado en 99, como lo escribe la red. Cerca de cero, los dos APIs se apoyan en la misma posición. Medido contra Orange en un punto fijo: −0,35 puntos de media en cuatro radios entre 850 y 945 m.
- Método de posicionamiento compatible
- Ninguna respuesta CAMARA dice con qué método se ha obtenido la posición, así que se deduce del comportamiento: el tamaño del área, si el radio se repite clavado o se calcula, si la posición sigue al móvil y si el radio guarda relación con el desvío real. Se da como compatibilidad, con los indicios en texto y con las familias descartadas, que suele ser lo más sólido: un radio de 800 m constante descarta A-GNSS sin discusión. Distingue familias de método —celda, Timing Advance, huella RF, TDOA, A-GNSS—, no productos ni fabricantes: dos implementaciones distintas con la misma configuración dejan la misma huella. Con menos de 5 capturas con área devuelta no se diagnostica nada.
- Posición equivocada que la red detecta
- Para el caso en que la aplicación del móvil envía la posición y la red solo se
usa para comprobarla: se le pregunta si el teléfono está dentro de un círculo de tantos
metros alrededor de la posición declarada.
La red no sabe dónde estás con exactitud: contesta con el área de la antena que te da servicio, y esa área tiene su radio y su centro a cierta distancia de ti. Para que confirme a quien dice la verdad, el círculo que se le pregunta tiene que contener esa área entera; de ahí sale el radio que hay que consultar, tomando el peor de los casos medidos en ese sitio. Y con un círculo tan grande, una posición declarada puede estar equivocada unos cuantos cientos de metros y el área de la red sigue cabiendo dentro: la red la confirmaría igual. Esa es la cifra que decide si la comprobación protege algo.
Hay dos valores porque depende de la dirección: un error que aleja el móvil de la antena se nota antes que uno que lo acerca, y la cifra que hay que poder defender es la segunda. Da igual que el error venga de un engaño deliberado o de un GPS que se equivocó: la red no distingue una cosa de la otra. Y se mide en el sitio concreto: donde sirve siempre la misma celda el margen es pequeño; donde bailan varias, es de cientos de metros. - Alcance de zona
- Hasta qué distancia de un sitio la red sigue devolviendo el mismo
emplazamiento que en el sitio. Dentro de esa distancia las respuestas son
indistinguibles, así que es el techo de lo que puede afirmar cualquier comprobación
del tipo «esta línea está aquí».
No lo dice ninguna respuesta suelta: el radio devuelto es un valor por celda y no una cobertura, y la distancia al emplazamiento se calcula con el GPS que declara el teléfono, así que no prueba nada contra quien lo falsee. Lo dice un recorrido: qué emplazamiento contesta en cada punto del camino.
Se dan por buenos los emplazamientos que contestaron al capturar dentro deaccess_radius_mdel sitio —que es a qué distancia autorizarías, una decisión de producto que no se le envía a nadie—. Con eso salen dos cifras, porque una comprobación falla en dos direcciones y una sola las esconde:zone_reach_m, lo más lejos que se vio contestar a uno de ellos, yfirst_rejected_m, lo más cerca que apareció uno de fuera. Medido en campo: con la lista sacada a 50 m, la primera respuesta de fuera caía a 75 m.
Y el perfil por franjas (bands), porque la zona no es un disco: los emplazamientos se entrelazan. Cada franja dice cuáles contestaron ahí (cells, con sulabel—E1, E2…— y si estánin_list) y si esoauthorises: basta con que uno esté en la lista, porque se puede reintentar.should_passdice qué tocaría en esa franja ywrong_ncuántas capturas no encajan, sobreaccepted_nden; en la que el radio parte por la mitad no se cuenta nada, porque de ella no se puede decir que deba pasar ni que no.
Las etiquetas se numeran y no salen delcell_id: el mismo identificador aparece en dos emplazamientos, por el minuto de desfase de la posición. Los cruces llevan de qué emplazamiento a cuál se pasó (from_lat/from_lon→to_lat/to_lon) y el intervalo entre las dos capturas (between_m), no un punto: solo se sabe que la frontera cayó en medio.
Dos límites. Las cifras son un «al menos»: solo se sabe de las direcciones por las que se pasó, y si el recorrido nunca salió de la zona (zone_reach_is_lower_bound) no hay cota superior ninguna — creerla más pequeña de lo que es hace parecer mejor de lo que es a cualquier control que se apoye en ella. Y una comprobación real solo podría usar las coordenadas: elcell_idno viene en la respuesta de LR, lo publica el móvil, así que quien falsee el GPS puede falsearlo igual. Aquí sirve para comprobar el agrupamiento, no como prueba. - Radio que hará falta
- Con una Location Retrieval emparejada de un punto se sabe el radio del área de la red
y a qué distancia está de ti, y con eso el radio que hay que pedir deja de adivinarse:
distancia + radio para que la red pueda contestar TRUE, y bastante menos para
llegar solo al matchRate que tu criterio acepta. Medido en un punto: 946 m para el TRUE
y 702 m para el 75 %. Sin la emparejada no se puede calcular —un matchRate suelto es
una ecuación con dos incógnitas— y vale para ese punto y esa celda: en cuanto la
red cambia de celda, el número es otro.
Los dos radios salen de la misma distancia, y se dice cuál es: el desvío al GPS en una sesión normal, y la distancia de lo declarado al área de la red en una LV Custom. Van juntos porque uno sin el otro engaña — se vio dando «701 m para el 75 %» al lado de «497 605 m para el TRUE» en la misma frase: dos números correctos por separado, calculados desde distancias distintas, que juntos no significaban nada. - Contraste: emplazamiento devuelto contra celda real
- El banco agrupa las capturas por la posición y el radio que devolvió la red. Ese punto
es un emplazamiento —en la campaña, dos cualesquiera de los devueltos nunca
quedaron a menos de 213 m entre sí, y dos sectores del mismo mástil darían la misma
coordenada—, así que cada grupo es un sitio, no necesariamente una celda.
Qué celda servía en cada momento es otra cosa, y con las lecturas del módem se puede comprobar: cada grupo lleva qué identidades servían de verdad en sus capturas y cuántas veces. En esta campaña resultó haber una celda dominante por emplazamiento —o sea que aquí el punto vino a ser uno por celda—, pero eso es un hallazgo de esta red, no la definición del grupo.
read_coherentes el veredicto: una sola identidad por tecnología —por tecnología y no en total, porque en 5G NSA sirven dos a la vez y exigir una sola marcaría como incoherente lo normal—. Si sale que no, la red devolvió el mismo punto y el mismo radio para celdas distintas, y entonces ese punto es del emplazamiento, no de la celda. Y el error contrario también se mira: una misma identidad repartida en dos grupos significa que el agrupamiento partió en dos lo que era una.
Con un matiz que los datos obligaron a poner: la posición llega con retraso —un minuto, medido—, así que en el instante de un traspaso todavía es de la celda anterior. Una lectura suelta distinta dentro de un grupo es lo esperable, no un defecto del agrupamiento, y por eso va aparte:read_minor_ncuenta cuántas lecturas no son la identidad dominante de su tecnología, y solo se marca como mezcla lo que esa proporción no explica.
El identificador0y las lecturas sin celda tampoco cuentan como identidad: es lo que publica el módem cuando no tiene una válida que dar —se ve justo en las transiciones— y contarlo marcaba grupos como incoherentes por falta de dato. - Celda leída en el móvil
- La celda que el módem del móvil estaba usando en ese instante: identidad
(
cell_id),tac,pci,rsrpy, cuando el módem lo da, el Timing Advance — en pasos, no en metros, porque la conversión depende de la numerología (~78 m por paso en LTE, ~39 m a SCS 30 kHz en NR n78).
No la puede leer el navegador: no existe la API web. Llega porque un bucle en el móvil la publica, y el banco la cruza por instante con la captura — condt_sdiciendo a cuántos segundos estaba la lectura, que es lo que permite auditar el cruce. Aquí las celdas del banco dejan de ser una deducción por agrupación y pasan a tener nombre.
Pueden ser dos: en 5G NSA el móvil está a la vez en el ancla LTE —que lleva la señalización y el Timing Advance— y en la NR, y las dos figuran como registradas. Por eso va la listaservingy no una celda suelta: enseñar una sola diría que el móvil estaba en 4G o en 5G cuando estaba en las dos. Las vecinas no se detallan aquí, solo se cuentan (neighbours_n), y están enteras en el bloque de lecturas recibidas.
Y un aviso: es la celda que sirve a la radio del teléfono, no necesariamente a la línea que se está localizando. Con dos SIM pueden ser distintas. - Mismo posicionamiento
- Las dos llamadas de una pareja comparten
lastLocationTime. Si no, la comparación no es exacta y la captura queda fuera de ella. - Desvío y contención en LV
- Solo existen con LR emparejada: LV por sí sola no devuelve posición.
Solo en sesiones LV Custom Posición declarada: probar el FALSE
En una sesión LV Custom el círculo no se centra en el GPS del tester, sino en un punto declarado por el analista —una dirección, o unas coordenadas—. El dispositivo no está ahí, así que la respuesta correcta es FALSE y un TRUE es la red dando por buena una posición falsa. Aquí el reparto de veredictos no mide la precisión de la red: mide si detecta el engaño. El GPS se sigue guardando, porque es la verdad-terreno con la que se mide cuánto se ha mentido.
- Punto declarado
- Las coordenadas que se enviaron como centro del círculo. Van congeladas en cada captura, no leídas de la sesión: el punto se puede mover durante la sesión para buscar la frontera de detección, y lo ya medido tiene que seguir significando lo que significaba. Vacías en una sesión LV normal — no se declaró nada.
- Desvío que el GPS no puede explicar
- Capturas cuyo desvío pasa de 50 km. Una celda no mide tanto —la mayor de LTE
llega a 35 km de radio, y las de esta campaña andan por 800 m—, así que no es un error
de la red: el GPS y la red están hablando de sitios distintos. Tres explicaciones
posibles: el GPS estaba falseado, la línea localizada no es la que lleva los
datos (el caso de las dos SIM), o la respuesta viene de otra red.
Las cifras no se esconden —que la red y el GPS discrepen 494 km es el dato— pero con alguna dentro no se firma veredicto: un FALLA le echaría al operador la culpa de un GPS falseado. Y la cuenta antifraude las descarta, porque parte de que el GPS es la verdad: con un GPS falseado a 497 km llegó a decir «hace falta pedir un radio de 497 613 m», y eso se imprimía como una medida. - Distancia declarada
- El tamaño de la mentira: los metros que separan el punto declarado de donde estaba el móvil de verdad. Es la variable independiente de todo el experimento, y la única forma de que la respuesta signifique algo: «la red dijo FALSE» sin saber a qué distancia se le mintió no dice nada. Andando con un punto declarado fijo, esta distancia cambia sola, y con ella se recorre la curva de detección.
- Declarado ↔ área de la red
- Distancia entre lo declarado y el centro que devolvió la LR emparejada. Es la
separación que manda en la geometría cuando el círculo no está centrado en el
GPS, así que es esta —y no el desvío— la que predice el
matchRate. Confundirlas haría que la predicción no cuadrara nunca justo en las sesiones que se hacen para mirarla. - Capturas caducadas y lo que se envió
- Una posición más vieja que el
maxAgeque se pidió no mide la precisión de la red: mide dónde estuvo el dispositivo hace horas. Salen de las cifras de precisión —y se dice cuántas— pero siguen contando en el cumplimiento, que es donde significan algo.
Se vio con el teléfono apagado: la red devolvió un fix de veinte horas antes, el GPS de hoy cayó dentro de aquel círculo y salía «contención 100 %». Eso no es un acierto de la red, es una coincidencia geográfica — y publicarlo como precisión sería peor que esconder el incumplimiento.
Y para que «¿de verdad pedimos 50 s?» no dependa de la memoria, cada captura guarda la petición que se envió —URL, método y cuerpo, sin cabeceras, que llevan la credencial—. Está en el botónrawde la tabla y en el JSON exportado. - El móvil, durante los fallos
- Cuántas de las capturas que fallaron tenían celda leída en ese mismo instante,
y con qué señal. Es lo que convierte una deducción en una comprobación: si el terminal
estaba enganchado a una celda mientras la red contestaba que no podía localizar,
no era cobertura — la red no encontraba a esa línea, no al teléfono.
Con un matiz que hay que decir siempre: el módem informa de la SIM que lleva los datos. Así que descarta la cobertura del terminal, no confirma por sí solo qué le pasaba a la otra línea. - Contra qué se mide la mentira
- Normalmente contra el GPS: lo declarado frente a donde estabas de verdad.
Pero si el GPS estaba falseado, esa distancia no mide nada —declarando
exactamente el GPS falso sale 0 m, y el banco llegó a decir que la red había
detectado un engaño de 0 m—. Ahí la referencia pasa a ser el punto que devolvió
LR, y sigue valiendo por un motivo de fondo: LR no lleva posición, pregunta
por el MSISDN, así que devuelve la celda que le da servicio de verdad y falsear el GPS
del móvil no la afecta.
Con la red como referencia, la cifra arrastra el radio de la celda como incertidumbre (807 m en esta campaña): es del orden de la mentira, no una medida al metro. `offset_reference` dice cuál se ha usado —gps,redomixta. - Detectadas
- La red no dio por buena la posición declarada: un FALSE, o un PARTIAL por
debajo del
matchRateque tu criterio acepta. Es la respuesta correcta, así que aquí el número que quieres alto es este y no el de TRUE. - Aceptadas
- La red confirmó una posición donde el dispositivo no estaba. Con el criterio configurado: TRUE siempre, y un PARTIAL solo si llega al umbral. Es el hueco por el que pasaría un engaño.
- Concluyentes y no concluyentes
- Un
UNKNOWNno es detección: es la red sin poder localizar. Se cuenta aparte y fuera de los porcentajes, porque un servicio que no contesta no está protegiendo nada — darlo por acierto premiaría que se caiga. - La frontera
- Las dos cifras que deciden: la mentira más grande que la red dio por buena —el margen que tendría un atacante— y la más pequeña que cazó. Entre las dos está la frontera de detección. Se dan las dos a propósito: una sola se leería como un umbral exacto que no se ha medido. Y solo significan algo junto al radio con el que se preguntó: con un círculo de 200 km, aceptar una mentira de 1 km no dice nada de la red. Por eso el desglose por radio aparece siempre, aunque solo se haya usado uno.
- Distancias declaradas
- El recorrido de mentiras que se ha probado en el escenario. Si el mínimo y el máximo están pegados, la sesión ha probado una distancia: la frontera no se puede situar, solo se sabe de qué lado cayó.
- Por qué no hay veredicto
- Una sesión con posición declarada no lleva PASA/FALLA. El veredicto de LV se calcula sobre la tasa de aceptación, y aquí una aceptación alta es lo malo: firmaría lo contrario de lo que pasó. Y darle la vuelta tampoco valdría — que la red confirme un punto declarado a 30 m no es un fallo, es que no resuelve 30 m, cosa que ya se sabía. Lo que responde a la pregunta es la frontera, que es una distancia y no un porcentaje.
Location Verification, en detalle
LV no devuelve coordenadas: solo dice si el dispositivo está dentro del área que propones. Aun así se le pueden sacar metros, y eso es lo que hace esta herramienta.
-
El
matchRate, en metros. El operador lo define como la parte del área en que la red te sitúa que cae dentro de la que pediste. De ahí sale una cota del tamaño de su área:r / √(m/100). En el mapa va con trazo discontinuo mientras sea deducida — en cuanto una Location Retrieval emparejada la mide de verdad, se dibuja esa, continua y en su posición real. - Veredicto en el mismo eje que LR. PASA / REVISAR / FALLA con los mismos umbrales en metros, porque lo que se le exige al operador en un sitio no depende de con qué API se mida. El segundo criterio es la tasa de aceptación.
-
Tú decides qué es aceptar. Un
PARTIALal 95 % y otro al 2 % no son lo mismo: se configura a partir de quématchRatecuenta como bueno. El reparto TRUE/PARTIAL/FALSE que respondió la red no se toca nunca. -
Comprobar en lugar de deducir. Con la Location Retrieval emparejada, cada
verificación sabe dónde está el área de la red: se dibuja en su sitio, se
sombrea la intersección y el
matchRatedevuelto se compara con el que sale de la geometría. - El radio mínimo útil. Barriendo varios radios sobre el mismo GPS sale la curva radio → aceptación, y con ella la cifra que decide un producto: por debajo de qué radio la red deja de confirmar con fiabilidad.
-
Y sin barrer. Una primera verificación con un radio pequeño, si lleva su
Location Retrieval emparejada, ya dice qué radios van a funcionar: la red ha
devuelto el tamaño de su área y a qué distancia está, y de ahí sale el radio que
hace falta para el
matchRateque aceptes y el que hace falta para un TRUE. Vale mientras sigas en el mismo punto y en la misma celda. - Probar el FALSE, no solo el TRUE. En una sesión LV Custom el círculo no se centra en el GPS del tester sino en un punto declarado —una dirección, o unas coordenadas—, así que el dispositivo no está ahí y lo correcto es que la red conteste FALSE. Lo que se mide es a partir de cuántos metros se entera: la mentira más grande que dio por buena y la más pequeña que cazó. Es la comprobación empírica de lo que el cálculo antifraude predice a partir de medidas honestas, y la respuesta directa a «¿esto sirve para descartar a quien dice estar donde no está?».
Estado del servicio
- Versión
- —
- Base de datos
- —
- Tokens
- —
- Informes IA
- —