cabgo
InicioAcceder

Jerarquia de Configuraciones

El arbol de decision que usa la plataforma cuando una misma variable (tarifa, comision, minimo, toggle) puede definirse a nivel Empresa, Servicio o Zona+Servicio

Por que existe una jerarquia

Una operacion real necesita ajustar la misma variable en distintos niveles: el precio base lo defines a nivel Empresa, pero un servicio premium puede tener su propia tarifa, y dentro de la zona Norte puede valer distinto que en la zona Centro. La plataforma resuelve esto en cadena, leyendo de mas especifico a mas general. Conocer el orden exacto evita conflictos de calculo cuando guardas un override en una capa y otro en otra.

La regla general (de mas especifico a mas general)

Para CUALQUIER variable que admita jerarquia, la plataforma resuelve en este orden y se queda con el primer valor disponible:

1

Zona + Servicio (ZoneServiceConfig)

El nivel mas granular: combinacion zona x tipo de servicio. SOLO se considera cuando el flag de opt-in correspondiente esta encendido (useCustomPricing para tarifas, useCustomCommission para comisiones). Esto es a proposito: sin el flag, las columnas guardadas se tratan como artefactos sin valor para evitar arrastrar configuraciones viejas.

2

Servicio (ServiceType)

Override por tipo de servicio (Taxi, Moto, VIP, Paqueteria, etc.). Se aplica cuando el editor del servicio guarda un valor; sin valor, cae al nivel siguiente.

3

Empresa (CompanySettings)

El default global del tenant. Siempre existe y siempre es el ultimo fallback. Si ningun nivel mas especifico definio la variable, se usa este.

Tarifas de viaje (taxi)

baseFare, perKmRate, perMinuteRate, currency y multiplicadores: jerarquia completa de 3 capas. Cuando un viaje requiere calcular la tarifa, la plataforma resuelve la combinacion zona-de-origen x serviceType del viaje. El gate es el flag useCustomPricing en ZoneServiceConfig.

1

Empresa

Ajustes -> Tarifas: define tus tarifas globales por defecto.

2

Servicio

Ajustes -> Servicios -> editar un servicio: si guardas una tarifa propia para ese servicio, se prefiere sobre la empresa.

3

Zona + Servicio

Ajustes -> Zonas -> editar zona -> seccion 'Tarifas por servicio': solo se aplica el override cuando activas 'useCustomPricing' en esa combinacion. Permite, por ejemplo, cobrar Taxi mas caro en el Centro que en la Periferia.

Comision del conductor

commissionMode, commissionRate, commissionMinAmount, commissionFixedAmount: jerarquia completa de 3 capas. La comision que ve el conductor en su tarjeta de oferta usa esta resolucion. El gate es el flag useCustomCommission en ZoneServiceConfig.

1

Empresa

Ajustes -> Tarifas -> seccion 'Comisiones': el porcentaje o monto que se aplica por defecto a todo viaje.

2

Servicio

Por ejemplo, un servicio Premium puede pagar menos comision si decides estimular esa categoria.

3

Zona + Servicio

Combinacion zona x servicio cuando 'useCustomCommission' esta encendido.

Tarifa minima del viaje (taxi)

minimumFare: jerarquia completa de 3 capas. Es el piso de la tarifa de un viaje de taxi: si la formula da menos, se sube a este valor. No tiene flag de gate aparte; cuando el nivel mas especifico tiene un valor != null, gana.

1

Empresa

CompanySettings.minimumFare.

2

Servicio

ServiceType.minimumFare.

3

Zona + Servicio

ZoneServiceConfig.minimumFare.

Tarifa de envio (delivery)

deliveryBaseFee, deliveryPerKm y similares tienen su propia jerarquia, con un override a nivel local (Business) en lugar de zona. La razon: un restaurante puede tener su politica de envio distinta del resto.

1

Empresa

CompanySettings.deliveryBaseFee, deliveryPerKm: defaults del tenant.

2

Local (Business)

Business.deliveryBaseFee, deliveryPerKm: si los completas para un local, ese local cobra distinto. Util cuando una sucursal con cocina central cobra menos envio.

Tarifa minima de envio (deliveryMinimumFee)

Hoy es global UNICAMENTE: vive solo en CompanySettings.deliveryMinimumFee. No tiene override per-business ni per-zona todavia. Esta jerarquizacion esta en el roadmap; mientras tanto cualquier cambio aplica a todos los locales del tenant. Si lo necesitas para un local en particular, abre un ticket de soporte para que lo prioricemos.

Toggles de funciones (UI)

Los interruptores tipo 'mostrar propinas en taxi' (taxiTipsEnabled), 'tipo de propina en delivery' (deliveryTipType), 'pedir Con cuanto vas a pagar' (cashChangeFieldEnabled) y similares son GLOBALES por tenant: solo viven en CompanySettings. No tienen jerarquia. Cambias el toggle desde el panel y aplica a todo el tenant a la vez.

Como se sincronizan los cambios

El valor en la base de datos cambia inmediatamente cuando guardas en el panel, pero cada cliente (panel web, APK movil, emulador embedido) lee la configuracion de forma distinta:

1

Panel web (dashboard)

Cada navegacion consulta la DB en vivo. El cambio se ve al recargar la pagina o al moverte entre pestanas. Es el camino mas rapido en ver un cambio.

2

APK movil del cliente/conductor

Refresca la configuracion al iniciar sesion y al cargar la pantalla principal (rider/driver Home). Como cada apertura del APK es esencialmente un cold start, los toggles se reflejan al siguiente arranque o al volver al Home.

3

Emulador embedido del panel (iframe)

El iframe que reemplaza al telefono fisico en /simulator carga la configuracion una sola vez, al abrirlo. Si cambias un toggle desde el panel y quieres ver el efecto en el emulador, hay que recargar el iframe (boton 'Recargar' o cerrar y reabrir el simulador). Estamos trabajando en que el simulador detecte automaticamente los cambios sin requerir esta accion manual.

4

Web app del tenant (web.cabgo.app o dominio propio)

Refresca al recargar la pagina como cualquier app web. Si el operador se quedo con la pagina abierta despues del cambio, debe refrescar.

Como diagnosticar un conflicto

Si una tarifa o comision sale con un valor que no esperas, sigue este checklist en orden:

1

Revisa el nivel mas granular primero

Ajustes -> Zonas -> tu zona -> tarifas por servicio: comprueba si la combinacion zona x servicio tiene 'useCustomPricing' activado. Si esta encendido y los valores estan vacios o son cero, se aplican esos ceros, no los del nivel siguiente.

2

Luego el servicio

Ajustes -> Servicios -> editar el servicio: revisa si guardaste algun override por servicio. Si dejaste un valor 'recordatorio' en algun campo, se va a aplicar.

3

Por ultimo el global

Ajustes -> Tarifas: lo que esta aqui es lo que se aplica cuando ningun nivel mas especifico aporta valor.

4

Confirma desde la pantalla del cliente o conductor

El centro de viajes del conductor y la pantalla de detalle del viaje muestran la tarifa exacta calculada. Si no coincide con lo que esperas, comparte el tripCode con soporte para que veamos la cadena de resolucion del viaje en concreto.

Mas en Arquitectura y Configuracion