Ir al contenido principal

Caso de éxito · Logística · Despacho aduanero · Web

Caso de éxito EasyTrain: calculadora de costes de transporte de mercancías

Publicado el · Actualizado el · Por YuSMP Group Engineering

Caso de éxito EasyTrain: cómo lanzamos una calculadora de costes de transporte de mercancías en producción — en la web, operada por una empresa de logística que procesa cientos de líneas de especificación de despacho aduanero por solicitud —, construida con Laravel y React, con un modelo de acceso de cuatro roles, un motor de autocompletado de tres escenarios y una base de conocimiento que aprende por sí sola y reduce el tiempo de cálculo en cada nueva solicitud. Lista para auditoría para públicos de Estados Unidos y la Unión Europea, con un tratamiento de datos alineado con el RGPD y la CCPA desde el primer día.

SectorLogística · Despacho aduanero · Web
Año del proyecto2020
ColaboraciónPrecio cerrado + soporte
Calculadora de costes de transporte de mercancías EasyTrain: acceso de operador con Laravel + React y flujo de despacho aduanero para EE. UU. y la UE

El reto: una calculadora logística que resista la auditoría de los operadores

El equipo operativo de EasyTrain tramitaba a mano, cada día, las solicitudes de despacho aduanero de mercancías entrantes, con solicitudes que contenían decenas o cientos de líneas de especificación — códigos HS, atribuciones de marca, clase de IVA, país de origen, nombres de producto. El trabajo de cálculo era repetitivo, el tiempo de respuesta al cliente se resentía visiblemente por la búsqueda manual, y el conocimiento institucional que existía vivía en hojas de cálculo y en la cabeza de los calculistas sénior. Construimos EasyTrain desde cero como una aplicación web que convierte el historial acumulado de solicitudes en una base de conocimiento: una interfaz de operador ligera en React, un plano de control en Laravel que gestiona la identidad, los permisos basados en roles y el motor de predicción, y un flujo de autocompletado de tres escenarios que convierte las coincidencias históricas completas en cierres automáticos con un solo clic y las coincidencias parciales en formularios rellenados que un calculista puede terminar en segundos. La plataforma es operada por una empresa de transporte y logística y está pensada para públicos de EE. UU. y la UE con las expectativas del RGPD y la CCPA desde el primer día.

Aspectos destacados del proyecto

Plano de control en Laravel (PHP)Consola de operador en ReactMotor de autocompletado de tres escenariosControl de acceso de cuatro rolesBase de conocimiento histórica que aprende por sí solaIntroducción masiva de líneas de especificaciónResaltado de campos autocompletadosLanzamiento en EE. UU. y la UE · alineado con el RGPD y la CCPA

En cifras

Un resumen de lo que aportó el desarrollo de EasyTrain en la consola web de operador y el portal de administración en Laravel para públicos de EE. UU. y la UE.

3escenarios de autocompletado — coincidencia completa, coincidencia parcial, sin coincidencia —, cada uno con su propio recorrido en la interfaz
4 rolesen el modelo de acceso — calculista, especialista en nomenclatura, gestor, administrador — con asignación de varios roles
Cientosde líneas de especificación por solicitud entrante de despacho aduanero — la carga de trabajo para la que se construyó el motor de autocompletado
0reintroducción manual de combinaciones código HS / marca / país ya vistas — el autocompletado las arrastra
1consola de operador — una SPA de React servida desde una ruta de Laravel, sin cliente nativo que mantener
8–12 sem.plazo de entrega típico de un portal comparable para operadores logísticos B2B con Laravel + React
Acceso de operador a EasyTrain: control de acceso con Laravel + React con los roles de calculista, especialista en nomenclatura, gestor y administrador

Por qué Laravel + React en lugar de un CRM genérico o una herramienta SaaS de flujos de trabajo

