Portal interno de administración global
2026-08-29
Admin Puertos3 ahora es una PWA instalable en
https://abbante.online/administracion. Conserva las
funciones completas de AdminWeb y no requiere Expo ni una aplicación
móvil separada.
Para instalarla, abre el portal en Chrome o Edge y elige Instalar aplicación. En iPhone o iPad usa Safari, abre Compartir y selecciona Agregar a pantalla de inicio. El Service Worker conserva únicamente el shell y la página offline: los datos administrativos autenticados no se guardan para consulta sin conexión.
| Recurso PWA | Comportamiento |
|---|---|
| Manifest | Nombre, iconos y acceso directo bajo
/administracion |
| Service Worker | Actualiza archivos estáticos y muestra una página offline |
| Datos administrativos | Siempre se consultan en línea; no se cachean |
| Nueva versión | El portal muestra un botón para actualizar cuando está lista |
Admin Puertos3 es el portal interno que usa TecnoAI para administrar la plataforma completa: alta de empresas transportistas, seguimiento operativo, catálogos, marketplace, membresías, pagos, notificaciones, auditoría, salud de servicios y reportes globales.
No confundir con MonitorWeb. Los clientes transportistas usan
https://transporte.abbante.compara operar su empresa. AdminWeb es exclusivo para usuariosAdminGlobal.
URL del portal:
https://abbante.online/administracion
Quién entra: sólo usuarios con
EsAdminGlobal=true. Si un usuario AdminEmpresa
intenta entrar aquí, el portal cierra su sesión y muestra un acceso a
MonitorWeb, que es el portal correcto para su rol.
https://abbante.online/administracion/login.El portal valida la sesión con Supabase Auth y después consulta
mi_perfil_admin_web. Si el perfil no tiene
es_admin_global=true, no permite el acceso.
Para validación, capacitación o demostraciones internas solicita al responsable del proyecto una cuenta QA temporal con rol AdminGlobal. Las credenciales no se publican en este manual ni deben compartirse por correo o canales abiertos.
URL de acceso:
https://abbante.online/administracion/login
El usuario se mantiene con:
cd supabase-api
node seed-adminempresa-qa.jsEn la esquina superior derecha, usa el botón de salida. Cierra la sesión actual y vuelve al login.
El dashboard muestra accesos rápidos a las rutas principales:
La vista inicial está organizada por bloques de trabajo. Úsala como atajo cuando ya sabes qué área necesitas abrir:
| Bloque | Accesos principales |
|---|---|
| Pendientes | Bandeja, soporte, privacidad, pagos y trials por revisar |
| Onboarding | Alta de nueva empresa y marketplace |
| Personas | Flota global y usuarios/roles |
| Empresas | Empresas transportistas, viajes por ruta y sindicatos |
| Catálogos | Palabras, planes, licencias, rutas, aduanal, parámetros y club del chofer |
| Plataforma | Membresías, liquidaciones, reportes, notificaciones, salud y auditoría |
Lee las tarjetas como atajos, no como módulos separados. Cada una lleva a la misma ruta disponible en el sidebar.
Sidebar → Inicio → Bandeja operativa.
Concentra pendientes para que el AdminGlobal no tenga que buscar en varias pantallas:
| Indicador | Origen |
|---|---|
| Pagos empresa pendientes | admin_listar_pagos_empresa_pendientes |
| Pagos chofer pendientes | admin_listar_pagos_pendientes |
| Trials pendientes | admin_listar_trials_pendientes |
| Marketplace | admin_marketplace_resumen |
| Tickets soporte | admin_listar_tickets_soporte |
| Privacidad | admin_listar_solicitudes_eliminacion_datos |
| Moderación | admin_listar_reportes_moderacion |
Cada bloque muestra la acción recomendada y liga al módulo donde se resuelve.
Sidebar → Onboarding → Alta de nueva empresa.
Este wizard provisiona una empresa transportista nueva y su primer administrador de empresa.
| Campo | Obligatorio | Nota |
|---|---|---|
| RFC | Sí | 12 o 13 caracteres. Debe ser único |
| Razón social | Sí | Nombre fiscal de la empresa |
| Nombre comercial | No | Si queda vacío, se usa la razón social |
| Teléfono | No | Contacto general |
| Correo empresa | No | Contacto general |
| Ciudad, estado, CP, dirección | No | Recomendados para operación |
El usuario capturado aquí será AdminEmpresa, no
AdminGlobal.
| Campo | Obligatorio | Nota |
|---|---|---|
| Nombre completo | Sí | Nombre visible en el portal |
| Correo | Sí | Usuario con el que entrará a MonitorWeb |
| Teléfono | No | Contacto operativo |
| Acceso inicial | Sí | Invitación por correo o contraseña temporal |
El acceso inicial tiene dos opciones:
| Opción | Cuándo usarla | Resultado |
|---|---|---|
| Enviar invitación | Cuando el correo del cliente recibe invitaciones sin problema | AdminWeb genera el link Auth y Resend envía un correo para que el admin defina su contraseña |
| Contraseña temporal | Cuando el correo no llega o se necesita activar al cliente en el momento | AdminWeb crea el usuario confirmado, muestra una contraseña temporal y marca el acceso como pendiente de cambio |
La invitación envía al nuevo administrador a
MonitorWeb (NEXT_PUBLIC_MONITOR_URL),
porque ahí opera la empresa transportista. El botón Aceptar
invitación pasa por
https://transporte.abbante.com/auth/aceptar y después
redirige a Supabase con destino final
https://transporte.abbante.com/cambiar-password. Ahí el
usuario define su contraseña inicial; después entra por
https://transporte.abbante.com/login con su correo y esa
contraseña. Si se usa contraseña temporal, entrega esa contraseña al
cliente por un canal seguro. Al iniciar sesión, MonitorWeb lo manda a
/cambiar-password antes de permitirle operar.
| Campo | Default | Nota |
|---|---|---|
| Días de trial | 30 | Duración del periodo de prueba |
| Slots de monitoreo | 5 | Choferes monitoreables simultáneamente |
| Notas internas | vacío | Visible para administración |
El portal hace la operación de forma controlada:
EmpresaTransportista.PermissionPolicyUser con
EsAdminEmpresa=true.MonitorAuditoria.must_change_password=true.Si la RPC falla, el endpoint intenta borrar el usuario Auth recién creado para no dejar datos huérfanos.
Sidebar → Onboarding → Marketplace.
La consola de marketplace permite gestionar de punta a punta el alta de proveedores de asistencia y dar seguimiento a las solicitudes. Entran:
EsCapturadorProveedores): entra restringido
sólo al módulo de proveedores para trabajar su
cartera.| Tab | Uso |
|---|---|
| Proveedores | Gestión completa del alta de proveedores (etapas, asignación, contacto, acceso) |
| Solicitudes | Solicitudes de asistencia, urgencia, estado, ofertas y proveedor asignado (sólo AdminGlobal) |
| Soporte | Tickets enviados desde /soporte (sólo AdminGlobal) |
Arriba del tablero hay indicadores rápidos: Prospectos abiertos, Sin asignar, Invitados sin descargar, Integrados (7 días), Proveedores activos, Solicitudes abiertas y Tickets abiertos.
El tab Proveedores separa la cartera en cuatro etapas (tarjetas con contador en la parte superior; el contador respeta los filtros activos):
| Etapa | Qué contiene |
|---|---|
| En prospección | Negocios que el equipo está agregando (origen Google Places) y aún no terminados |
| Solicitudes de alta | Registros que llegaron solos por web (/alta-proveedor)
o desde la app |
| Aceptados | Proveedores Integrados (ya operan, listos para recibir solicitudes) |
| Descartados | Rechazados o no contactables |
Cada negocio se importa/origina y avanza por estos estados: Importado → En contacto → Dado de alta (invitado) → Registrado (integrado), con desvíos a Rechazado o No contactable.
La lista soporta búsqueda (nombre, teléfono, correo o dirección), ordenamiento (Más recientes, Mejor calificados, Sin contactar primero, Próximo seguimiento) y paginación. En la ficha se muestra la calificación de Google (★ y número de reseñas) para priorizar a quién contactar primero.
Hay dos caminos según quién inicia, distinguidos por el origen del prospecto:
| Flujo | Origen | Acción del administrador | Resultado |
|---|---|---|---|
| Flujo 1A — el proveedor te busca | Formulario público /alta-proveedor |
Activar e invitar | Se crea el acceso, se envía la invitación y queda Registrado |
| Flujo 1B — el proveedor crea su cuenta | Abbante M móvil o PWA en https://abbante.online |
Autorizar proveedor | Se vincula la cuenta que ya creó el proveedor y queda Registrado |
| Flujo 2 — tú buscas al proveedor | Google Places | Activar e invitar | Queda Dado de alta / “Invitado · sin descargar”; pasa a Integrado sólo cuando el proveedor descarga Abbante M o entra a la PWA por primera vez |
Así “Integrado” significa de verdad que el proveedor ya está operando en la app, no sólo que se le envió la invitación.
Cuando varios capturadores trabajan en paralelo, cada prospecto tiene dueño para que no se llamen al mismo negocio.
Sub-vistas de asignación (en En prospección / Solicitudes de alta):
| Vista | Para qué |
|---|---|
| Sin asignar | El pool disponible. Botón Tomar en cada uno |
| Míos | Lo que tomaste; aquí trabajas tu cartera |
| Todos | Panorama completo (AdminGlobal puede reasignar) |
Al abrir Marketplace → Proveedores, AdminWeb muestra de forma predeterminada En prospección. Las solicitudes enviadas directamente por un proveedor no aparecen en esa primera lista.
Para encontrarlas:
Importante: la búsqueda no corrige direcciones de correo ni supone que dos correos parecidos son la misma cuenta. Si el proveedor informa un correo distinto al capturado, busca también por nombre o teléfono.
Después de localizar la solicitud:
| Situación | Acción correcta |
|---|---|
| El correo, teléfono o nombre tiene un error | Usa Corregir datos antes de autorizar o invitar |
| Llegó desde el formulario público | Usa Activar e invitar |
| Llegó desde Abbante M móvil o desde la PWA | Usa Autorizar proveedor |
| La ficha está asignada a otro operador | Un AdminGlobal puede reasignarla; de lo contrario, primero usa Tomar |
| No debe operar | Usa Rechazar y registra el motivo |
Al terminar, confirma que la ficha salga de Solicitudes de alta y aparezca en Aceptados. Si continúa pendiente, revisa la respuesta mostrada por AdminWeb antes de repetir la acción.
Panel Importar proveedores por ruta: elige una ruta y pulsa Importar de esta ruta. El sistema busca negocios de asistencia a lo largo del trazado y los agrega como candidatos (estado Importado) con teléfono y sitio web. Re-importar la misma ruta es seguro: rellena teléfonos faltantes sin pisar los datos que ya hayas editado a mano.
Si acabas de guardar una llamada equivocada, abre la ficha del prospecto y pulsa Eliminar última llamada. Lee el aviso de confirmación y selecciona Aceptar sólo si corresponde eliminar ese registro.
La acción está disponible únicamente para el último registro creado con Registrar llamada, por el operador asignado al prospecto o por un AdminGlobal. Al confirmarla, el sistema elimina esa primera línea de la bitácora y quita el recordatorio Volver a llamar asociado.
No se eliminan notas anteriores ni llamadas más antiguas. Tampoco se cambia el estado del prospecto ni su fecha de último contacto, pues podrían provenir de otra acción posterior. Si el error no está en la última llamada, registra una nueva nota aclaratoria y solicita apoyo a un AdminGlobal antes de modificar el historial.
Cuando el origen es Abbante M, ya sea desde la
aplicación móvil o desde la PWA publicada en
https://abbante.online, la solicitud ya trae una cuenta
Auth y aparece en Solicitudes de alta con la marca
Usuario app pendiente.
Al autorizar: AdminWeb ejecuta
admin_autorizar_proveedor_app, crea/actualiza
ProveedorServicios, vincula su SupabaseUserId
con el usuario Auth de la app y el proveedor queda autorizado (la
siguiente consulta de Abbante M móvil o PWA devuelve
autorizado=true). Los registros del formulario público sin
cuenta usan Activar e invitar (que crea el acceso y
envía la invitación). Si no debe operar, usa Rechazar;
no borres el usuario desde Supabase para conservar trazabilidad.
Panel Carga de operadores (sólo AdminGlobal): tabla con cuántos prospectos tiene cada operador, desglosados por etapa (En proceso / Invitados / Aceptados / Descartados / Total), filtrable por ruta. El botón Repartir sin asignar distribuye los prospectos sin dueño en partes iguales (round-robin) entre los capturadores; no toca los que ya tienen operador.
Panel Comisiones de la plataforma (sólo AdminGlobal), dentro de Marketplace. Tiene dos campos, uno por método de pago:
| Campo | Aplica a | Valor actual |
|---|---|---|
| Pagos por la app (tarjeta) | Servicios pagados con tarjeta dentro de la app | 15% |
| Pagos directos al proveedor | Efectivo o transferencia directa al proveedor | 0% (sin comisión) |
Sidebar → Personas → Flota global.
Permite revisar la operación de flota desde la administración general.
| Vista | Funciones |
|---|---|
| Choferes | Buscar choferes, aprobar, bloquear y cerrar sesiones activas |
| Camiones | Seleccionar empresa y consultar placas, seguro, tipo y chofer asignado |
Las altas y ediciones detalladas de flota siguen disponibles en MonitorWeb para el administrador de cada empresa.
Sidebar → Personas → Usuarios y roles.
Lista usuarios XAF (PermissionPolicyUser) y combina su
estado en Supabase Auth. Desde esta pantalla se puede administrar el
ciclo completo del usuario sin entrar al XAF para tareas operativas
comunes.
Funciones principales:
| Función | Uso |
|---|---|
| Buscar usuario | Filtra por nombre o correo |
| Filtros operativos | Filtra por rol, estado Auth/activo y empresa |
| Métricas rápidas | Muestra total, visibles, alertas y pendientes |
| Selección múltiple | Permite aplicar acciones a varios usuarios visibles |
| Crear usuario | Alta manual con invitación o contraseña temporal |
| Editar datos básicos | Nombre, correo, empresa, sindicato y estado activo |
| Admin Global | Da acceso a AdminWeb; úsalo sólo para personal TecnoAI |
| Operador Global | Activa EsAdminApp; úsalo para operación interna global
sin convertirlo en AdminGlobal |
| Operador de comunidad | Activa exclusivamente EsOperadorComunidad; sólo permite
atender conversaciones escaladas |
| Admin Empresa | Da acceso a MonitorWeb y obliga a seleccionar empresa |
| Supervisor, Fiscal, Capturador | Habilita funciones operativas específicas |
| Plantillas de rol | Aplica combinaciones comunes, incluida la plantilla exclusiva Operador de comunidad |
| Contraseña temporal | Regenera una contraseña cuando el usuario no recibió correo o perdió acceso |
| Reset por correo | Envía recuperación de contraseña al correo del usuario |
| Confirmar email | Marca el correo como confirmado desde administración |
| Reenviar invitación | Genera una invitación y la envía por Resend |
| Desbloquear Auth | Quita bloqueo Auth y reactiva el usuario |
| Suspender/Reactivar | Bloquea o restaura el acceso sin borrar historial |
| Cerrar sesiones | Rota contraseña y obliga cambio para cortar acceso útil |
| Baja lógica | Desactiva usuario y limpia roles sin eliminar registros |
| Diagnóstico Auth | Muestra vínculo Auth, email, confirmación, invitación, último login y bloqueo |
| Auditoría reciente | Muestra eventos administrativos relacionados con el usuario |
| Exportar CSV | Descarga usuarios, empresa, roles, estado y último acceso |
Usa esta matriz antes de crear o editar un usuario. La columna Empresa define si el campo Empresa debe ir vacío o seleccionado.
| Tipo de usuario | Rol técnico | Empresa | Portal / alcance | Cómo darlo de alta |
|---|---|---|---|---|
| Administrador del sistema global | EsAdminGlobal |
Vacía | AdminWeb completo | Crear usuario, elegir tipo Admin global y enviar invitación o contraseña temporal |
| Operador del sistema global | EsAdminApp |
Vacía | Operación interna global que valida EsAdminApp; no
reemplaza AdminGlobal |
Crear usuario, elegir tipo Operador global |
| Administrador de empresa | EsAdminEmpresa + EsSupervisorMonitor |
Requerida | MonitorWeb de su empresa | Crear usuario, elegir tipo Admin empresa y seleccionar Empresa |
| Supervisor / operador de empresa | EsSupervisorMonitor |
Requerida | Operación diaria en MonitorWeb | Crear usuario, elegir tipo Supervisor y seleccionar Empresa |
| Capturador marketplace | EsCapturadorProveedores |
Vacía | Marketplace de proveedores asignados | Crear usuario, elegir tipo Capturador |
| Operador de comunidad | EsOperadorComunidad |
Vacía | AdminWeb, únicamente Atención > Conversaciones | Crear usuario, elegir tipo Operador de comunidad |
| Fiscal | EsAdminFiscal |
Opcional según operación | Facturación, pagos y documentos fiscales permitidos | Crear usuario, elegir tipo Fiscal |
Regla práctica: los roles globales (Admin Global, Operador global y Operador de comunidad) deben crearse sin empresa asignada. Los roles de operación de transportista (Admin Empresa y Supervisor) deben tener empresa seleccionada. El Operador de comunidad tampoco lleva sindicato y no puede combinarse con otro rol.
La franja superior del módulo permite reducir la lista antes de operar:
| Filtro | Cuándo usarlo |
|---|---|
| Rol | Revisar sólo Admin Global, Operador global, Operador de comunidad, Admin Empresa, Supervisores, Fiscales, Capturadores o usuarios sin roles |
| Estado | Localizar usuarios activos, inactivos, bloqueados, pendientes de correo, sin Auth, con cambio de contraseña requerido o con alertas |
| Empresa | Acotar el listado a una transportista específica |
Si marcas uno o más usuarios con el checkbox de la tabla, aparece una barra de acciones masivas. Úsala para:
El botón de descarga exporta la selección marcada. Si no hay selección, exporta los usuarios visibles después de aplicar filtros.
Si usas contraseña temporal, AdminWeb muestra la contraseña sólo al terminar la operación. Cópiala y entrégala por un canal seguro.
Validación importante: si marcas Admin Empresa o
Supervisor sin empresa, AdminWeb bloquea el alta con
empresa_requerida. Si asignas una empresa a Admin
Global u Operador global, la pantalla lo
muestra como alerta de conflicto para que lo revises.
Al elegir Operador de comunidad, el wizard limpia empresa, sindicato y todos los demás roles. La API vuelve a validar esta exclusividad antes de crear el usuario.
Al seleccionar un usuario, en Datos básicos puedes actualizar nombre, correo, empresa, sindicato y estado activo. Cambiar la empresa asignada sirve como transferencia administrativa y queda auditado.
Usa plantillas para evitar combinaciones manuales repetitivas:
| Plantilla | Resultado |
|---|---|
| Admin Empresa | Activa AdminEmpresa y Supervisor, asignando empresa |
| Operador Global | Activa EsAdminApp, limpia AdminGlobal/AdminEmpresa/Supervisor y deja Empresa vacía |
| Supervisor | Activa Supervisor y asigna empresa |
| Fiscal | Activa AdminFiscal |
| Capturador | Activa Capturador de proveedores |
| Operador de comunidad | Activa exclusivamente EsOperadorComunidad y limpia empresa, sindicato y los demás roles |
| Admin Global | Activa AdminGlobal y limpia scope de empresa |
La pantalla también muestra alertas de conflicto, por ejemplo AdminEmpresa sin empresa, AdminGlobal con empresa asignada u Operador global con empresa asignada.
El usuario queda marcado para cambiar contraseña al entrar. Los usuarios de empresa la cambian en MonitorWeb; los operadores de comunidad la cambian en AdminWeb y después son enviados directamente a Conversaciones.
Cuando se asigna una contraseña temporal, AdminWeb también confirma el correo en Supabase Auth. Esto evita que un usuario con acceso perdido al buzón quede detenido por el mensaje Email not confirmed.
Usa esta acción sólo cuando el usuario ya exista en Supabase Auth. Si es un usuario nuevo dentro del alta de empresa, usa la opción Contraseña temporal del wizard de onboarding.
| Acción | Uso |
|---|---|
| Forzar cambio | Marca al usuario para cambiar contraseña al siguiente acceso |
| Reset email | Genera link de recuperación y lo envía por Resend |
| Confirmar email | Confirma el email sin depender del buzón del usuario |
| Reenviar invite | Genera invitación y la envía por Resend |
| Cerrar sesiones | Rota credenciales y genera una nueva contraseña temporal |
Después de Cerrar sesiones, entrega la contraseña
temporal mostrada. El usuario entrará a MonitorWeb y deberá completar
/cambiar-password.
Los correos de invitación y recuperación no salen por el envío nativo
de Supabase Auth. AdminWeb genera el link seguro con Supabase y lo
entrega a la outbox NotificacionEmail; la Edge Function
email-despachar lo manda por Resend.
El panel Diagnóstico Auth muestra datos útiles para soporte:
| Dato | Para qué sirve |
|---|---|
| Auth | Confirma si el usuario está vinculado a una cuenta Supabase Auth |
| Email Auth | Permite detectar diferencias contra
PermissionPolicyUser.UserName |
| Confirmado | Indica si el correo ya puede iniciar sesión |
| Invitado | Ayuda a verificar si se generó invitación |
| Último login Auth | Muestra actividad reciente del usuario |
| Bloqueo | Permite identificar cuentas suspendidas o baneadas |
Si el usuario aparece bloqueado, usa Desbloquear
Auth para quitar el ban y reactivar el registro operativo. Si
aparece sin Auth, el caso debe corregirse revisando la vinculación
SupabaseUserId.
Suspender bloquea el acceso pero conserva roles y datos. Reactivar restaura el acceso. Baja lógica desactiva el usuario, quita roles y bloquea Auth sin borrar historial.
La sección Auditoría reciente muestra eventos administrativos del usuario seleccionado. El botón de descarga exporta la lista visible a CSV con usuario, empresa, roles, estado Auth y último acceso.
Sidebar → Empresas → Empresas transportistas.
Muestra las empresas y su estado de membresía de monitoreo: slots, vigencia, pagos pendientes y estado. Desde el detalle puedes revisar pagos pendientes y acciones administrativas relacionadas con esa empresa.
Sidebar → Empresas → Viajes por ruta.
Agrupa viajes por empresa, ruta, corredor o itinerario. Sirve para ver qué rutas usa cada empresa y cómo se distribuyen sus viajes por estado.
Sidebar → Empresas → Sindicatos.
Catálogo global de sindicatos o agrupaciones transportistas.
Sidebar → Catálogos → Palabras y planes.
Incluye palabras prohibidas para moderación del chat y planes de membresía.
Sidebar → Catálogos → Licencias y tarifas.
Administra paquetes de licencias y precios por volumen para contratos de monitoreo.
Abbante maneja dos productos comerciales separados:
| Producto | Quién paga | Qué cubre |
|---|---|---|
| App chofer | Chofer | Uso de la app móvil, operación personal y retención base de datos por 1 semana. |
| Portal empresa | Empresa transportista | Portal de seguimiento, slots, historial operativo y resguardo de información empresarial. |
Para cotización y capacitación de vendedores, usa precio real y precio de arranque:
| Producto | Precio de arranque | Precio real de referencia |
|---|---|---|
| App chofer | $150 / mes | $225 / mes |
| Slot portal empresa | $8,000 / mes | $12,000 / mes |
| Licencia por camión | $4,000 / mes | $6,000 / mes |
Para app chofer, los tramos de compra y venta son:
| Volumen de licencias de chofer | Costo base | Precio propuesto | Precio real de referencia |
|---|---|---|---|
| 1 a 9,999 | $135 | $150 | $225 |
| 10,000 a 99,999 | $55 | $70 | $105 |
| 100,000 o más | $40 | $50 | $75 |
El precio real de referencia queda 50% arriba del precio propuesto para mostrar el descuento de arranque. La utilidad se calcula contra el costo base final del tramo contratado.
La app del chofer conserva datos en el celular y en el centro de datos por 1 semana. Si se ofrece retención extendida de 3 meses, suma $10 MXN al costo base por chofer. En el portal empresa, la información se conserva por 5 años o hasta la terminación del contrato.
Reglas de margen comercial:
Sidebar → Catálogos → Rutas e itinerarios.
Administra nodos, corredores, tramos, opciones de tramo, checkpoints plantilla e itinerarios. Estos datos alimentan la creación de viajes en MonitorWeb.
Flujo recomendado:
Sidebar → Catálogos → Aduanal.
Administra agentes aduanales, documentos y ventanas de recolección.
Sidebar → Catálogos → Parámetros del sistema.
Permite administrar claves de configuración globales. Usa el flag sensible para ocultar valores en pantalla; no equivale a cifrado. Los secretos reales deben vivir en variables de entorno o secrets de Supabase/Vercel.
Sidebar → Catálogos → Club del chofer.
Administra el catálogo de beneficios y descuentos que los choferes ven en la app Abbante (Perfil → Club del Chofer). Desde aquí das de alta, editas y das de baja cada beneficio que ofrecen los aliados (diésel, llantas, casetas, talleres, salud, etc.).
Cada beneficio se compone de:
| Campo | Nota |
|---|---|
| Título | Nombre del beneficio que ve el chofer |
| Aliado | Empresa o marca que lo ofrece |
| Categoría | Diésel, llantas, casetas, talleres, salud, etc. |
| Descripción | Detalle del beneficio y condiciones |
| Descuento | Porcentaje o condición del beneficio |
| Logo | Imagen/identidad del aliado |
| Vigencia | Periodo en que el beneficio está disponible |
| Nivel requerido | Nivel de reputación mínimo del chofer para canjearlo (Bronce/Plata/Oro/Platino); déjalo en el mínimo si aplica a todos |
| Activo | Switch que controla si el beneficio aparece en la app |
La baja es lógica: desactiva el switch Activo para que el beneficio deje de mostrarse en la app sin borrar el registro. Así conservas el historial y puedes reactivarlo después si el aliado renueva el convenio.
El nivel requerido se relaciona con la reputación del chofer (Bronce / Plata / Oro / Platino). Un beneficio con nivel Oro, por ejemplo, solo se mostrará desbloqueado a choferes que hayan alcanzado ese nivel.
La sección Plataforma concentra tareas transversales
que antes se resolvían en XAF o en procesos separados: operación
comercial, comunicación masiva, soporte sensible, salud técnica,
configuración y auditoría. Todas estas pantallas requieren usuario
AdminGlobal.
Sidebar → Plataforma → Membresías y pagos.
Consolida la operación comercial de membresías. La parte superior muestra conteos de empresas, pagos de empresa, pagos de chofer y trials. Debajo hay un panel con pestañas para revisar cada cola.
| Tab | Funciones |
|---|---|
| Empresas | Ver estado, slots ocupados/contratados, vigencia, precio y abrir detalle de empresa |
| Pagos empresa | Aprobar o rechazar pagos pendientes de empresas; ver el detalle histórico del cálculo de cada cobro |
| Pagos chofer | Aprobar o rechazar pagos pendientes de choferes |
| Trials chofer | Aprobar o rechazar solicitudes de trial |
En Pagos empresa, la columna
Detalle muestra el snapshot del cobro: concepto,
cantidad, días cuando aplica, descuento y subtotal por línea. Ese
snapshot queda guardado en
PagoMembresiaEmpresa.DetalleCalculo, por lo que el
histórico del cobro no cambia aunque después la empresa modifique su
paquete.
En el detalle de empresa, además del estado de la membresía actual, verás:
| Bloque | Qué revisa |
|---|---|
| Detalle del cálculo | Paquete vigente: tipo de licencia, cantidad, precio unitario, descuento y subtotal |
| Pagos pendientes | Cobros por revisar con el mismo detalle histórico del cálculo |
Cuando el paquete incluya portal empresa, recuerda que el valor comercial no es solo “acceso a la app”: incluye seguimiento operativo, historial y resguardo de información empresarial por 5 años o hasta fin de contrato. Si el paquete suma licencias de chofer con retención de 3 meses, valida que el costo base aumente $10 MXN por chofer antes de revisar la utilidad.
Al rechazar un pago o trial, captura el motivo para dejar evidencia operativa.
Sidebar → Plataforma → Liquidaciones.
Muestra facturas B2B de proveedores y su ciclo operativo:
| Estado | Qué permite hacer |
|---|---|
| Subida | Revisar XML/PDF, aprobar o rechazar con motivo |
| Aprobada | Liquidar con método y referencia bancaria, o rechazar |
| Rechazada | Consultar como caso cerrado |
| Liquidada | Consultar referencia de liquidación |
Si los documentos están guardados en bucket privado, la pantalla genera un enlace firmado temporal para descargar XML o PDF.
Sidebar → Plataforma → Soporte.
Consolida tickets y solicitudes sensibles. La pantalla inicia con tres indicadores: tickets abiertos, privacidad pendiente y asistencias abiertas. El panel principal se opera por pestañas.
| Tab | Funciones |
|---|---|
| Tickets | Atender, resolver o descartar tickets; registra nota interna |
| Privacidad | Marcar solicitudes como en revisión, aprobadas o rechazadas desde el flujo de soporte |
| Asistencia | Consultar solicitudes de marketplace, estado, proveedor y ofertas |
Sidebar → Plataforma → Reportes ejecutivos.
Muestra KPIs globales para tomar decisiones rápidas:
| Bloque | Indicadores |
|---|---|
| Operación viva | Choferes totales, viajes en curso, trials pendientes y reportes abiertos |
| Día actual | Viajes iniciados, viajes completados, pagos ingresados y noticias publicadas |
| Adopción | Empresas por estado de membresía |
| Marketplace | Prospectos, self-service, proveedores activos y solicitudes abiertas |
| Rutas | Top rutas por volumen, activos y completados |
Sidebar → Plataforma → Notificaciones.
Es un hub de accesos a las consolas que emiten o configuran mensajes:
| Tarjeta | Abre |
|---|---|
| Broadcast push | Envío de avisos globales o por empresa |
| Destinos Telegram | Canales, grupos, bots y pruebas de entrega |
| Noticias y fuentes | Fuentes georreferenciadas y publicaciones manuales |
| Reglas operativas | Configuración que afecta alertas, membresías y Stripe |
Para campañas masivas, primero valida audiencia y canal. Las acciones quedan disponibles para revisión en Auditoría global.
Sidebar → Plataforma → Herramientas.
Concentra accesos de diagnóstico y corrección controlada:
| Tarjeta | Uso |
|---|---|
| Diagnóstico de RPCs | Abre Salud operativa |
| Buscar en auditoría | Abre Auditoría global con filtros |
| Parámetros del sistema | Abre el catálogo de parámetros administrables |
| Configuración segura | Abre membresías, Stripe y whitelist de pruebas |
También muestra contexto de sesión: usuario, si tiene
AdminGlobal y el scope de empresa. Para el usuario global
el scope debe aparecer como Global.
Sidebar → Plataforma → Salud operativa.
Ejecuta checks rápidos contra RPCs y servicios críticos usados por AdminWeb. Muestra conteo de checks correctos, estado general, peor latencia y detalle por servicio.
Servicios revisados actualmente:
| Servicio | Qué valida |
|---|---|
| Perfil AdminWeb | Que el usuario global resuelva su perfil |
| Empresas membresía | Listado comercial de empresas |
| Marketplace resumen | Resumen operativo de marketplace |
| Auditoría | Consulta mínima de bitácora |
| Telegram destinos | Configuración de canales |
| Configuración membresía | Parámetros globales de membresía |
| Stripe modo | Modo de cobro y estado de configuración |
| Privacidad | Listado de solicitudes de datos |
Sidebar → Plataforma → Configuración global.
Gestiona tres bloques:
| Bloque | Funciones |
|---|---|
| Membresías | Activar enforcement, días de gracia y días de aviso por vencer |
| Stripe | Cambiar modo Sandbox/Producción y revisar secretos del vault |
| Choferes en pruebas | Buscar choferes, agregarlos o quitarlos de la whitelist de Stripe test |
Cambiar a Producción muestra advertencia porque los cobros son reales. Antes de activarlo, confirma KYC y secretos live.
Sidebar → Plataforma → Noticias y fuentes.
Administra fuentes RSS/Google News y publicaciones manuales:
| Bloque | Uso |
|---|---|
| Fuentes activas | Editar, activar/desactivar, asociar rutas y eliminar fuentes |
| Formulario de fuente | Definir nombre, tipo, URL, keywords, intervalo y rutas |
| Publicación manual | Capturar título, contenido, ubicación, radio, imagen y URL externa |
| Preview de rutas | Calcular qué rutas quedan afectadas por latitud, longitud y radio |
Sidebar → Plataforma → Destinos Telegram.
Mapea canales de notificación a grupos o chats de Telegram. Los canales actuales son: emergencias, operación, administración, onboarding y técnico.
Cada destino permite:
| Acción | Uso |
|---|---|
| Nuevo destino | Definir canal, chat ID, empresa opcional, descripción y activo/inactivo |
| Editar | Ajustar canal, chat ID, empresa y descripción |
| Probar canal | Encolar mensaje de prueba para los destinos activos |
| Eliminar | Quitar un destino que ya no debe recibir eventos |
Usa default como chat ID sólo cuando el grupo base esté
configurado en TELEGRAM_CHAT_ID.
Sidebar → Plataforma → Moderación.
Revisa dos colas de moderación:
| Cola | Qué muestra |
|---|---|
| Chat de comunidad | Mensajes reportados por usuarios, con autor, sala, fecha, texto, quién reportó y motivo |
| Reportes carreteros | Alertas comunitarias de carretera enviadas desde CiudadanoApp, con tipo, severidad, ubicación, ciudadano, foto adjunta opcional, confirmaciones y marcas de falso |
Acciones disponibles para chat:
| Acción | Efecto |
|---|---|
| Eliminar mensaje | Oculta o elimina el mensaje reportado |
| Advertir | Marca el reporte como revisado con advertencia |
| Suspender nick | Bloquea el nick para que no pueda volver a publicar |
Acciones disponibles para reportes carreteros:
| Acción | Efecto |
|---|---|
| Resolver | Cierra el reporte cuando el evento ya no está activo |
| Marcar falso | Lo conserva como referencia, pero lo marca como información no confiable |
| Ocultar | Retira el reporte de la vista comunitaria |
| Reabrir | Devuelve un reporte marcado a la cola activa, si requiere nueva revisión |
Sidebar → Plataforma → Privacidad.
Consola especializada para solicitudes relacionadas con privacidad y datos personales. Permite filtrar por todas, pendientes, en proceso, completadas y cerradas.
Cada solicitud muestra nombre, correo, tipo de cuenta,
supabase_user_id, motivo, respuesta previa y un campo para
nota administrativa. Los estados operativos disponibles son: En proceso,
Completada y Cerrar.
Sidebar → Plataforma → Broadcast push.
Envía notificaciones push a choferes activos. El alcance puede ser:
| Alcance | Uso |
|---|---|
| Toda la plataforma | Avisos globales; requiere confirmación explícita |
| Una empresa | Avisos segmentados por empresa transportista |
El formulario exige título y mensaje. Antes de enviar, confirma el alcance porque el push puede llegar a muchos dispositivos. El resultado indica cuántas notificaciones se encolaron.
Sidebar → Plataforma → Auditoría global.
Bitácora de acciones administrativas. Permite buscar por acción, usuario o metadatos, filtrar por tipo de acción y limitar la consulta. Cada registro se puede expandir para ver los metadatos en formato JSON cuando estén disponibles.
Sidebar → Plataforma → Agente de comunidad.
Supervisa el servicio de X, Telegram y WhatsApp. La pantalla resume el estado de canales, presenta borradores de X para aprobación, conserva las conversaciones escaladas, permite responder como operador por el mismo canal, actualiza los prospectos capturados y administra conocimiento, turnos y SLA.
Un AdminGlobal ve las seis pestañas: Resumen, Publicaciones, Conversaciones, Prospectos, Conocimiento y Operación. El perfil Operador de comunidad sólo ve Conversaciones; se crea y edita desde Personas -> Usuarios y roles.
Reglas principales:
Consulta el manual dedicado Agente de comunidad en la biblioteca de manuales para configuración, consentimiento, pruebas e incidentes.
Estas tareas corresponden al administrador o supervisor de una empresa transportista:
| Función | Dónde se usa |
|---|---|
| Alta y edición diaria de flota de una empresa | MonitorWeb |
| Operación de viajes y monitoreo | MonitorWeb |
| Membresía vista por el cliente | MonitorWeb → Mi membresía empresa |
| Mensajes a choferes de una empresa | MonitorWeb |
| Vencimientos operativos de licencias/camiones | MonitorWeb |
| Captura comercial por ruta | MonitorWeb con EsCapturadorProveedores |
El usuario no tiene EsAdminGlobal=true. Si es
AdminEmpresa, debe entrar a https://transporte.abbante.com.
Si debería ser global, revisa Usuarios y roles o el
registro PermissionPolicyUser.
La invitación debe apuntar a
NEXT_PUBLIC_MONITOR_URL/cambiar-password; en producción
debe resolver a
https://transporte.abbante.com/cambiar-password. Si llega a
AdminWeb, a localhost o al login directo, revisa la
variable NEXT_PUBLIC_MONITOR_URL del deploy de AdminWeb y
vuelve a enviar la invitación desde Usuarios y roles o
desde el alta de empresa.
Los correos enviados antes de este ajuste pueden conservar un
redirect_to viejo. En ese caso, reenvía la invitación para
generar un link nuevo.
Pide al usuario cerrar sesión y volver a entrar. Algunas vistas leen el perfil al iniciar sesión o al cargar el layout.
Revisa spam. Si no aparece, tienes dos opciones desde AdminWeb:
/cambiar-password.El usuario podrá iniciar sesión en
https://transporte.abbante.com/login con esa contraseña y
el portal le pedirá cambiarla antes de operar.
Es esperado. MonitorWeb lo envía a /cambiar-password
hasta que defina su contraseña definitiva. Si no recuerda la temporal,
genera una nueva desde Usuarios y roles.
La vista muestra el estado global. Las acciones fiscales requieren
habilitar el permiso EsAdminFiscal y activar el flujo de
aprobación correspondiente.
El backoffice XAF incorpora objetos para soporte y conciliación:
OrganizacionLogistica, UsuarioOrganizacion
y ParticipanteViaje para navieras, agencias, terminales,
clientes y depósitos opcionales.AcuerdoSubcontratacion,
AsignacionRecursoSubcontratado,
DelegacionLicenciaEmpresa y
CoberturaLicenciaViaje para separar empresa contratante,
operadora y titular de licencia.CicloContenedor, ObjetivoViaje,
EventoCustodiaContenedor y
OrdenRetornoContenedor para seguimiento de punta a
punta.IncidenciaDanioContenedor para revisión, impugnación y
deducción documentada.LogroSostenibilidadEmpresa para revisar evidencias y
marcar como verificado únicamente lo que deba participar en búsquedas
preferentes.Antes de cambiar una cobertura o deducción, verifica el viaje, empresa titular, empresa operadora, evidencia y bitácora. No reasignes la propiedad del camión al compartirlo y no contabilices una licencia patrocinada como licencia propia de la empresa beneficiaria.
| Término | Significado |
|---|---|
| AdminGlobal | Usuario interno TecnoAI con acceso a AdminWeb |
| AdminEmpresa | Usuario cliente con acceso a MonitorWeb para su empresa |
| SupervisorMonitor | Usuario operativo de MonitorWeb |
| Capturador | Usuario que captura prospectos de marketplace |
| Trial | Membresía temporal gratuita de monitoreo |
| Slots | Choferes monitoreables simultáneamente |
| Auditoría | Registro de acciones administrativas |
| Tema | Dónde |
|---|---|
| Bug del portal | GitHub: chuycova/Puertos2 |
| Cambios al manual | docs/Manual-Usuario-AdminWeb.md |
| Manual publicado | https://transporte.abbante.com/manuales/adminweb.html |
| Acceso Supabase | Solicitar al responsable del proyecto |
| Acceso XAF | Usar el portal XAF con usuario autorizado |
Última actualización: 2026-07-22 · Versión del portal: AdminWeb 1.2.5