MF-05 · crear envío · sep 2026

Mobile · crear envío

Seis pasos, una decisión por pantalla, y un QR que se gana.

El flujo de mayor valor de la app. La web tiene dos flujos: el formulario vivo y un chat congelado en el Figma viejo que ya nadie enlaza. La app no porta ninguno de los dos: toma el modelo de datos completo del formulario —corredor, almacén, categorías, packing list con IA, borrador— y el ritmo una-cosa-a-la-vez del chat, en un wizard modal de seis pasos. El packing list va al frente y rellena categorías y medidas; la dirección nueva se captura con el mapa fullscreen que MF-02 ya construyó; y el shipping mark es el hilo narrativo: un candado que aparece en el paso 1, viaja junto al stepper y se abre al confirmar, aterrizando en el detalle de MF-04 con el QR vivo.

Forma
wizard modal · 6 pasos
IA
packing list al frente
Mapa
kit MF-02, reusado
Momento
zarpe + candado · 640 ms
Borrador
autoguardado + reanudar
Estimado
apagado, como la web

01El marco: seis pasos y un candado

create-shipment/_layout · stepper.tsx (mobile-ui) · use-shipment-draft

El wizard se presenta como modal fullscreen desde el ítem «Nuevo envío» del sheet de crear (MF-03), con el requireCompleteProfile que ya guarda esa puerta. Header del producto: atrás, título, y a la derecha el QR mini con candado — la promesa de la pantalla final viajando por todo el flujo. Debajo, el stepper de mobile-ui comprimido a seis; abajo, la barra de acción con el susurro de autoguardado: el borrador se guarda solo en cada paso, la ✕ no pregunta nada.

9:41●●●
Crear envío
1Origen 2Destino 3Mercancía 4Medidas 5Archivos 6Resumen

¿Dónde entregarás tu mercancía?

Selecciona el almacén Mogos donde tu proveedor enviará los paquetes. Desde ahí los consolidamos y enviamos a tu país.

GuardadoContinuar
  1. Modal, no pestaña

    presentation:'modal' de expo-router sobre el shell. La ✕ no existe: atrás baja un paso y, en el paso 1, cierra. Nada se pierde: el borrador ya está guardado.

  2. El candado que promete

    El QR mini (34 px, radio 9) lleva el patrón difuminado y el candado marino. No es decoración: es la misma tarjeta de anticipación de MF-04 comprimida a insignia, y se abre en la última pantalla.

  3. Stepper de seis, comprimido

    El stepper de mobile-ui con círculo 22 y rótulo 9,5 — seis caben en 358 px. Los hechos quedan en azul con check y se puede volver; los pendientes no responden.

  4. Una pregunta por pantalla

    El título del paso es una pregunta en display 22. Los textos son los de la web (account.createShipment.*): mismo i18n, misma voz, es/en/zh.

  5. La barra que susurra

    «Guardado ✓» en 11,5 gris junto al CTA. El debounce de 500 ms de use-shipment-draft ya existe en la web; aquí persiste en MMKV por usuario.

  6. El corredor se hereda

    Si el chip del shell ya filtra una ruta, el paso 1 abre directo en los almacenes. Sin corredor, la puerta de ruta aparece primero (§02).

Los dos almacenes reales del corredor China salen de warehouses (rol ORIGIN, marítimo primero) y las etiquetas de modo de sus ShippingLocations — el mismo dato que valida el API, nunca el nombre. Un solo almacén → se autoselecciona; ninguno → estado vacío con soporte. Nada se marca «recomendado»: el cliente elige.

02Origen: la puerta, el aéreo y la transición

corridor-selection-gate.tsx · air-warehouse-dialog.tsx · warehouse-address-card.tsx · shipping-mark-anticipation-card.tsx