La decisión de stack pesa más que cualquier otra decisión de arquitectura en el desarrollo de un portal de operadores logísticos B2B. Elegimos Laravel en el backend y React en el frontend porque las ventajas e inconvenientes encajan con precisión en un flujo de trabajo específico del dominio que un CRM genérico no puede modelar. Laravel incorpora un modelo de permisos probado en batalla, workers de colas, observabilidad de nivel Horizon y una oferta propia (1st-party) de herramientas de administración (Nova, Filament) que una herramienta SaaS de flujos de trabajo sustituye por primitivas del proveedor. React permite que la consola del operador se comporte como una aplicación de escritorio — edición masiva de filas, navegación con teclado, resaltado visual de los campos autocompletados — sin la penalización de latencia de un generador de formularios low-code.

Las plataformas CRM genéricas — las que intentan absorber todos los flujos de trabajo B2B en un único modelo de objetos — se descartaron pronto: el modelo de acceso de cuatro roles (calculista, especialista en nomenclatura, gestor, administrador) no encaja limpiamente con las primitivas de lead / contacto / oportunidad de un CRM, y el patrón de introducción masiva de líneas con autocompletado de tres escenarios habría exigido código a medida que rompía la ruta de actualización del SaaS en cada versión menor. Elegir Laravel + React supuso que todo el stack — consola del operador, plano de control, base de conocimiento — es abierta, citable y operable de principio a fin por un equipo de producto pequeño.

Laravel + React frente a CRM genérico frente a herramienta SaaS de flujos de trabajo — vista rápida
Criterio Laravel + React (EasyTrain) CRM genérico Herramienta SaaS de flujos de trabajo
Modelado del dominioElemento básico — objetos de línea de especificación, modelo de cuatro roles, motor de tres escenariosPrimitivas de lead / contacto / oportunidadLimitado al metamodelo del proveedor
Modelo de permisosPrimitivas de roles y políticas de primer nivelPerfiles y roles predefinidos del CRMSolo ajustes predefinidos del proveedor
Edición masiva de filasCuadrícula React de nivel escritorioA menudo torpe — registro a registroLímites del generador de formularios low-code
Autocompletado / predicciónMotor determinista a medida sobre la base de conocimientoComplemento o marketplace«IA» del proveedor — opaca
Pista de auditoríaCadena de custodia completa en cada escritura de tuplaRegistro de auditoría controlado por el proveedorRegistro de auditoría controlado por el proveedor
Tiempo hasta el MVP8–12 semanas, lo habitual3–6 semanas para la versión estándar2–4 semanas, pero con dependencia del proveedor
Flexibilidad a largo plazoCódigo abierto — extensibilidad totalLa ruta de actualización del CRM limita la personalizaciónLa hoja de ruta del proveedor marca el ritmo

Referencias del stack: documentación de Laravel, documentación de React, nomenclatura del Sistema Armonizado de la OMA.

Panel de solicitudes en tramitación de EasyTrain: flujo de solicitudes sobre Laravel con tarjetas de estado y operaciones masivas

Consola de operador — React, el flujo de solicitudes y la introducción masiva de especificaciones

La consola de operador en React está construida como una aplicación de una sola página servida desde una ruta de Laravel. Toda la superficie orientada al operador se reduce a un pequeño conjunto de estados — solicitudes en tramitación, solicitudes cerradas, alta de una nueva solicitud, revisión de la base de conocimiento — y cada tarjeta es un único punto de toque que lleva al flujo correspondiente. El panel de solicitudes en tramitación muestra las solicitudes entrantes de despacho aduanero con su ID, su fecha de creación y una acción «Abrir» clara. La introducción masiva de especificaciones vive dentro de la vista de detalle de la solicitud, con navegación con teclado, soporte para pegar desde hojas de cálculo y resaltado visual de cada celda que el motor de autocompletado ha rellenado de antemano.

