La Salida es el espejo de la Entrada. Donde la entrada imprime y pega un tag,
la salida apunta el Q3000 y reconcilia. Sesenta y dos cajas dejan de contarse de a una:
el operador barre la estiba con la pistola y la pantalla sube como un Geiger.
El número es el héroe, la red susurra, y lo único que importa es la
diferencia — qué cuadra, qué falta, qué sobra.
Renderizado en el iData T1 Pro acoplado al Q3000 UHF RFID — el hardware real
ModoEmbarqueDisparaCuadraResuelveSellaListo
0El hogar — dos modos
Una sola app, un solo lenguaje. Al abrir el turno el operador elige el modo y ahí vive a pantalla completa, sin un toggle robando cromo. Cambiar de Entrada a Salida es un gesto deliberado, no un accidente con guante.
0aInicioelige el modo
08:1884%
Almacén Guangzhou
Buenos días, Li.
¿Qué vas a hacer este turno?
EntradaRecibe, mide e imprime el tag12 órdenes esperando
SalidaCarga el embarque con la pistola3 embarques · 1 listo para cargar
LLi WeiOperador · turno mañana
El turno empieza por una decisión, no por un dashboard. Dos modos del mismo tamaño visual; el que tiene trabajo listo (Salida · 1 embarque) brilla en azul Mogos. Cada tarjeta lleva su pulso vivo —cuántas órdenes, cuántos embarques— para que el operador sepa dónde está el trabajo antes de tocar.
0bCambiara mitad del turno
11:0261%
Salida · Almacén Guangzhou
Embarques de hoy
CNTR-4471
Caracas · Marítimo
Listo
Cambiar de modo
El trabajo en curso queda guardado · nada se pierde
Salidacargando · CNTR-4471ahora
Entrada12 órdenes esperando recepción
Cambiar es seguro y reversible. Desde el engrane sube una hoja: el modo actual marcado “ahora”, el otro a un toque. La carga a medias del embarque queda en su sitio —offline-first, igual que una recepción a medias— y el operador la retoma donde la dejó. Sin toggles que se piquen solos.
1Salida — carga el embarque
El operador elige un embarque, barre la estiba con la pistola y la app reconcilia contra el manifiesto: qué cargó, qué falta, qué sobra. La pistola lee cientos de cajas en segundos; el trabajo humano ya no es contar, es cerrar la diferencia.
1Embarqueselige cuál cargar
08:1884%
al día
Salida · Almacén Guangzhou
¿Qué embarque cargas?
CNTR-4471 🚢
En muelle · contenedor abierto
Listo
Caracas · Marítimo · 18 órdenes · 62 cajas
9.4 m³2 con montacargas
Ver resumen
CNTR-4472
Programado · cierra mañana
Programado
Caracas · Marítimo · 11 órdenes · 39 cajas
Ver resumen
El día de salida empieza por elegir el embarque, no por escanear a ciegas. Cada tarjeta resume el contrato —destino, órdenes, cajas, CBM y manejo—. El que está en el muelle con el contenedor abierto brilla; los programados esperan su fecha. Mismo patrón que las rutas del repartidor en Venezuela.
2Resumenantes de cargar
08:1984%
al día
Embarque · CNTR-4471
El plan de carga.
Capacidad del contenedor
94%
62 cajas · 9.4 de 10 m³
Órdenes18
Cajas esperadas62
Peso total1 240 kg
Manejo especial2 órdenes · montacargas
Tags RFID62 codificados
Empezar carga
El contrato del embarque, en hairlines. Antes de jalar el gatillo el operador ve cuánto debe caber: 62 cajas, 94% del contenedor, peso, manejo y que los 62 tags ya están codificados desde recepción. El contenedor se dibuja llenándose. Una sola acción —en violeta RFID— abre la lectura.
3Dispara↦ lectura en masa
08:2479%
Q3000 · conectado
Leyendo la estiba
58/ 62
leídas 58 · faltan 4 · sobran 2
(3)-SF-7741-2 · Marielena R.+1
(2)-ZTO-4420-1 · Ana Gómez+1
(1)-YT-2290-1 · José Pérez+1
Mantén el gatillo · barre la estiba
Terminar y cuadrar
La pantalla firma del proyecto. No hay formulario: hay un contador vivo que sube con cada caja que la pistola encuentra, ondas RFID pulsando hacia la estiba, y un feed de las últimas lecturas que se desvanece. 58 / 62 — el número es el héroe; debajo, ya se insinúa la única pregunta real: faltan 4, sobran 2.
4Cuadra↦ contra el manifiesto
08:2579%
al día
CNTR-4471 · 317 lecturas · 60 únicas
¿Cómo cuadra?
Cargadasleídas y en el manifiesto58
Faltanen el manifiesto, sin leer4
aún no entran al contenedor
Sobranleídas, ajenas a este embarque2
¿de otro contenedor?
Resolver las 4 que faltan
Tres grupos, una verdad. La pistola ya hizo lo difícil; la app traduce 60 lecturas en la única pregunta que importa: cargadas (verde), faltan (ámbar), sobran (violeta RFID). El CTA apunta a la deuda —las 4 que faltan—. Sin sobrantes ni faltantes, esta pantalla se salta sola a “Sella”.
5Resuelve↦ cierra la diferencia
08:3176%
Q3000 · listo
Faltan por cargar · vuelve a barrer
Las que faltan
Pedro Salas(2)-JD-0098-1leída ahora
Pedro Salas(2)-JD-0098-2leída ahora
Carla Méndez(1)-SF-5560-1leída ahora
Luis Ortega(1)-YT-7781-1 · pesadaNo embarca
Diferir 1 y continuar
El gatillo cierra la deuda. Las cajas faltantes son una lista corta; el operador vuelve a barrer y tres se marcan verdes solas al leerse. La que de verdad no entra —pesada, no llegó— se difiere a otro embarque con un toque, no se pierde. Cuando faltan = 0 (cargadas o diferidas), avanza.
6Sella↦ precinto y foto
08:4076%
al día
CNTR-4471 · todo cuadra
Sella el contenedor
Foto del precinto
Precinto0098822
A bordo61 cajas
Diferidas1 · al próximo embarque
Apartadas (ajenas)2 · devueltas a su embarque
Foto
Sellar y despachar
El cierre físico del embarque. Como en recepción se pega una etiqueta, aquí se sella el contenedor: número de precinto, foto del sello (sube directa a OSS HK) y un recap honesto —61 a bordo, 1 diferida, 2 ajenas devueltas—. Nada se declara que la lectura no haya declarado ya. Un toque sella y despacha.
7Listo↦ despachado
08:4176%
en cola
Despachado
CNTR-4471 · Caracas · Marítimo
61
a bordo
1
diferida
9.2m³
cargado
Guardado · subirá al volver la red
Cargar otro embarque
El éxito es local. “Despachado” se declara por la escritura en el dispositivo, no por la red: el susurro pasa a ámbar —en cola, no en error— y el manifiesto sellado subirá a USA cuando el Firewall deje. Tres números cierran el embarque y el operador vuelve al ritmo: el siguiente contenedor.
±Estados que el diseño contempla
La pistola se cae, la batería se agota y a veces el contenedor abierto es el equivocado. El diseño los trata como susurros recuperables —nunca pérdida de datos—, el mismo principio que la Entrada.
Pistola desconectada
El contador se congela y sube el chip Q3000 · reconecta. Lo ya leído vive en SQLite — desconexión ≠ pérdida.
Reanudar tras cierre
Si muere la batería o se cierra la app, el embarque a medias se reanuda: 58/62 ya leídas, continúa. Cada EPC se vacía a SQLite al instante.
Caja dañada
Una caja presente pero rota se marca dañada · no embarca con un toque — sale como una diferida, no reaparece como faltante.
Sello obligatorio
Sellar y despachar se desbloquea solo con precinto y foto — cadena de custodia, como “Pega” exige cada etiqueta en la Entrada.
Lectura baja
Sellar con muy pocas cajas (contenedor equivocado) pide confirmación: “vas a sellar con 2 de 62, ¿seguro?”
Tag sin dueño
Un EPC que no resuelve a ninguna orden local es desconocido · apartar y reportar, no se fuerza a un contenedor.
AEl otro camino — una caja que no es de aquí
La pistola es honesta: lee todo lo que tenga tag, también lo que no debía estar. Una caja de otro embarque cae en “Sobran”. El operador no se detiene —la aparta o la reasigna— y el contenedor sale limpio.
A1Caja ajena↦ sobra en la lectura
08:2678%
al día
Sobra · ajena a CNTR-4471
Esta caja no va aquí.
(4)-EMS-3310-2
Pertenece a CNTR-4472 · Caracas · cierra mañana. Quedó en la estiba equivocada.
Apartar de este embarquevuelve a su contenedor
Moverla a este embarquesi de verdad viaja hoy
Honesto, no alarmante. La pistola encontró un tag que el manifiesto no esperaba. La app dice de quién es —otro contenedor— y ofrece dos salidas: apartar (lo normal) o mover (si el plan cambió). El violeta RFID marca que esto nació de una lectura, no de un error del operador. Si el tag no resuelve a ninguna orden, se marca desconocido y se aparta para reportar.
·Por qué la pistola ganael caso de negocio
62 cajas, un gatilloLo que antes era escanear 62 códigos uno a uno —y equivocarse— ahora es un barrido de segundos.
El error se ve antes de zarparFaltantes y sobrantes saltan en el muelle, no cuando el contenedor ya cruzó el Pacífico.
El tag viaja con la cajaEl mismo EPC que se codificó en recepción se lee en salida y en destino: una identidad, tres momentos.
Cero cuello de botella humanoEl operador deja de contar y pasa a resolver solo la diferencia.
Una idea por pantallaElige · dispara · cuadra · sella. Cada paso pide exactamente una cosa.
El número es el héroeEl contador vivo manda; el cromo desaparece.
La red susurraUn punto, nunca una barra que asusta. En cola ≠ error.
La acción correcta es la únicaUn botón primario por momento; resolver la diferencia primero.
Nunca se detieneFalta, sobra o cuadra: el operador siempre cierra y avanza al próximo embarque.
La Salida es el espejo de la Entrada
Entrada y Salida no son dos apps: son el mismo gesto en reversa. Lo que entró con una etiqueta sale con una lectura. Por eso comparten lenguaje, colores y calma — y por eso el operador no aprende dos productos, sino dos lados de uno.
Entrada → Salida Busca el tracking ↔Elige el embarque Encuentra la orden ↔Dispara la pistola Cajas (cuenta +/−) ↔Cuadra (lee vs. manifiesto) Imprime + Pega el tag ↔Sella el contenedor Recibido (local) ↔Despachado (local)
Lo que un tag cuesta de menos
El mismo EPC codificado en recepción es la columna vertebral: en el almacén China lo lee la pistola para despachar; en Venezuela el repartidor lo lee para entregar. Una identidad por caja, tres momentos, cero transcripción manual. El QR impreso sigue ahí como respaldo de cámara y para la última milla.
BLa ingeniería — del gatillo al manifiesto
El mismo end-to-end, con cada referencia: qué módulo nativo habla con el Q3000, cómo el EPC se codifica en recepción y se lee en salida, y qué archivos de apps/warehouse se tocan. La Salida reusa el esqueleto offline-first de la Recepción (SQLite local + cola de sync); solo cambia el sensor: de impresora a pistola. El combo de campo es el iData T1 Pro + Q3000 con la iQ4R RFID.
El tag combo — UHF + QR, codificado en recepción
amplía recepción
EPC = código de cajala identidad que viaja
apps/warehouse/lib/print/epc.ts — mapea (N)-tracking-i ⇄ EPC 96-bit, esquema propio (no GS1): header + orderId (o trackingNumber si es huérfano) + índice de caja; puro y testeable sin hardware
Etiqueta sobre inlay RFIDuna etiqueta, dos tecnologías
la iQ4R (versión RFID) imprime el QR y el texto Y codifica el EPC en el inlay en una sola pasada — el QR queda de respaldo para cámara y última milla
Comando ZPL de encodese suma al ZPL actual
al lib/print/zpl-label.ts existente se le añade ^RFW,H ^FD{epcHex} ^FS antes del ^XZmanual RFID §4
Módulo nativo — Q3000 UHF (Android · PDA T1 Pro)
nuevo
Wrapper KotlinExpo Modules API
apps/warehouse/modules/idata-rfid/android/ — hermano de idprt-printer; envuelve el iData UHF SDK (RFIDManager)
connect()Bluetooth 5.3 / Pogopin
BT 5.3 → permisos BLUETOOTH_CONNECT + BLUETOOTH_SCAN (Android 12+); pogopin/USB-C → USB host, sin permisos BT datasheet BT/pogopin
startInventory()el gatillo = lectura masiva
modo batch IMPINJ Ex10 / Gen2 — hasta 100 000 tags en lote; cientos de lecturas/s según antena, potencia y densidad; el trigger físico arranca el stream datasheet RFID
onTagRead(epc, rssi)stream → de-dup
cada EPC único se emite una vez; el RSSI permite filtrar lecturas lejanas (otra estiba) — umbral configurable
Potencia y regiónconfig
setPower(dBm) para acotar el alcance (30 m abierto es demasiado en muelle); región 902–928 MHz / 920–925 según país datasheet freq
pre-sincronizado a lib/local-db (SQLite) por las Sync Rules: solo embarques en estado “cargando” bajan al PDA — búsqueda EPC↔caja en ms, sin red
Reconcile (puro)3 conjuntos
cargadas = scanned ∩ manifest · faltan = manifest − scanned · sobran = scanned − manifest — set ops sobre EPCs, testeable sin hardware
Rutas Expo Routerespejo de recepción
app/shipments.tsx → load.tsx → reconcile.tsx → resolve.tsx → seal.tsx → dispatched.tsx (hoy: scan→found→…→done) · el cierre escribe a la cola de lib/sync
El encode que se suma a la etiqueta. El ZPL de recepción no cambia — solo gana una línea: el mismo orderId que ya va en el QR ahora también se graba en el inlay UHF.
^XA … ^FO216,160^BQN,2,10^FDQA,{orderId}^FS
QR real — ya existe (impresión)
^RS8,0,0,1
setup RFID · params exactos según firmware del iQ4R
^RFW,H^FD{epcHex}^FS
graba el EPC en el banco EPC del inlay
^XZ
fin — el printer anula (void) la etiqueta si el encode falla; sin reintento manual
Secuencia — del gatillo al contador. Un stream por barrido; cada EPC único se compara contra el manifiesto local y el contador sube sin tocar la red.
Siguiente paso. Publicar en design.cresco.so/mogos/salida (junto a /recepcion, /impresion). El módulo modules/idata-rfid es el único bloque de hardware nuevo; todo lo demás —offline-first, cola, reconcile— reusa el esqueleto de Recepción. La etiqueta combo ya es imprimible con la iQ4R RFID que el almacén tiene.