Salida · emergente · diseño esencial

Nace al cargarlo.

El contenedor no se elige ni se crea: se autora cargándolo. La primera caja lo da a luz —hereda su destino—; su identidad la presta el acero, leído al sellar, nunca tecleado. El operador deja de pensar en contenedores: toca cajas reales y la pantalla se vuelve una ventana al contenedor que se llena. Nada que elegir, nada que configurar, nada que escribir.

Mismo hardware — iData T1 Pro + Q3000 · la reducción llevada al hueso
Las otras dos · V1 planificada /mogos/salida · V2 consolidación /mogos/salida-consolidacion
Acerca Nace Llena Aparta Sella Listo
·Lo que Ive borraría

La V2 todavía hacía elegir un contenedor de una lista — la comodidad de la base de datos filtrándose al mundo del operador. Aquí no hay lista, ni botón “crear”, ni ficha, ni selector de destino, ni precinto tecleado. Queda el bucle más puro: una caja → encuentra su lugar → el nivel sube → la sellas. La pantalla deja de ser un tablero y se vuelve el objeto.

±Estados que el diseño contempla

Aun en su forma más reducida, el diseño sostiene los bordes — sin pedir más atención de la necesaria.

·
Pistola desconectada
El nivel se congela; sube el chip Q3000 · reconecta. Lo cargado vive en SQLite — el contenedor en curso no se pierde.
·
Reanudar el contenedor
Si muere la batería, al volver el contenedor abierto sigue en su nivel: 77%, Caracas. No renace — continúa.
·
Sin tag de acero
Si el contenedor no tiene número legible, se genera uno provisional (CNTR-tmp) y USA lo concilia. El almacén nunca espera.
·
Tag sin dueño
Un EPC que no resuelve a ninguna orden es desconocido: se aparta y se reporta, no entra al contenedor.
·
Sobrepeso antes que volumen
Si el peso llega al límite antes que el volumen, el número cambia a kg y avisa: cierra por peso.
·
Caja dañada
Una caja rota se marca dañada; no suma al nivel y se reporta — no se cuela como cargada.

Tres formas, una escalera de reducción

No son tres productos rivales: son tres grados de la misma idea. Cada peldaño le quita una suposición al sistema y se la devuelve a la realidad física. La V3 es el extremo — el que Ive perseguiría: nada existe hasta que una caja real lo crea.

V1 · planificada
Verifica un plan
El manifiesto y el contenedor ya existen. El operador reconcilia la realidad contra la lista. /mogos/salida
V2 · consolidación
Llena un contenedor
El contenedor existe pero vacío; el manifiesto nace al cerrar. /mogos/salida-consolidacion
V3 · emergente
Lo autora cargando
Ni el contenedor existe: la primera caja lo crea, el acero le da identidad, la pantalla es el objeto. /mogos/salida-emergente
BLa ingeniería — el contenedor append-only

La V3 reusa todo de la V2 —el módulo idata-rfid, el EPC de recepción, el medidor por CBM, la cola offline-first— y le quita una sola cosa: el contenedor deja de pre-existir. Se crea en el dispositivo con la primera caja (append-only puro), y su número de acero se captura al sellar. China produce hasta el contenedor; nada baja de USA.

El contenedor emergente — creado en el dispositivo
nuevo
openContainer(firstBox)la primera caja lo crea
apps/warehouse/hooks/shipment/use-container-fill.tsx — al primer onTagRead sin contenedor abierto: crea { localId, destino: order.destino, capacityM3, status:'abierto' } en SQLite local (synced:false)
Identidad del aceroleída, no tecleada
al sellar: cámara lee el nº del contenedor (OCR/QR) y el precinto → steelId + sealNumber; si no hay nº legible, localId provisional y USA concilia
Una caja → un destinoun contenedor a la vez
order.destino ≠ container.destino → offRoute (apartar); su propio contenedor nace cuando el operador cargue hacia ese destino
Todo lo demássin cambios
Σ cbm = nivel, validación solo-destino, barrido híbrido Q3000, cierre = congela EPCs = manifiesto → cola lib/sync reusa V2
La pantalla-objeto — la “ventana”
nuevo
FillWindowel componente héroe
la altura del líquido = fillPct (de capacity.ts); el número = box count; render nativo con Reanimated para que el nivel suba fluido al cargar/barrer — la app es una ventana, no un dashboard
Sin rutas de menúel flujo no vuelve atrás
app/load.tsx arranca en “Comienzo”; al sellar (app/sealed.tsx) el siguiente escaneo reabre load.tsx con un contenedor nuevo — sin pantalla de selección
La tercera hermana. Esta es la V3 · Emergente (design.cresco.so/mogos/salida-emergente), la más reducida. Junto a V1 · Planificada y V2 · Consolidación forman la escalera completa — del “verifica un plan” al “nace al cargarlo”. Mismo hogar, mismo hardware, mismo módulo idata-rfid. Tú eliges en qué peldaño vive el producto.