El panel de introducción masiva es donde la mayoría de los productos logísticos B2B invierten poco, y donde dedicamos un esfuerzo de ingeniería desproporcionado. Cada operador tiene un archivo completo de las solicitudes que ha gestionado, con marcas de tiempo, ID de solicitud y los valores resueltos de cada línea de especificación. Los operadores de California, Nueva York, Texas, Florida y Washington en EE. UU. y los de Países Bajos, Alemania, Francia, Irlanda y Suecia en la UE ven exactamente la misma interfaz en inglés. Toda la superficie en React se entrega como parte de nuestra práctica de desarrollo de aplicaciones web.

Motor de autocompletado de tres escenarios de EasyTrain: la coincidencia completa cierra automáticamente, la parcial rellena de antemano y sin coincidencia se pasa a la introducción manual

Motor de autocompletado de tres escenarios — coincidencia completa, coincidencia parcial, sin coincidencia

El motor de autocompletado es el componente de mayor valor operativo del producto y sigue tres caminos distintos. Una coincidencia completa — cada línea de especificación de la solicitud entrante se corresponde limpiamente con una tupla ya resuelta en la base de conocimiento — cierra la solicitud automáticamente y la deriva al rol de gestor para su visto bueno. Una coincidencia parcial rellena de antemano todas las líneas para las que existe una tupla histórica, resalta las celdas resueltas en la interfaz para que el calculista vea de un vistazo lo que ha rellenado el sistema y deja las líneas restantes para el trabajo manual de nomenclatura. Un escenario sin coincidencia recurre a la vía de introducción manual que el equipo tenía antes de EasyTrain — pero cada cierre correcto añade nuevas tuplas a la base de conocimiento, así que la proporción de casos sin coincidencia disminuye con el tiempo.

Tras la superficie del operador, las colas de Laravel se encargan del trabajo más lento — búsquedas masivas en la base de conocimiento sobre cientos de líneas de especificación por solicitud, reindexación con cada nueva resolución y difusión de notificaciones a los roles de calculista y especialista en nomenclatura cuando una solicitud cambia de estado. El modelo de permisos de cuatro roles (calculista, especialista en nomenclatura, gestor, administrador) mantiene bajo el radio de impacto de un rol mal asignado, y un mismo operador puede tener varios roles en despliegues de equipos pequeños. Todo el motor se construyó pensando en la extensibilidad: añadir una nueva dimensión de especificación, un nuevo rol o un nuevo criterio de cierre automático es un cambio de configuración sobre el servicio de reglas y no una versión de código.

Base de conocimiento de EasyTrain que aprende por sí sola: almacén histórico de solicitudes sobre Laravel, enfoque listo para auditoría, conforme con el RGPD y la CCPA

Base de conocimiento, predicción que aprende por sí sola y enfoque listo para auditoría

El enfoque de autoaprendizaje de EasyTrain fue una decisión de arquitectura antes de ser un reclamo de marketing. La base de conocimiento es un almacén estructurado de tuplas históricas de especificación — código HS, marca, país de origen, nombre del producto, clase de IVA, categoría resuelta — indexadas por la solicitud que introdujo cada tupla. Cada solicitud cerrada añade nuevas tuplas al almacén, y cada nueva solicitud entrante se ejecuta contra el almacén mediante una búsqueda determinista que el equipo de operadores puede razonar, auditar y modificar. No hay una caja negra opaca de ML ni riesgo de deriva del modelo: el sistema es, con honestidad, un índice predictivo determinista sobre el trabajo histórico de la propia empresa.

La identidad del operador está separada deliberadamente de la base de conocimiento. El modelo de permisos de administración de cuatro roles mantiene el derecho a modificar tuplas históricas aislado en el rol de administrador, y las políticas de infraestructura como código hacen cumplir los invariantes de auditoría: cualquier pull request que introduzca una elusión de la comprobación de rol, una escritura de tupla sin registrar o un identificador de larga duración en el plano de predicción falla en CI. El enfoque está pensado para alinearse con las obligaciones del RGPD para los usuarios de la Unión Europea y con las obligaciones de la CCPA / CPRA para los usuarios de California y del resto de Estados Unidos, y para que una futura revisión independiente de preparación sea un ejercicio de documentación y no una reforma de la arquitectura.

