ADSystem360 · Integración WordPress

Proyecto Maestro
AdSystem360 Bridge

Portal WordPress mediante shortcodes para mostrar módulos reales de AdSystem360
sin duplicar aplicaciones, sin conectar WordPress directamente a MariaDB y sin inventar datos.

WordPress existente
AdSystem360 existente
Plugin propuesto
Producción intacta
Dominio WordPress
https://fireflyops360.com/
Sistema principal
https://adsystem.fireflyops360.com/
Plugin propuesto
AdSystem360 Bridge
Estado general
PROPUESTO · Diagnóstico requerido

01

Objetivo

Integrar AdSystem360 dentro del WordPress existente mediante un puente seguro y controlado.

Propósito central

Permitir que páginas creadas con Elementor muestren información y funciones procedentes
directamente de AdSystem360, manteniendo en Python la lógica, los permisos y la fuente real de datos.

WORDPRESS=ESCAPARATE_Y_PORTAL
PLUGIN=PUENTE_SEGURO
ADSystem360=CEREBRO_DEL_SISTEMA
PYTHON=LOGICA_Y_PERMISOS
MARIADB=FUENTE_UNICA_DE_DATOS

Ejemplos de uso en Elementor

[adsystem360_catalogo]
[adsystem360_mi_cuenta]
[adsystem360_mis_pantallas]
[adsystem360_emulador]
[adsystem360_mis_tarifas]
[adsystem360_facturacion]

Los shortcodes solo solicitan una vista autorizada; no contienen la lógica comercial ni identificadores sensibles.

02

Principios obligatorios

Reglas que no pueden romperse durante el diagnóstico, la construcción ni la instalación.

  • APLICACION_PARALELA=NO
  • MODULOS_DUPLICADOS=NO
  • CONEXION_WORDPRESS_MARIADB=NO
  • DATOS_INVENTADOS=NO
  • CLIENT_ID_EN_SHORTCODE=NO
  • PASSWORDS_COMPARTIDAS=NO
  • ELEMENTOR_MODIFICADO=NO
  • ADSystem360_FUENTE_UNICA=SI
  • HTTPS_OBLIGATORIO=SI
  • PERMISOS_POR_USUARIO=SI
  • AUDITORIA=SI
  • ROLLBACK=OBLIGATORIO

Regla rectora: el plugin no contendrá la lógica comercial del sistema.
Registrará shortcodes, identificará al usuario, solicitará autorización y mostrará únicamente la vista permitida.

03

Base ya existente

El proyecto no parte de cero: varias fichas y relaciones operativas ya están presentes en AdSystem360.

Ficha 360 del cliente

General
Contactos
Expectativas
Expediente
Sucursales
Pantallas
Campañas
Emulador
Tarifas
Facturación
Actividad
Auditoría

Una sola ficha puede alimentar varios shortcodes abriendo la pestaña autorizada.

Ficha 360 de pantalla

Resumen
Campañas
Programación
Emulador
Medios

Ya relaciona una pantalla con campañas, programación, playlists y medios reales.

Catálogo de precios y servicios

Resumen
Catálogos
Conceptos
Planes
Perfiles comerciales
Excepciones por cliente
Documentos comerciales
Pagos registrados
Compromisos
Conciliaciones

Será la fuente única para precios, planes, condiciones, descuentos y excepciones autorizadas.

Menú operativo observado

Empresa

Empresa.

Cliente

Clientes, Sucursales, Pantallas y Player Android.

Perfil comercial

Catálogo, Tarifario, Moneda, Condiciones de pago, Días de crédito y Descuentos autorizados.

Operación

Servicios contratados, Cotizaciones, Contratos, Órdenes, Campañas, Contenidos y Programación.

WordPress no reproducirá todo el menú administrativo. Solo mostrará funciones autorizadas para el cliente conectado.

04

Arquitectura propuesta

Cuatro capas separadas, con responsabilidades precisas.

1

WordPress + Elementor

fireflyops360.com

Contiene las páginas comerciales y el widget Shortcode.

2

AdSystem360 Bridge

Registra shortcodes, identifica al usuario y solicita acceso.

3

AdSystem360 · FastAPI

Valida origen, token, cliente, permisos y vista solicitada.

4

MariaDB real

Clientes, pantallas, campañas, medios, planes, precios, pagos y relaciones.

Elementor
  ↓ shortcode
AdSystem360 Bridge
  ↓ HTTPS seguro