Tres variantes del paso 1. Sin corredor elegido, la puerta de ruta abre el paso — la misma tarjeta discontinua brand de la web. Elegir un almacén aéreo mantiene la selección pero abre el sheet de contacto: los aéreos se conversan por WhatsApp antes. Y al continuar, la transición «así nos la envías»: la única pantalla del flujo que el cliente necesita antes de que su mercancía viaje — la dirección del almacén lista para copiar o compartir al proveedor, y la tarjeta de anticipación del QR con candado que MF-04 ya diseñó.

Sin ruta el gate abre el paso
9:41●●●
Crear envío
1Origen2Destino3Mercancía4Medidas5Archivos6Resumen
Selecciona una ruta para continuar

Elige la ruta de envío para que podamos asignarte el almacén correcto y mostrarte las opciones disponibles.

🇨🇳 China → Venezuela 🇺🇸 EE. UU. → Venezuela
GuardadoContinuar
Aéreo se conversa primero
9:41●●●
Crear envío
1Origen2Destino3Mercancía4Medidas5Archivos6Resumen

¿Dónde entregarás tu mercancía?

Almacén YiwuMarítimo
Almacén GuangzhouAéreo
GuardadoContinuar
Envíos aéreos: contáctanos primeroLos envíos aéreos tienen requisitos específicos de mercancía, empaque y peso. Escríbenos por WhatsApp y te damos al detalle todo lo que debes cumplir para enviar por vía aérea con nosotros.
Contactar por WhatsApp Entendido
La transición «así nos la envías»
9:41●●●
Crear envío

Así nos la envías

Dirección del almacén MogosEnvía tus paquetes a esta dirección
Almacén YiwuN.º 168, Chengbei Road, distrito Futian, Yiwu, Zhejiang, China
+86 579 8555 0168
DestinatarioMogos Group Import & Export Co.
Shipping markQR
Lo generamos al crear tu orden

Tu shipping mark es un código QR único. Aparecerá al confirmar, listo para enviárselo a tu proveedor.

  1. 1Recibes tu QRAl confirmar esta orden, en la última pantalla.
  2. 2Tu proveedor lo pega en cada cajaEn China o EE. UU., antes de despachar.
  3. 3Lo escaneamos al recibirAsí reconocemos que esas cajas son tuyas.

Hazle llegar este código a tu proveedor: así reconocemos tus cajas apenas lleguen a nuestro almacén.

CompartirContinuar

La puerta de ruta usa el mismo lenguaje que la web (border-2 dashed brand-300 sobre lavado brand). El sheet aéreo reemplaza al AirWarehouseDialog: en el teléfono los diálogos de una acción son sheets; el verde es el de WhatsApp, no un token Mogos — igual que el botón de WhatsApp del perfil web. La transición reusa verbatim la anticipación de MF-04 (shipping-mark-anticipation-card.tsx): mismo héroe celeste al 50 %, misma numeración mono, misma nota ámbar. «Compartir» abre el share sheet nativo con el bloque de dirección completo — lo que la web resuelve con dos botones de copiar.

03Destino: retiro, guardadas o el mapa

address-section.tsx · new-address-capture.tsx (MF-04) · address-capture.tsx (MF-02)

El paso 2 replica la regla de la web: «retirar en almacén destino» no es una dirección — es la ausencia de una, y por eso va fijada arriba, seleccionada por defecto para quien no marcó dirección primaria. Tocar una dirección guardada es un solo gesto que decide las dos cosas (entrega a domicilio + cuál). Y «Nueva dirección» no abre un formulario: abre el mapa fullscreen que MF-02 ya construyó — el mismo que MF-04 ya reusa en la edición.

9:41●●●
Crear envío
Origen2Destino3Mercancía4Medidas5Archivos6Resumen

¿A dónde llevamos tu envío?

Elige una dirección guardada o crea una nueva.

Retirar en almacén destino Mogos GroupRetiras tu mercancía en Almacén Caracas. No se despacha a domicilio.

Direcciones guardadas

Casa

Av. Ppal de Los Ruices, Edif. Centro Empresarial Miranda, piso 3, Caracas, Miranda, Venezuela

Oficina