Enfoque de cumplimiento: alineado con el RGPD · preparado para ISO 27001 · SOC 2 Type II en curso · apto para HIPAA · CCPA contemplada.

Metodología de entrega

Un desarrollo en cinco fases que llevó a EasyTrain de la especificación del producto a producción para usuarios de Estados Unidos y la Unión Europea.

Fase 1

Descubrimiento y requisitos

Entrevistas sobre el flujo de trabajo de los operadores, definición de cuatro roles (calculista, especialista en nomenclatura, gestor, administrador), especificación del autocompletado de tres escenarios, mapeo del enfoque RGPD + CCPA.

Fase 2

Stack y plano de control

Esqueleto del plano de control en Laravel, estructura base de la consola de operador en React, modelo de permisos de cuatro roles, esquema de la base de conocimiento, servicio de reglas del motor de tres escenarios.

Fase 3

Desarrollo de plataforma

Panel de solicitudes en tramitación en React, cuadrícula de introducción masiva de líneas de especificación, resaltado del autocompletado, consola de administración en Laravel, aplicación de permisos según el rol.

Fase 4

Refuerzo de seguridad listo para auditoría

Políticas de infraestructura como código que bloquean regresiones de elusión de la comprobación de rol, modificación de la base de conocimiento solo por el administrador, cola antifraude para comportamientos inusuales de los operadores, estructura base para la preparación de terceros.

Fase 5

Lanzamiento y telemetría

Lanzamiento web en regiones con solapamiento de EE. UU. y la UE, runbooks para los cuatro roles de operador, paneles de monitorización de la API de trading y de los workers de colas, soporte posterior al lanzamiento.

Asignación de varios roles, visto bueno del gestor y el puente de derechos de acceso

La capa operativa de EasyTrain se construyó para que la plataforma pudiera extenderse hacia un futuro multi-tenant y multirregión sin reescribirla en una v2. El servicio de derechos de acceso ya admite varias asignaciones de rol por operador, el modelo de permisos de administración ya aísla los privilegios de administrador del visto bueno del gestor y del rendimiento del calculista, y la infraestructura de colas ya gestiona la reindexación diferida de la base de conocimiento y la difusión de notificaciones. La hoja de ruta publicada añade un despliegue multi-tenant en el que un holding logístico matriz puede alojar varias filiales en una misma instancia de EasyTrain con bases de conocimiento aisladas, una API pública para la integración directa por EDI con los ERP de los clientes, un panel de analítica más profundo con tendencias del rendimiento de los calculistas y de la tasa de resolución, y un módulo de exportación de auditoría que muestra todos los eventos de escritura de tuplas en una única descarga — cada uno sobre el plano de control de Laravel existente y no como un stack aparte. Dentro del plano del operador, lo único que circula es un token de sesión opaco de corta duración; la base de conocimiento nunca ve la superficie de identidad del operador, ni siquiera si se ve comprometida. El modelo de cuatro roles, el indicador de asignación de varios roles y el paso de visto bueno del gestor leen del mismo registro de derechos de acceso, de modo que el estado de un operador se resuelve de forma limpia en la consola, en el portal de administración y en la futura API pública. Todo el subsistema se construyó pensando en la extensibilidad: añadir un nivel B2B, una vista multi-tenant o un endpoint de socio EDI es un cambio de configuración sobre el servicio de derechos de acceso y no una versión de código.

Lanzamiento en Estados Unidos y la Unión Europea