AdSystem360 / FastAPI
  ↓ permisos y consultas
MariaDB real
05

Componentes del proyecto

Plugin, capa Python, autenticación y vinculación de identidades.

A · Plugin WordPress

  • Registrar shortcodes.
  • Configurar la URL de AdSystem360.
  • Identificar al usuario conectado.
  • Solicitar tokens temporales.
  • Crear el contenedor responsive.
  • Mostrar errores controlados.
  • Integrarse con Elementor.
  • No almacenar contraseñas de AdSystem360.
  • No consultar MariaDB directamente.
adsystem360-bridge/
├── adsystem360-bridge.php
├── includes/
│   ├── class-shortcodes.php
│   ├── class-settings.php
│   ├── class-api-client.php
│   ├── class-authentication.php
│   ├── class-embed-renderer.php
│   ├── class-security.php
│   └── class-error-handler.php
├── assets/
│   ├── css/
│   │   ├── bridge.css
│   │   └── admin.css
│   └── js/
│       └── bridge.js
├── templates/
│   ├── embed.php
│   ├── login-required.php
│   ├── access-denied.php
│   └── unavailable.php
├── languages/
├── uninstall.php
└── readme.txt

B · Capa de integración Python

Rutas propuestas, todavía sujetas a diagnóstico y verificación:

/integrations/wordpress/token
/integrations/wordpress/session
/portal/catalogo
/portal/cliente
/portal/pantallas
/portal/pantalla
/portal/campanas
/portal/programacion
/portal/emulador
/portal/medios
/portal/tarifas
/portal/facturacion
NUEVO_MODULO_COMERCIAL=NO
NUEVA_FICHA_CLIENTE=NO
NUEVA_FICHA_PANTALLA=NO
NUEVA_BASE_DE_DATOS=NO
NUEVO_MODO_DE_RENDER=POSIBLE

C · Autenticación

  1. El usuario inicia sesión en WordPress.
  2. WordPress conoce su identidad.
  3. El plugin solicita acceso a AdSystem360.
  4. AdSystem360 comprueba la vinculación.
  5. AdSystem360 emite un token temporal.
  6. El token contiene módulo y permisos.
  7. Se abre la vista portal.
  8. AdSystem360 vuelve a validar cada operación.
TOKEN_JWT=POR_DEFINIR
TOKEN_HMAC=POR_DEFINIR
SESION_INTERCAMBIADA=POR_DEFINIR

D · Vinculación de identidades

USUARIO_WORDPRESS
USUARIO_ADSYSTEM360
CLIENTE_ADSYSTEM360
ROL
PERMISOS
ESTADO

Ejemplo conceptual:

wordpress_user_id=84
adsystem_user_id=17
client_id=2
role=cliente
status=active

La ubicación definitiva de esta relación requiere diagnóstico. No se autoriza crear una tabla
hasta verificar que no exista ya una entidad equivalente.

06

Tipos de acceso

Cada vista se clasifica como pública, privada del cliente o exclusivamente administrativa.

Público

  • Catálogo público.
  • Planes comerciales públicos.
  • Servicios.
  • Demostración del emulador.
  • Formulario de solicitud.

Cliente autenticado

  • Mi cuenta y mis sucursales.
  • Mis pantallas y campañas.
  • Mi programación y mis medios.
  • Mis tarifas y documentos.
  • Mis facturas, pagos y contratos.

Administrativo

  • Usuarios y auditoría completa.
  • Configuración global.
  • Costos internos y precios mínimos.
  • Conciliaciones administrativas.
  • Todas las excepciones y clientes.
  • Estado técnico del Player Android.
  • Builds, rutas internas, Plan Maestro y Knowledge administrativo.
07

Catálogo de shortcodes

Shortcodes propuestos para Elementor y su vista de origen dentro de AdSystem360.

Shortcodes públicos

Shortcode Función Estado
[adsystem360_catalogo] Catálogo público autorizado. Propuesto
[adsystem360_planes] Planes comerciales públicos. Propuesto
[adsystem360_servicios] Conceptos públicos. Propuesto
[adsystem360_emulador_demo] Demostración sin datos privados. Propuesto
[adsystem360_solicitud] Solicitud de información o alta. Propuesto

Portal del cliente

