Único a gran escala, sin coordinación central
Varios procesos deben poder generar identificadores en paralelo sin consultarse entre sí ni arriesgar una colisión.
El identificador de una unidad tiene que sobrevivir a una etiqueta pequeña, a una cámara mediocre y a que alguien lo escriba a mano. Esto es lo que se le exige y cómo está construido.
El formato no es una elección estética: cada requisito descarta alternativas. Los cinco juntos dejan muy pocas opciones posibles.
Varios procesos deben poder generar identificadores en paralelo sin consultarse entre sí ni arriesgar una colisión.
Conocer un código no debe permitir derivar otros. Un correlativo simple sería enumerable: alguien imprimiría códigos válidos «futuros».
La firma se valida sola. Así un código inventado se descarta en microsegundos de CPU y el registro solo atiende códigos que existen.
Tiene que caber en un QR pequeño con corrección de errores suficiente para tolerar roces, humedad y una etiqueta curva.
Si la cámara falla, el código se escribe a mano en la página de consulta. Eso obliga a agrupar caracteres y a incluir un dígito de control.
El contenido que viaja en el código son veinte bytes con cuatro partes. Cada una responde a uno de los requisitos anteriores.
El texto usa Base32 Crockford, un alfabeto que evita los caracteres que la gente confunde y que trae su propio dígito de control.
El dígito de control se valida en el navegador, antes de llamar a ningún servicio: un error de tecleo se avisa al instante y no gasta una consulta.
La URL va en mayúsculas a propósito. El modo alfanumérico de QR codifica más información por módulo que el modo byte, así que el mismo contenido cabe en un QR una o dos versiones más pequeño: escanea antes y tolera más daño. El esquema y el dominio no distinguen mayúsculas, y el servidor acepta la ruta en mayúsculas.
Un dominio corto también importa: menos caracteres son menos módulos, y menos módulos permiten imprimir más pequeño con el mismo nivel de corrección de errores.
TRZ-9FXK-2M4Q-J8TV-QH3N-7WPD-BL5R-XCK
URL en el QR (mayúsculas, modo alfanumérico):
HTTPS://T.EXAMPLE/V/9FXK2M4QJ8TVQH3N7WPDBL5RXCK De aquí sale el rendimiento, y es la parte del diseño que más se aparta de lo habitual.
La época direcciona la clave, así que no hay que probar claves. La firma descarta la basura sin tocar almacenamiento. La emisión embebida apunta directamente al único registro que contiene el pasaporte. Y la posición dentro de la emisión es la clave exacta de la fila.
Nada busca; todo direcciona. Esa es la diferencia entre un identificador aleatorio —que obliga a consultar la base de datos incluso para descartar basura— y uno firmado, que decide válido o inventado antes de preguntar nada.
La validez de un código la prueba la derivación, no una fila guardada. Al emitir una orden se escribe un registro con su tamaño y su estado; las etiquetas existen matemáticamente desde ese momento. La fila de una etiqueta concreta nace en su primera consulta, de modo que solo las unidades que alguien mira ocupan espacio.
No hay hardware propietario: cada emisor imprime con su propia infraestructura. Lo que se fija es el mínimo que hace que el código se lea en una tienda con luz mala.
El emisor elige una plantilla del sistema y no edita el layout: el sistema inyecta los datos. Así una etiqueta impresa hoy y otra dentro de un año son comparables.
El mismo código con la misma versión de plantilla produce un archivo idéntico byte a byte. No hace falta almacenar artes: se vuelven a generar.
PDF vectorial de imposición, con marcas de corte y registro y sangrado, para tirar pliegos completos.
Lenguaje nativo de impresora térmica, para etiquetar en línea a la velocidad de la máquina.
Salida de solo capa variable, si el fondo de seguridad ya viene preimpreso en offset.
Si le interesa cómo se pide una emisión y cómo se activa desde sus propios sistemas, la referencia de integración lo describe endpoint por endpoint. Si prefiere verlo funcionando, la consulta pública está abierta.