Sigue vigente
La regla del identificador CP-NNNNNN-D con dígito verificador Mod-10 no cambia.
Identificador único de casillero¶
Punto crítico
El identificador del usuario es el eje central del sistema. Es el primer criterio para asociar compras, paquetes, consolidaciones y envíos.
Solo se asigna a usuarios registrados en EE.UU.
El identificador de casillero se asigna únicamente a usuarios registrados en la app que viven en Estados Unidos (ver la Regla de origen del usuario). Las personas en Cuba que reciben paquetes no tienen identificador porque no se registran; aparecen como destinatarios del usuario registrado.
Regla fija — Address Line 2
El identificador siempre va en Address Line 2 en todas las plataformas (Amazon, SHEIN, Temu, etc.). Esta regla es invariable y debe comunicarse en los tutoriales de cada plataforma.
Objetivo del identificador¶
El identificador debe permitir que un paquete recibido en el almacén pueda asociarse rápidamente con el usuario correcto, ya sea de forma manual, mediante búsqueda en la app, por escaneo de QR, código de barras u OCR sobre la etiqueta del paquete.
Formato oficial visible¶
CP-001042-8
Formato interno normalizado¶
CP0010428
El sistema debe aceptar búsquedas con guiones, espacios, minúsculas o mayúsculas, pero siempre debe normalizar el valor antes de buscarlo.
| Entrada del usuario | Normalizado |
|---|---|
CP-001042-8 |
CP0010428 |
cp0010428 |
CP0010428 |
cp 001042 8 |
CP0010428 |
CP 001042 8 |
CP0010428 |
Estructura del identificador¶
CP - 001042 - 8
│ │ │
│ │ └── Dígito verificador
│ └───────── Número secuencial único del usuario
└──────────────── Prefijo del casillero
| Parte | Descripción | Ejemplo |
|---|---|---|
| Prefijo | Identifica el casillero (configurable) | CP |
| Secuencial | Número único del usuario (6 dígitos, ceros a la izquierda) | 001042 |
| Dígito verificador | Calculado automáticamente | 8 |
Prefijo¶
- Configurable (preferiblemente 2-3 letras mayúsculas)
- No contiene espacios ni caracteres especiales
- No depende del nombre del usuario
- Estable una vez definido
Número secuencial¶
- Único por usuario
- Generado automáticamente por el sistema
- No editable manualmente por el usuario
- Longitud fija de 6 dígitos con ceros a la izquierda
- No reutilizable aunque el usuario sea eliminado o desactivado
- No debe incluir información personal del usuario
Dígito verificador¶
- Calculado automáticamente a partir del secuencial
- Permite detectar errores de escritura o lectura
- Validado antes de buscar o asociar un paquete
- Si el dígito verificador no coincide, el sistema debe mostrar un error
Algoritmo del dígito verificador¶
El dígito verificador se calcula usando el algoritmo de módulo 10 sobre el número secuencial.
Pasos del cálculo:
- El dígito verificador se calcula únicamente sobre el número secuencial de 6 dígitos. El prefijo no participa en el cálculo.
- Aplicar el algoritmo de módulo 10:
- Recorrer cada dígito de izquierda a derecha
- Multiplicar los dígitos en posiciones impares por 2
- Si el resultado es mayor a 9, restar 9
- Sumar todos los resultados
- El dígito verificador es:
(10 - (suma mod 10)) mod 10
Ejemplo de cálculo:
Base: 001042
Dígitos: 0-0-1-0-4-2
Posición 1 (impar): 0 × 2 = 0
Posición 2 (par): 0 × 1 = 0
Posición 3 (impar): 1 × 2 = 2
Posición 4 (par): 0 × 1 = 0
Posición 5 (impar): 4 × 2 = 8
Posición 6 (par): 2 × 1 = 2
Suma: 0 + 0 + 2 + 0 + 8 + 2 = 12
Dígito verificador: (10 - (12 mod 10)) mod 10 = (10 - 2) mod 10 = 8
Resultado: CP-001042-8
Ejemplo coherente
El ejemplo CP-001042-8 es el resultado oficial del cálculo con el secuencial 001042. El documento usa este ejemplo de forma consistente en todos lados.
Validación en la app de almacén
Cuando el operador escanea o escribe el identificador, la app debe validar el dígito verificador antes de buscar el usuario. Si el dígito no coincide, debe mostrar el error INVALID_CHECK_DIGIT y no permitir continuar.
No eliminar caracteres no permitidos silenciosamente
La normalización elimina guiones y espacios. Cualquier otro carácter no permitido (símbolos, letras extras, etc.) debe generar el error INVALID_FORMAT, no ser eliminado silenciosamente.
Condiciones generales¶
- Único por usuario
- Corto, fácil de leer y escribir manualmente
- Fácil de dictar por teléfono o mensaje
- Evita caracteres confusos
- Siempre visible en la app del usuario
- Copiable de forma independiente
- Convertible en código QR o código de barras
- Imprimible en documentos o etiquetas internas
- Primer criterio operativo para asociar paquetes
- No incluye datos personales (nombre, apellido, teléfono, correo, documento, dirección)
- No cambia después de asignarse
- No se reutiliza para otro usuario
- Se mantiene activo aunque el usuario tenga paquetes pendientes o historial
Caracteres permitidos¶
| Permitidos | No permitidos |
|---|---|
| Letras A-Z | Espacios internos |
| Números 0-9 | Acentos |
Guiones - |
Caracteres especiales (ñ, ., ,, /, etc.) |
| Emojis o caracteres invisibles |
Longitud recomendada¶
Formato: PP-NNNNNN-D
| Componente | Longitud | Tipo |
|---|---|---|
| Prefijo (PP) | 2 | Letras mayúsculas |
| Secuencial (NNNNNN) | 6 | Dígitos con ceros a la izquierda |
| Dígito verificador (D) | 1 | Calculado automáticamente |
- Longitud visible con guiones: 11 caracteres (2 prefijo + 1 guion + 6 secuencial + 1 guion + 1 dígito verificador)
- Longitud normalizada sin guiones: 9 caracteres
Normalización¶
Antes de guardar, buscar o validar, el sistema debe normalizar el identificador:
- Convertir todo a mayúsculas
- Si existen caracteres distintos a letras, números, espacios o guiones, devolver
INVALID_FORMAT - Eliminar espacios y guiones
- Validar longitud (debe ser 9 caracteres normalizado)
- Validar que el prefijo sea correcto
- Validar que el secuencial sea numérico
- Validar el dígito verificador
Validación¶
El sistema debe validar el identificador antes de usarlo para asociar un paquete:
- El código no debe estar vacío
- Debe tener el prefijo correcto
- Debe tener la longitud esperada (9 caracteres normalizado)
- El secuencial debe ser numérico
- El dígito verificador debe ser válido
- El identificador debe existir en la base de datos
- El usuario asociado debe estar activo o en estado permitido
Códigos de error¶
| Código | Mensaje |
|---|---|
EMPTY_CODE |
Identificador vacío |
INVALID_FORMAT |
Formato inválido |
INVALID_PREFIX |
Prefijo inválido |
INVALID_SEQUENTIAL |
Número de casillero inválido |
INVALID_CHECK_DIGIT |
Dígito verificador incorrecto |
NOT_FOUND |
Identificador no encontrado |
USER_NOT_AVAILABLE |
Usuario no disponible para recibir paquetes |
Uso en la dirección de compra¶
Campo oficial: Address Line 2 / Apt / Suite / Unit
El casillero físico está en Miami, Florida, EE.UU. La dirección completa es la misma para todos los usuarios registrados; lo que cambia entre usuarios es el identificador que va en Address Line 2.
| Campo | Valor |
|---|---|
| Nombre | Juan Pérez (nombre del usuario registrado, no del destinatario en Cuba) |
| Address Line 1 | Dirección del almacén |
| Address Line 2 | ISLABOX CP-001042-8 (nombre del casillero + identificador del usuario) |
| City | Ciudad del almacén (Miami) |
| State | Estado del almacén (FL) |
| ZIP | Código postal del almacén |
| Country | EE.UU. (United States) |
La dirección del casillero es en EE.UU., no en Cuba
La persona que compra (usuario registrado) está en EE.UU. y le entrega a Amazon/SHEIN/Temu una dirección en Miami. El paquete viaja luego hacia Cuba, donde lo recibe el destinatario. Por eso el Country de la dirección de compra es siempre EE.UU., nunca Cuba.
ISLABOX como texto visual
ISLABOX es el nombre del casillero y se muestra como texto adicional en Address Line 2. No forma parte del código de identificación del usuario. El código real es CP-001042-8.
Regla obligatoria
El identificador SIEMPRE va en Address Line 2 (también llamado Apt, Suite o Unit según la plataforma). No debe usarse el nombre, ni Address Line 1, ni ningún otro campo.
Si una tienda no permite usar el campo Apt / Suite / Unit, el identificador puede agregarse como respaldo al final del nombre del destinatario:
Nombre del usuario CP0010428
Extracción del identificador desde texto libre¶
Cuando el identificador viene mezclado con texto (por ejemplo, leído por OCR desde una etiqueta o escaneado como parte de una dirección), el sistema debe poder extraer el patrón válido.
Modo 1 — Entrada directa:
El usuario u operador escribe solo CP-001042-8.
Modo 2 — Lectura desde etiqueta o dirección:
El sistema busca dentro del texto un patrón válido: PP-NNNNNN-D o PPNNNNNND.
Texto leído: "ISLABOX CP-001042-8 APT 5"
Código detectado: CP-001042-8
Normalizado: CP0010428
El sistema aplica las mismas reglas de validación después de extraer el código.
Uso operativo en almacén¶
1. Llega el paquete al almacén
2. El empleado revisa la etiqueta
3. El empleado escanea, lee o escribe el identificador
4. La app normaliza el identificador
5. La app valida el formato
6. La app busca el usuario asociado
7. El empleado confirma la información
8. El paquete queda registrado al usuario
9. El sistema notifica al usuario
Búsqueda en la app de almacén¶
La app de almacén debe permitir buscar paquetes o usuarios por:
- Identificador del casillero (criterio principal)
- Código normalizado
- Código visible
- Tracking number
- Nombre del usuario
- Teléfono
- Correo electrónico
- Marketplace o tienda
- Estado del paquete
QR y código de barras¶
El identificador debe poder representarse como QR o código de barras.
| Formato | Contenido |
|---|---|
| QR | CP0010428 |
| Código de barras | CP0010428 |
Se usa el formato normalizado (sin guiones) para códigos automáticos.
Base de datos¶
El sistema debe guardar dos versiones del identificador:
locker_code_display = "CP-001042-8" # Formato visible con guiones
locker_code_normalized = "CP0010428" # Formato para búsqueda, QR y código de barras
Campos recomendados en la tabla de usuarios:
| Campo | Descripción |
|---|---|
| prefijo | Configurable, ej. CP |
| numero_secuencial | 6 dígitos, único |
| digito_verificador | Calculado automáticamente |
| identificador_visible | Con guiones, ej. CP-001042-8 |
| identificador_normalizado | Sin guiones, ej. CP0010428 |
| fecha_creacion | Timestamp |
| estado | activo / suspendido / desactivado / bloqueado / cerrado |
Estados del identificador¶
| Estado | Descripción |
|---|---|
activo |
En uso normal |
suspendido |
Temporalmente pausado |
desactivado |
Inactivo |
bloqueado |
Bloqueado por alguna razón |
cerrado |
Cerrado por fin de relación |
Un identificador desactivado no debe reasignarse a otro usuario.
Reglas de unicidad¶
- No existen dos usuarios con el mismo identificador
- No existen dos usuarios con el mismo número secuencial dentro del mismo prefijo
- No se reutiliza un identificador eliminado
- No se puede editar manualmente un identificador ya asignado
- Todo identificador generado queda registrado en historial
Seguridad y privacidad¶
El identificador es público para efectos operativos, pero no debe revelar datos personales:
- ❌ Nombre o apellido
- ❌ Iniciales del usuario
- ❌ Teléfono
- ❌ Correo electrónico
- ❌ Fecha de nacimiento
- ❌ Documento de identidad
- ❌ Dirección personal
- ❌ País de origen
- ❌ Información sensible
Compatibilidad con API¶
Si la agencia aliada ofrece API, el identificador normalizado se envía como referencia externa:
{
"locker_code": "CP0010428"
}
Si el proceso es manual, el identificador visible se usa en pantallas, etiquetas y operaciones internas:
CP-001042-8
Resumen¶
| Formato | Valor |
|---|---|
| Visible | CP-001042-8 |
| Normalizado | CP0010428 |
El identificador debe ser estable, único, legible, validable y usable tanto por personas como por sistemas.
Campos recomendados:
- prefijo
- número secuencial
- dígito verificador
- identificador visible
- identificador normalizado
- fecha de creación
- estado
Criterios de búsqueda¶
Cuando llega un paquete al almacén, el sistema busca al usuario en este orden de prioridad:
- Identificador del casillero (criterio principal)
- Tracking (criterio secundario)
- Nombre (criterio secundario)
Si ninguno coincide, el paquete entra a la cola de conciliación para resolución manual.
Validación¶
Antes de usar el identificador, el sistema debe validar:
- El código no esté vacío
- El prefijo sea correcto
- La longitud sea la esperada
- El secuencial sea numérico
- El dígito verificador sea válido
- El identificador exista en la base de datos
- El usuario asociado esté activo o en estado permitido
Errores esperados¶
Si el identificador no cumple las condiciones, el sistema debe mostrar mensajes claros:
Identificador vacío.
Formato inválido.
Prefijo inválido.
Número de casillero inválido.
Dígito verificador incorrecto.
Identificador no encontrado.
Usuario no disponible para recibir paquetes.
QR y código de barras¶
El identificador debe poder representarse como QR o código de barras.
Contenido para QR y código de barras: CP0010428 (formato normalizado, sin guiones ni espacios)
Seguridad y privacidad¶
El identificador es público para efectos operativos, pero no debe revelar datos personales. No debe contener:
- Nombre ni apellido
- Teléfono ni correo
- Documento de identidad
- Dirección personal
Estado del identificador¶
Estados operativos posibles:
activo
suspendido
desactivado
bloqueado
cerrado
Un identificador desactivado no debe reasignarse a otro usuario.