Calle París con calle Mucuchíes, Las Mercedes, Caracas

Necesita verificación Corrige esta dirección primero para poder usarla en tu envío.
Nueva dirección · seleccionar en mapa
GuardadoContinuar
Av. Francisco de Miranda
Parque del Este
9:41●●●
Buscar dirección...
Ubicación detectada

Av. Francisco de Miranda, Los Palos Grandes, Chacao 1060, Miranda

Usar esta ubicación
  1. El retiro no es una fila más

    Va arriba, con su tarjeta propia: es el default de quien no tiene dirección primaria — la misma regla que el API aplica en resolveDeliveryMethod. Nombra el almacén real (useDestinationWarehouses).

  2. Un gesto, dos decisiones

    Tocar una dirección la selecciona y cambia a entrega a domicilio; guardar una nueva hace lo mismo. Nada de elegir «método» y después «cuál».

  3. La verificación bloquea, y explica

    Una dirección con needsVerification se muestra al 60 %, con la insignia ámbar y la línea que dice qué hacer. Se corrige en Perfil (MF-09) o creando una nueva aquí.

  4. El mapa no se rediseña

    Es address-capture de MF-02 presentado como superficie perezosa — el patrón exacto de new-address-capture.tsx de MF-04: React.lazy, el SDK de mapas fuera del grafo del wizard.

  5. Tres alturas, teclado incluido

    La hoja colapsada mide lo que mida la dirección detectada; media para el formulario; completa cuando el teclado empuja. Todo eso ya existe (use-address-sheet-keyboard).

  6. Al guardar, avanza

    La dirección nueva vuelve seleccionada (la respuesta del API, con su alias sugerido) y el paso queda listo para continuar. El alias se edita inline, como en la web.

La teja del mapa es de Google — no es superficie de marca: tierra gray-100, manzanas gray-50, agua celeste-soft, parques lima-soft, exactamente la convención que fijó la pieza de MF-02. El pin no se arrastra: se mueve el mapa debajo, con la sombra en el suelo.

04Mercancía: la IA va primero

packing-list-card.tsx (packages/ui) · use-packing-list-parser · packing-list-extractions · multi-select.tsx

La decisión de estructura del paso 3: el packing list se ofrece antes de pedir nada a mano — si el cliente lo sube, categorías y medidas llegan llenas y los dos pasos siguientes son confirmar, no teclear. La tarjeta es la única mancha celeste del formulario, y sus cuatro estados son los del contrato de la web: adjunto, analizando, listo con resumen, y el error clasificado que nunca bloquea — siempre se puede seguir a mano.

Vacío la oferta
9:41●●●
Crear envío
OrigenDestino3Mercancía4Medidas5Archivos6Resumen

¿Qué estás enviando?

¿Tienes packing list?

Súbelo y completamos volumen, cajas, peso y categorías por ti.

PDFJPGPNGXLSSubir
Categorías de mercancía
Selecciona categorías
Tipo de mercancía (opcional)
ej: Vasos, Ropa, Electrónicos...
Tipo de envío
MarítimoAéreo
Seleccionado automáticamente: el almacén es marítimo.
GuardadoContinuar
Analizando polling, sin bloquear
9:41●●●
Crear envío
OrigenDestino3Mercancía4Medidas5Archivos6Resumen

¿Qué estás enviando?

packing-list-yiwu-sep.xlsx1,2 MB Analizando

Suele tardar menos de un minuto. Puedes seguir completando mientras tanto.

Categorías de mercancía
Selecciona categorías
Tipo de mercancía (opcional)
ej: Vasos, Ropa, Electrónicos...
Tipo de envío
MarítimoAéreo
GuardadoContinuar
Listo autorrelleno editable
9:41●●●
Crear envío
OrigenDestino3Mercancía4Medidas5Archivos6Resumen

¿Qué estás enviando?

packing-list-yiwu-sep.xlsx1,2 MB Listo
Resumen: 18 bultos de ropa deportiva y calzado, 6,4 m³, 1.240 kg. Sin mercancía peligrosa declarada.