Shortcode Vista de origen
[adsystem360_mi_cuenta] Ficha Cliente · General.
[adsystem360_mis_contactos] Ficha Cliente · Contactos.
[adsystem360_mi_expediente] Ficha Cliente · Expediente.
[adsystem360_mis_sucursales] Ficha Cliente · Sucursales.
[adsystem360_mis_pantallas] Ficha Cliente · Pantallas.
[adsystem360_mis_campanas] Ficha Cliente · Campañas.
[adsystem360_emulador] Ficha Cliente · Emulador.
[adsystem360_mis_tarifas] Ficha Cliente · Tarifas.
[adsystem360_facturacion] Ficha Cliente · Facturación.
[adsystem360_mi_actividad] Actividad propia permitida.

Ficha de pantalla

Shortcode Vista
[adsystem360_pantalla] Resumen de la pantalla seleccionada.
[adsystem360_pantalla_campanas] Campañas relacionadas.
[adsystem360_programacion] Programación.
[adsystem360_pantalla_emulador] Emulador.
[adsystem360_medios] Medios y playlist.

Área comercial privada

Shortcode Función
[adsystem360_servicios_contratados] Conceptos contratados.
[adsystem360_mi_plan] Plan vigente.
[adsystem360_precios_especiales] Precios autorizados para el cliente.
[adsystem360_mis_excepciones] Excepciones propias.
[adsystem360_cotizaciones] Cotizaciones del cliente.
[adsystem360_contratos] Contratos.
[adsystem360_ordenes] Órdenes o compromisos de servicio.
[adsystem360_mis_pagos] Pagos registrados.
08

Parámetros permitidos y prohibidos

Elementor puede controlar presentación, pero nunca identidad, permisos o secretos.

Parámetros permitidos

vista
orientacion
altura
tema
mostrar_titulo
mostrar_filtros

[adsystem360_emulador orientacion="horizontal"]
[adsystem360_catalogo vista="cards" mostrar_titulo="si"]
[adsystem360_mis_pantallas vista="cards"]
[adsystem360_pantalla vista="programacion"]

Parámetros prohibidos para uso libre

client_id
user_id
screen_id_sin_validacion
role
permission
price_profile_id
token
secret

Una pantalla se seleccionará desde el conjunto autorizado del usuario o mediante una referencia pública firmada.
Nunca se confiará directamente en un ID escrito en Elementor.

09

Modos de renderizado

La misma lógica y los mismos datos se presentan de forma distinta según el contexto.

Modo administrador

MENU_LATERAL=VISIBLE
ENCABEZADO=VISIBLE
BOTONES_ADMIN=VISIBLES
AUDITORIA=COMPLETA

Modo portal

MENU_LATERAL=OCULTO
ENCABEZADO_INTERNO=REDUCIDO
BOTONES_ADMIN=OCULTOS
DATOS=SOLO_CLIENTE_ACTUAL

Modo embed

HTML_COMPLETO_GLOBAL=NO
BODY_DINAMICO=SI
RESPONSIVE=SI
ALTURA_AJUSTABLE=SI
NAVEGACION_INTERNA=CONTROLADA

Layout único: no se duplicará ui_layout.py. Primero debe verificarse cómo produce hoy el documento final
y alrededor de ese propietario real se diseñará el modo portal.

10

Adaptación de controles

Las vistas del portal deben retirar acciones administrativas y conservar solo lo autorizado.

Ficha 360 del cliente

Cerrar superior=OCULTAR
Volver=ADAPTAR_AL_PORTAL
Editar=SEGUN_PERMISO
Auditoría=OCULTAR_PARA_CLIENTE
Actividad=LIMITADA_AL_CLIENTE

Ficha 360 de pantalla

Cerrar=OCULTAR
Ver clientes=OCULTAR
Ver sucursales=OCULTAR
Refrescar=MANTENER
Resumen=VISIBLE
Campañas=SEGUN_PERMISO
Programación=SEGUN_PLAN
Emulador=VISIBLE
Medios=SEGUN_PERMISO

Player Android

RUTAS_DE_SERVIDOR=OCULTAS
ESTADO_DE_GRADLE=OCULTO
ARCHIVOS_KOTLIN=OCULTOS
BUILD_INTERNO=OCULTO

El cliente solo vería:

  • Nombre del Player y pantalla asociada.
  • Estado y versión instalada.
  • Última conexión y sincronización.
  • Almacenamiento y actualización disponible.
11

Panel del plugin en WordPress

Configuración administrativa centralizada, sin colocar secretos dentro de Elementor.

Ubicación propuesta