EasyTrain se lanzó en la web con la consola de operador activa en Estados Unidos y la Unión Europea. La versión en inglés atiende a operadores de California, Nueva York, Texas, Florida y Washington en EE. UU., y a operadores de Países Bajos, Alemania, Francia, Irlanda y Suecia en la UE, sin una base de código distinta por región. Los flujos de consentimiento se adaptan a la región en la capa del cliente: los operadores de la UE y el EEE reciben una pantalla granular de consentimiento al estilo RGPD con interruptores separados para cualquier analítica de producto opcional; los operadores de California reciben, dentro del mismo flujo, un aviso al estilo CCPA «No vender ni compartir mi información personal». Las prácticas de tratamiento de datos están alineadas con el RGPD para los usuarios europeos y con el mosaico de leyes estatales de privacidad de EE. UU.: CCPA / CPRA (California), VCDPA (Virginia), CPA (Colorado), CTDPA (Connecticut), UCPA (Utah), TDPSA (Texas) y la CPA de Oregón. Como la arquitectura del registro de auditoría del operador documenta cada escritura de tupla, que es lo que más preocupa al mosaico normativo, el cumplimiento regional se reduce a una divulgación honesta y no a una segregación de datos por jurisdicción.

El despliegue de Laravel se realizó en paralelo en regiones cloud de la UE y con solapamiento de EE. UU., con los workers de cada región aprovisionados de forma idéntica a partir de imágenes inmutables. El servicio de emparejamiento que resuelve el autocompletado de tres escenarios en cada solicitud ejecuta workers sin estado que pueden fijarse de forma independiente a regiones de la UE o de EE. UU. para futuros compromisos de residencia de datos. La política de privacidad dentro de la app se redactó para documentar exactamente la arquitectura anterior, citando directamente las obligaciones del RGPD y las obligaciones de la CCPA de California. El equipo de ingeniería que respalda el desarrollo trabaja en horario CET y mantiene una jornada CET con solapamiento con la costa este de EE. UU. (9:00–13:00 ET) para reuniones diarias (stand-ups), la coreografía del despliegue a operadores y la respuesta a incidencias — la zona horaria que permite a un equipo de producto de EE. UU. y a un equipo de ingeniería de la UE compartir cuatro horas de solapamiento en directo cada día.

Stack tecnológico y hoja de ruta

PHPLaravelLaravel QueuesLaravel HorizonLaravel PoliciesReactTypeScriptVitePostgreSQLRedisElasticSearchNginxDockerKubernetesTerraformPrometheusGrafana

La hoja de ruta activa de desarrollo de software a medida para EasyTrain incluye un despliegue multi-tenant para holdings logísticos matriz, una API pública para la integración directa por EDI con los ERP de los clientes, una vista de analítica más profunda con tendencias del rendimiento de los calculistas y de la tasa de resolución, y un módulo de exportación de auditoría que muestra todos los eventos de escritura de tuplas en una única descarga. Está prevista un nivel B2B con gestión de equipos y SSO para casos de uso logísticos empresariales de EE. UU. y la UE, con el subsistema de derechos de acceso ya estructurado para la asignación multipuesto. Los planes de infraestructura incluyen más automatización de la consola de administración, un banco interno de verificación continua frente a los invariantes de la comprobación de rol y una futura evaluación independiente de preparación integrada en la hoja de ruta de cloud y DevOps.

Cree algo similar: hable con nosotros

Si está planificando un portal de operadores logísticos B2B, un producto de automatización del despacho aduanero o cualquier aplicación web en la que el registro de auditoría y el acceso basado en roles tengan que superar a un revisor externo ante públicos de EE. UU. y la UE, hemos entregado este stack de principio a fin y podemos acortar de forma notable el plazo de desarrollo. El equipo de ingeniería que lo respalda forma parte de YuSMP Group. Trabajamos a precio cerrado para MVP bien acotados y con equipos de desarrollo dedicados para la entrega continua, con jornada CET y una ventana garantizada de solapamiento con la costa este de EE. UU. (9:00–13:00 ET) para reuniones diarias, demos y respuesta a incidencias.

Reservar una llamada inicial Ver servicios de software empresarial

Preguntas frecuentes

¿Cuánto cuesta construir una calculadora de costes de transporte de mercancías como EasyTrain?