Datos completados. Categorías, volumen, cajas y peso ya están llenos — puedes editarlos.

Categorías de mercancía
RopaCalzado
Tipo de envío
MarítimoAéreo
GuardadoContinuar
Error clasificado, nunca bloquea
9:41●●●
Crear envío
OrigenDestino3Mercancía4Medidas5Archivos6Resumen

¿Qué estás enviando?

packing-list-yiwu-sep.xlsx1,2 MB Error
Demasiados intentos. Alcanzaste el límite diario de análisis. Puedes subir el archivo directamente en el paso Archivos y completar los datos a mano.
Categorías de mercancía
Selecciona categorías
Tipo de envío
MarítimoAéreo
GuardadoContinuar

El contrato de estados es el de packing-list-card.tsx de packages/ui: validación local (tipo, 5 MB) → toast, sin adjuntar; error del API → la píldora roja en el chip y el mensaje debajo de la tarjeta, clasificado por packing-list-extraction.config.ts; éxito → resumen en el idioma del usuario y autorelleno con la nota ✨. El polling corre en background: salir del paso no lo cancela, y si el cliente ya escribió un valor a mano, la IA no lo pisa — la misma regla de la web.

Categorías sheet multi-select (multi-select.tsx)
9:41●●●
Crear envío

¿Qué estás enviando?

¿Tienes packing list?
Categorías de mercancíaElige todas las que traiga tu envío.
Buscar categoría...
Ropa
Calzado
Electrónicos
Juguetes
Hogar y cocina
Repuestos
Otroexige detalle
Listo · 2 seleccionadas
Ayuda ⓘ local, sin IA — MF-11 la conecta
9:41●●●
Crear envío

¿Qué estás enviando?

¿Tienes packing list?
¿Qué tipo de carga es?

Las categorías le dicen a aduana qué viaja en tus cajas. Elige todas las que apliquen: un envío puede llevar ropa y calzado a la vez.

Si nada calza, marca Otro y descríbelo en el campo de tipo de mercancía — ahí sí es obligatorio.

Mercancía peligrosa (baterías, aerosoles, líquidos inflamables) y réplicas se declaran en el paso Medidas: afectan cómo podemos transportarla.

Entendido

La ayuda es un sheet estático con el copy de los topics de la web (cargo-type, volumetric-weight) — decisión 5: sin IA hasta MF-11, que conecta este mismo botón al panel de Mogui sin tocar el diseño.

05Medidas que ya vienen llenas

numeric-input-with-suffix.tsx · lib/units · use-corridor-units · segmented.tsx
9:41●●●
Crear envío
OrigenDestinoMercancía4Medidas5Archivos6Resumen

¿Cuánto ocupa tu carga?

Unidades de esta ruta: M³ · KG
Volumen
6,4M³
Número de cajas
18UDS
Peso
1.240KG
Rellenado del packing list. Puedes editarlo.
Mercancía peligrosa
NoSí
Réplica
NoSí
Número de tracking (China) (opcional)
ej: 123456
Nota adicional (opcional)
Escribe cualquier información adicional relevante...
GuardadoContinuar
  1. Las unidades son del corredor

    lib/units decide M³/KG o FT³/LB según la ruta; el banner lo anuncia una vez y los sufijos lo repiten en cada campo. Los números van tabular-nums.

  2. La chispa marca lo que puso la IA

    El ✨ celeste vive dentro del campo mientras el valor venga del packing list; editarlo a mano lo apaga. Es la traza visible de la extracción — no un adorno.

  3. Sí/No como segmentado

    La web usa selects de dos opciones; en el teléfono un select para «Sí/No» son dos toques y un sheet. El segmented de mobile-ui lo resuelve en uno. Desviación con razón nombrada.

  4. El tracking nombra el país

    «Número de tracking (China)» — el mismo interpolado del i18n web con el país de origen del corredor. Los borradores viejos con internalTrackingNumber se leen igual.

  5. Nada aquí es obligatorio

    El esquema de la web solo exige categorías (y detalle si «Otro»). Medidas vacías → la orden se crea igual y el almacén mide al recibir. El CTA nunca se bloquea en este paso.

  6. El teclado correcto

    Volumen y peso abren decimal-pad; cajas y tracking, number-pad. La coma decimal respeta el locale — lo que la web delega al navegador, aquí se declara.