WordPress
→ Ajustes
→ AdSystem360 Bridge

Configuración

URL_BASE_ADSYSTEM360
DOMINIO_WORDPRESS_AUTORIZADO
IDENTIFICADOR_DE_INTEGRACION
CLAVE_SECRETA
TIEMPO_DE_TOKEN
MODULOS_HABILITADOS
MODO_DEPURACION
ALTURA_PREDETERMINADA
PAGINA_DE_LOGIN
PAGINA_DE_ERROR

Las claves sensibles se almacenarán usando las capacidades seguras disponibles en WordPress
y nunca aparecerán en el HTML, en Elementor ni en los shortcodes.

12

Seguridad

Autorización por origen, usuario, cliente, módulo y recurso solicitado.

  • HTTPS=SI
  • ALLOWLIST_DE_DOMINIOS=SI
  • TOKEN_CORTA_DURACION=SI
  • TOKEN_DE_UN_SOLO_USO=EVALUAR
  • NONCE=SI
  • SCOPES_POR_MODULO=SI
  • VALIDACION_DE_CLIENTE=SI
  • VALIDACION_DE_PANTALLA=SI
  • CSRF=SI
  • CSP_FRAME_ANCESTORS=SI
  • RATE_LIMIT=SI
  • AUDITORIA=SI
  • FAIL_CLOSED=SI

Ejemplo conceptual de alcance

scope=portal:pantallas:read
client=cliente_resuelto_internamente
expires=fecha_corta
origin=https://fireflyops360.com

Aunque alguien copiara una URL embebida, no debería funcionar fuera del origen autorizado ni después de expirar.

13

Comportamiento ante errores

Mensajes claros para el usuario, sin revelar información interna.

Mensajes permitidos

  • Debe iniciar sesión para consultar esta sección.
  • Su cuenta no está vinculada a un cliente de AdSystem360.
  • No tiene permiso para consultar este módulo.
  • AdSystem360 no se encuentra disponible temporalmente.
  • La sesión expiró. Actualice la página.
  • La pantalla solicitada no pertenece a su cuenta.

Información que nunca debe mostrarse

  • Tracebacks.
  • Consultas SQL.
  • Rutas /root o /opt.
  • Tokens, claves o variables de entorno.
  • Detalles internos de FastAPI.
14

Fases de construcción

Primero se inspecciona, después se diseña, luego se construyen candidatos y al final se instala con autorización.

FASE 0

Diagnóstico integral de solo lectura

Revisar WordPress, plugins, tema, Elementor, PHP, login, usuarios, roles, permalinks, headers, CSP, cookies y HTTPS.

Revisar en AdSystem360: main.py, ui_layout.py, _NAV, routers, Ficha Cliente, Ficha Pantalla, Catálogo, sesiones, permisos, tablas de usuarios/clientes y auditoría.

MATRIZ_RUTAS_REALES
MATRIZ_MODULOS
MATRIZ_PERMISOS
MATRIZ_USUARIOS
ARCHIVOS_QUE_SE_TOCARIAN
RIESGOS
ROLLBACK

FASE 1

Contrato de integración

Shortcode
Ruta real
Tipo de acceso
Permiso
Parámetros
Vista
Respuesta
Error
Auditoría

FASE 2

Candidato del plugin

Construir adsystem360-bridge-v0.1.0.zip sin tocar producción.

FASE 3

Candidato Python

Crear únicamente las adaptaciones necesarias para token, sesión portal, modo embed, validación de origen, resolución del cliente y auditoría.

FASE 4

Shortcode público

Primera prueba con [adsystem360_catalogo] para validar comunicación básica sin identidad privada.

FASE 5

Shortcode privado

Segunda prueba con [adsystem360_mi_cuenta] para validar login, vinculación y aislamiento entre clientes.

FASE 6

Pantallas

[adsystem360_mis_pantallas]
[adsystem360_pantalla]
[adsystem360_programacion]
[adsystem360_emulador]
[adsystem360_medios]

FASE 7

Área comercial

Planes, tarifas, precios especiales, excepciones, cotizaciones, contratos, órdenes, facturación y pagos.

FASE 8

Instalación controlada

BACKUP_WORDPRESS
BACKUP_PLUGIN
BACKUP_PYTHON
VALIDACION
INSTALACION
PRUEBAS
ROLLBACK
CHECKPOINT
15

Primera versión recomendada

Un alcance pequeño que pruebe contenido público, autenticación, aislamiento e interactividad.