Un MVP de portal de operadores logísticos B2B que cubra una consola web en React, un plano de control en Laravel, un modelo de permisos de cuatro roles, un motor de autocompletado de tres escenarios y una base de conocimiento histórica suele costar $70k–$160k. Añadir un despliegue multi-tenant, una API EDI pública, analítica más profunda y un módulo de exportación de auditoría lleva un producto completo a $200k–$420k. Los principales factores de coste son el modelo de permisos de cuatro roles, el esquema de la base de conocimiento y su historia de migración, y la coreografía del despliegue a operadores en los flujos de calculista, especialista en nomenclatura, gestor y administrador.

¿Por qué usar Laravel + React para un portal logístico B2B en lugar de un CRM genérico?

Laravel incorpora un modelo de permisos probado en batalla, workers de colas, observabilidad mediante Horizon y una oferta propia de herramientas de administración que un CRM genérico sustituye por primitivas del proveedor que no encajan limpiamente con un flujo de calculista / especialista en nomenclatura / gestor / administrador de cuatro roles. React permite que la consola del operador se comporte como una aplicación de escritorio — edición masiva de filas, navegación con teclado, resaltado visual de las celdas autocompletadas — sin la penalización de latencia de un generador de formularios low-code. Para un flujo de trabajo específico del dominio como la introducción de especificaciones de despacho aduanero, Laravel + React es la opción de menor riesgo.

¿Cómo se construye una base de conocimiento que aprende por sí sola para un producto logístico B2B?

Un enfoque de autoaprendizaje defendible es una decisión de arquitectura, no un reclamo de marketing. La base de conocimiento es un almacén estructurado de tuplas históricas de especificación — código HS, marca, país de origen, nombre del producto, clase de IVA, categoría resuelta — indexadas por la solicitud que introdujo cada tupla. Cada solicitud cerrada añade nuevas tuplas al almacén, y cada nueva solicitud entrante se ejecuta contra el almacén mediante una búsqueda determinista que el equipo de operadores puede auditar y modificar. No hay una caja negra opaca de ML ni riesgo de deriva del modelo: el sistema es, con honestidad, un índice predictivo determinista sobre el trabajo histórico de la propia empresa.

¿Cuáles son las normas del RGPD y la CCPA para los portales de operadores logísticos B2B?

Para los operadores de la Unión Europea y el EEE, el RGPD exige un mecanismo granular de consentimiento, una política de privacidad clara y una base documentada para cualquier tratamiento de datos vinculados al operador. Para los operadores de California, la CCPA / CPRA exige un aviso «No vender ni compartir mi información personal» y el derecho de supresión, y la VCDPA de Virginia, la CPA de Colorado, la CTDPA de Connecticut, la UCPA de Utah, la TDPSA de Texas y la CPA de Oregón añaden expectativas similares estado por estado en todo Estados Unidos. Una arquitectura de registro de auditoría que documente cada escritura de tupla es la forma más limpia de hacer llevadero el cumplimiento regional en un portal B2B.

¿Cuánto se tarda en lanzar una calculadora de costes de transporte en la web?

Un MVP bien enfocado con Laravel + React, un modelo de permisos de cuatro roles, un motor de autocompletado de tres escenarios, una base de conocimiento histórica y una consola de operador suele llevar 8–12 semanas. Añadir un despliegue multi-tenant, una API EDI pública, analítica más profunda y un módulo de exportación de auditoría suma 6–10 semanas. La fase de refuerzo listo para auditoría — invariantes de la comprobación de rol aplicados en IaC, modificación de la base de conocimiento solo por el administrador, evaluación de preparación por terceros — se subestima con frecuencia y conviene presupuestarla en 3–5 semanas de trabajo dedicado.

Compartir este caso

LinkedIn X

Planifique un desarrollo similar

Reservar una llamada inicial

Pedir propuesta

Cuéntenos algunos detalles y un consultor sénior le responderá en un día hábil.