06Archivos: cámara, galería, documentos

file-upload-zone.tsx · use-upload-file (s3-files/presigned-url) · action-sheet.tsx

El paso 5 traduce el drag & drop de la web a lo que un teléfono hace mejor: la cámara. Fotos de las cajas y factura, cada grupo con sus formatos y su máximo (los de la web: 5 MB por archivo, 10 fotos, 5 documentos). Todo es opcional — la línea de la web lo dice igual: se pueden agregar después desde el detalle del envío.

El paso con subida en curso y un error
9:41●●●
Crear envío
OrigenDestinoMercancíaMedidas5Archivos6Resumen

Fotos y documentos

¿No los tienes a la mano? Puedes agregarlos después desde el detalle de tu envío.

Fotos de las cajas

JPG, PNG o PDF · máx. 10 archivos
CámaraGalería
IMG_4021.jpg2,1 MB
IMG_4022.jpgSubiendo… 64 %

Factura de la mercancía

PDF, XLS o XLSX · máx. 5 archivos
Elegir archivo
factura-proveedor.pdfNo se pudo subir. Revisa tu conexión.Reintentar
GuardadoContinuar
La fuente action-sheet nativo
9:41●●●
Crear envío

Fotos y documentos

Fotos de las cajas

CámaraGalería
Agregar fotos de las cajasHasta 10 archivos de 5 MB.
Tomar fotoLa cámara pide permiso la primera vez Elegir de la galería Buscar en ArchivosPDF y documentos
Cancelar

Cada archivo sube con su presigned-url apenas se elige — no en el submit final: la confirmación del paso 6 no puede esperar tres fotos por LTE. La fila con barra es una subida en curso; la roja, el error recuperable con su «Reintentar». La validación local (tipo, 5 MB) rechaza antes de subir, con el mensaje de la web.

07Resumen, y el QR que se abre

shipment-summary-confirmation.tsx · use-manage-order (POST orders) · shipping-mark (MF-04)

El paso 6 agrupa todo lo elegido con un «Editar» que salta al paso — no un acordeón que se reabre. Si falta algo, la lista ámbar de la web lo enumera y el CTA lo cuenta. Y al confirmar, el único momento orquestado del flujo: la banda marino sube, el barco zarpa, y el candado que acompañó los seis pasos se abre sobre el QR vivo. El aterrizaje es la pantalla de shipping mark que MF-04 ya construyó.

Listo todo confirmable
9:41●●●
Crear envío
OrigenDestinoMercancíaMedidasArchivos6Resumen

Resumen de tu envío

RutaEditar
OrigenAlmacén Yiwu · Marítimo
EntregaRetiro en Almacén Caracas
MercancíaEditar
CategoríasRopa, Calzado
Dimensiones6,4 m³ · 18 cajas · 1.240 kg
PeligrosaNo
RéplicaNo
ArchivosEditar
Adjuntos2 fotos, 1 packing list

Al confirmar, se creará tu envío y recibirás un código de tracking.

Crear orden y generar mi QR
Pendientes la lista ámbar cuenta
9:41●●●
Crear envío
OrigenDestino3Mercancía4Medidas5Archivos6Resumen

Resumen de tu envío

Completa los pasos pendientes para revisar y confirmar tu envío.

RutaEditar
OrigenAlmacén Yiwu · Marítimo
EntregaRetiro en Almacén Caracas
Antes de continuar:
  • Selecciona las categorías de mercancía
Crear envío (1 campo pendiente)