VERSION=0.1.0
SHORTCODE_1=[adsystem360_catalogo]
ACCESO_1=PUBLICO
SHORTCODE_2=[adsystem360_mi_cuenta]
ACCESO_2=CLIENTE_AUTENTICADO
SHORTCODE_3=[adsystem360_mis_pantallas]
ACCESO_3=CLIENTE_AUTENTICADO
SHORTCODE_4=[adsystem360_emulador]
ACCESO_4=CLIENTE_AUTENTICADO

Contenido público
Autenticación
Vinculación cliente
Aislamiento de datos
Ficha 360
Pantallas
Interactividad
Responsive
Elementor

16

Validaciones obligatorias

Ninguna instalación se considera terminada hasta superar estas comprobaciones.

  • PLUGIN_INSTALA=OK
  • PLUGIN_ACTIVA=OK
  • WORDPRESS_SIN_ERROR_FATAL=OK
  • ELEMENTOR=OK
  • SHORTCODE_PUBLICO=OK
  • SHORTCODE_PRIVADO=OK
  • TOKEN_TEMPORAL=OK
  • TOKEN_EXPIRADO_RECHAZADO=OK
  • ORIGEN_NO_AUTORIZADO_RECHAZADO=OK
  • CLIENTE_A_NO_VE_CLIENTE_B=OK
  • PANTALLA_AJENA_RECHAZADA=OK
  • MENU_ADMIN_NO_VISIBLE=OK
  • RUTAS_INTERNAS_NO_VISIBLES=OK
  • MOVIL=OK
  • TABLETA=OK
  • ESCRITORIO=OK
  • ZOOM_200=OK
  • ADSystem360_ADMIN_INTACTO=OK
  • MARIADB_SIN_ACCESO_WORDPRESS=OK
  • ROLLBACK=OK
17

Entregables

Documentación, candidatos, validadores, instalación, rollback y evidencia final.

01_DIAGNOSTICO_WORDPRESS.txt
02_DIAGNOSTICO_ADSYSTEM360.txt
03_MATRIZ_MODULOS_SHORTCODES.csv
04_MATRIZ_PERMISOS.csv
05_CONTRATO_DE_INTEGRACION.md
06_ADSYSTEM360_BRIDGE_v0.1.0.zip
07_CANDIDATO_PYTHON/
08_VALIDACION_AUTOMATIZADA.sh
09_INSTALACION_CONTROLADA.sh
10_ROLLBACK.sh
11_MANUAL_ADMINISTRADOR.docx
12_MANUAL_USUARIO_CLIENTE.docx
13_CHECKPOINT_FINAL.txt
14_SHA256_DE_ENTREGABLES.txt
18

Criterio de éxito

Qué debe poder hacer el cliente y qué debe permanecer bloqueado.

El cliente podrá

  1. Entrar en fireflyops360.com.
  2. Iniciar sesión una sola vez.
  3. Abrir su cuenta.
  4. Consultar sus sucursales.
  5. Consultar sus pantallas.
  6. Abrir una pantalla.
  7. Ver campañas y programación.
  8. Utilizar el emulador.
  9. Consultar medios.
  10. Revisar tarifas y facturación.

El cliente no podrá

  • Ver otro cliente.
  • Cambiar identificadores para saltar permisos.
  • Acceder al administrador.
  • Consultar MariaDB.
  • Obtener rutas internas.
  • Modificar precios no autorizados.
  • Abrir módulos sin permiso.
  • Reutilizar enlaces vencidos.
19

Estado del proyecto

Separación clara entre lo existente, lo observado, lo propuesto y lo todavía no autorizado.

Elemento Estado
PROYECTO ADSystem360_BRIDGE_WORDPRESS
WORDPRESS_EXISTENTE
ADSystem360_EXISTENTE
FICHA_CLIENTE_EXISTENTE
FICHA_PANTALLA_EXISTENTE
CATALOGO_COMERCIAL En desarrollo
PLAYER_ANDROID_MODULO Existente
PLUGIN_WORDPRESS Propuesto
RUTAS_PORTAL No verificadas
AUTENTICACION_COMPARTIDA Propuesta
CONEXION_DIRECTA_DB Prohibida
IMPLEMENTACION No autorizada
PRODUCCION_MODIFICADA No
SIGUIENTE_FASE DIAGNOSTICO_INTEGRAL_DE_SOLO_LECTURA