El momento. El POST arranca la coreografía — la banda es el estado de carga: sube mientras la orden viaja, el barco cruza mientras se espera la respuesta, y el QR aparece cuando llega el 201. Tres fotogramas congelados con --at:

t≈120 ms la banda despega del CTA
9:41●●●
Crear envío

Resumen de tu envío

Ruta
OrigenAlmacén Yiwu · Marítimo
Mercancía
CategoríasRopa, Calzado
t≈380 ms el zarpe, mientras responde el API
9:41●●●
Crear envío

Resumen de tu envío

Ruta
OrigenAlmacén Yiwu · Marítimo
t=640 ms el candado cede al QR vivo
9:41●●●
¡Orden en camino! 🚢Tu shipping mark está listo
9:41●●●
Tu shipping mark
Orden creada MG-26-08191
MG-26-08191 · YIWU → CCS
Descargar Compartir
Enviar a mi proveedor Ver mi envío
  1. La banda es el loading

    No hay spinner: la banda marino que sube es la espera del POST. Si el API tarda, el barco sigue navegando en bucle suave; si falla, la banda se retira y el error habla (§08).

  2. 640 ms, tres actos

    Banda 0→100 % en 420 ease-out · barco entra a los 180 con la estela · QR con candado abierto a los 460, ease-spring. El mismo presupuesto del orbe de MF-03.

  3. Aéreo cambia el actor

    Envío AIR → el avión del manual reemplaza al barco y el toast dice ✈️ — el mismo morph temático del toast web («¡Orden en camino!»).

  4. El aterrizaje es MF-04

    La pantalla final es my-shipments/[id]/shipping-mark tal cual existe — QR nítido, descargar, compartir, «Enviar a mi proveedor». El wizard se descarta del stack: atrás desde aquí va al detalle, no al formulario.

  5. Reduced motion

    Sin coreografía: overlay estático «Generando tu QR…» y navegación directa al aterrizaje. El anuncio de VoiceOver es el del toast.

  6. El borrador muere aquí

    clearDraft() recién cuando llega el 201 — cerrar la app a mitad de la animación no pierde nada: la orden ya existe y el borrador ya no.

08El borrador y los días malos

use-shipment-draft · support-dialog.tsx · contrato de red (DECISIONS #13)

Decisión 4: autoguardado silencioso, reanudar explícito. El wizard guarda en cada paso; salir no pregunta nada. Al volver, la pantalla previa ofrece continuar con lo elegido a la vista — o empezar de nuevo. Y los dos días malos del flujo: el destino sin resolver (el diálogo bloqueante de soporte que la web ya convirtió de toast a alertdialog) y la red caída, donde el borrador es la garantía.

Reanudar al reabrir con borrador
9:41●●●
Crear envío

Tenías un envío a medio crear

Puedes continuar donde lo dejaste o empezar de nuevo.

Yiwu · Marítimo Retiro en almacén Ropa, Calzado
Continuar donde ibas Empezar de nuevo
Destino sin resolver el diálogo de soporte
9:41●●●
Crear envío

Resumen de tu envío

Ruta
OrigenAlmacén Yiwu · Marítimo
No pudimos asignar tu almacén destino
Tu dirección está fuera de la cobertura configurada para esta ruta. Escríbenos y lo resolvemos contigo — tu borrador queda guardado.
Volver al resumen Contactar soporte
Sin conexión el borrador es la garantía
9:41●●●
Crear envío
OrigenDestino3Mercancía4Medidas5Archivos6Resumen
Sin conexiónReintentar

¿Qué estás enviando?

¿Tienes packing list?

Necesitas conexión para analizarlo. Puedes seguir completando a mano.

PDFJPGPNGXLSSubir
Categorías de mercancía
Ropa
Guardado en este teléfonoContinuar

La pastilla de red es la ConnectionPill del shell (MF-03) — no un toast nuevo. Sin conexión el wizard no se cierra: los pasos que no necesitan API (medidas, notas) siguen; los que sí (packing list, subir archivos, confirmar) se degradan con su razón dicha. El susurro cambia a «Guardado en este teléfono». El diálogo de soporte replica el SupportDialog de la web: role="alertdialog", foco atrapado, persistente hasta actuar.

09Lo que hay que escribir en Moti

Moti + Reanimated · escala de MF-01 · useReducedMotion
PiezaQué animaDuración · easingReduced motion
Cambio de pasoslide horizontal 24 px + fade del cuerpo; el stepper tiñe el círculo260 ms · ease-outfade 80 ms
Chip del packing listpíldora Analizando → Listo con pop 1 → 1,12 → 1; la nota ✨ entra con rise 12260 ms · ease-springswap directo
Autorelleno de camposlos valores entran con fade + la chispa aparece; nunca mientras se edita160 ms · ease-out · stagger 40swap directo
Sheets (aéreo, categorías, ayuda, fuente)slide-up con el velo marino al 70 %260 ms · ease-outfade 80 ms
El momentobanda 0→100 % (420) · barco/avión entra a los 180 · QR + candado abierto a los 460640 ms · ease-out + springoverlay estático y navegación directa
Susurro de guardadocheck hace pop al guardar; el texto no se mueve160 ms · ease-outsin pop

Fuente de la escala: packages/mobile-ui/src/theme/motion.ts (MF-01). El momento reusa el presupuesto del orbe de MF-03: nada del flujo supera los 640 ms.

10Lo que queda decidido

docs/specs/2026-09-12-mobile-crear-envio.md
  • Decisión 1 · Fabrizio 2026-09-12

    Wizard por pasos; el chat muere

    El chat web (/create-shipment/chat) no se enlaza desde ningún lado y le faltan corredor, almacén, categorías, IA, borrador y shipping mark. La app toma el modelo de datos del formulario + el ritmo del chat: seis pasos, una decisión por pantalla. El chat no se porta.

  • Decisión 2 · Fabrizio 2026-09-12

    Seis pasos, la IA al frente

    El packing list abre el paso de mercancía: si lo sube, categorías y medidas llegan llenas. La transición «así nos la envías» — dirección copiable + anticipación del QR — vive entre origen y destino.

  • Decisión 3 · Fabrizio 2026-09-12

    Sin estimado de costo

    Paridad con la web: CostEstimateCard está apagada por producto (2026-08-10). El resumen cierra con el disclaimer, sin cifras. Cuando la web la encienda, se diseña aquí como iteración.

  • Decisión 4 · Fabrizio 2026-09-12

    Autoguardado + reanudar

    Guarda solo en cada paso (MMKV por usuario); la salida no pregunta. Al volver: «Continuar donde ibas / Empezar de nuevo» con lo elegido a la vista. clearDraft() recién con el 201.

  • Decisión 5 · Fabrizio 2026-09-12

    Ayuda local, sin IA

    Los ⓘ abren sheets estáticos con el copy de los topics de la web. MF-11 conecta esos mismos botones al panel de Mogui sin rediseñar.

  • Decisión 6 · Fabrizio 2026-09-12

    «El QR que se gana»

    Wizard calmo, campos del producto; la marca aparece donde carga significado: la tarjeta celeste de la IA, el candado que viaja y el zarpe final de 640 ms. Un solo momento orquestado.

  • Reuso · consecuencia

    El mapa no se rediseña ni se reimplementa

    Nueva dirección = address-capture de MF-02 como superficie perezosa, el patrón exacto de new-address-capture.tsx (MF-04). El interactive-map-dialog.tsx web (796 líneas) no se porta.

  • Deuda anotada · para goal-phases

    Embudo sin eventos, y dos piezas muertas en la web

    La web no emite eventos de creación: definir shipment_create_* (paso visto, IA usada, confirmado) es fase de esta MF, alineado con PostHog web. Y quedan anotados para limpieza web (no de esta MF): el chat huérfano y NextDeparturesBanner, definido y jamás montado.