conexia
Manual Funcional
CRM Conexia
Documento base del proyecto: roles, funcionalidades, integraciones y flujos operativos. Todo lo descrito aqui esta basado en documentacion verificada.
Version 1.1 | Abril 2026
Stack CRM: FastAPI + PostgreSQL + Next.js + Redis + Celery
Stack Presupuestador: PHP puro + MySQL (pedidos.conexiatec.com)
Autores: Conexia Telecomunicaciones
Indice de Contenidos
  1. Vision General del Ecosistema
    1. Los 3 sistemas y como se conectan
    2. Que hace cada sistema (Regla de Oro)
    3. Arquitectura tecnica
  2. Roles y Permisos
    1. Los 5 roles del CRM
    2. Jerarquia de organizaciones
    3. Permisos por rol (matriz completa)
    4. Modelo multi-tenant
  3. Flujo por Rol: Super Admin
  4. Flujo por Rol: Admin
  5. Flujo por Rol: Agente
  6. Flujo por Rol: Distribuidor
  7. Flujo por Rol: Cliente
  8. Modulos del CRM (detalle funcional)
    1. Dashboard
    2. Contactos y Vista 360
    3. Tickets y Sub-tickets
    4. Pipeline comercial
    5. Catalogo de productos
    6. Presupuestos
    7. Pedidos y Aclaradores
    8. Cobertura multi-proveedor
    9. Facturacion (cache DoWISP)
    10. Comunicaciones y Mensajeria
    11. Analytics
    12. Centro de Control (Super Admin)
    13. Configuracion del sistema
    14. Portal Cliente
  9. Integraciones
    1. CRM <-> Presupuestador (API REST bidireccional)
    2. CRM <-> DoWISP (API + polling)
    3. Cobertura: Sarenet, Onivia, CableMovil
    4. Canales: WhatsApp, Telegram, PBX
    5. n8n (automatizaciones)
  10. Seguridad
  11. Fases de desarrollo
  12. Preguntas abiertas y decisiones pendientes

1. Vision General del Ecosistema

1.1 Los 3 sistemas y como se conectan

Conexia opera con 3 sistemas que deben trabajar juntos. El CRM es el hub central que unifica la informacion de los otros dos.

+-----------------------------------+     +---------------------------+
| PRESUPUESTADOR (PHP)              |     | DoWISP API                |
| pedidos.conexiatec.com            |     | conexiatec.dowisp.com     |
|-----------------------------------|     |---------------------------|
| Presupuestos, Pedidos             |     | Clientes (54 campos)      |
| Pipeline Kanban distribuidores    |     | Suscripciones (58 campos) |
| Productos (36 mapeados DoWISP)    |     | Facturas + Lineas         |
| Agentes (1,638), Distrib. (1,456) |     | Efectos/Cobros (30 camp.) |
| Actividades comerciales           |     | Firma Contrato (50 camp.) |
| Scoring / Gamificacion            |     | Tickets (45 campos)       |
| Cobertura (iframe actual)         |     | Productos + Tarifas       |
|                                   |     | Email + SMS integrado     |
| Webhooks salientes (6 eventos)    |     |                           |
| API REST (X-API-Key, 7 endpoints) |     | Auth: Token header        |
+-----------------------------------+     +---------------------------+
          |                                         |
          | Webhooks + API REST                      | API REST (polling)
          | (bidireccional)                          | (lectura + escritura)
          v                                         v
+------------------------------------------------------------------+
|                    CRM CONEXIA (NUEVO)                            |
|                 crm.conexiatec.com - HUB CENTRAL                 |
|------------------------------------------------------------------|
| Contactos unificados (Presup + DoWISP vinculados por NIF)        |
| Vista 360: servicios + facturas + deuda + tickets + actividades  |
| Tickets con sub-tickets en cascada                                |
| Mensajeria multi-canal (WhatsApp, Telegram, PBX)                 |
| Cobertura multi-proveedor (Sarenet, Onivia, CableMovil)         |
| Gestion organizaciones (5 niveles)                                |
| Analytics y dashboards por rol                                    |
+------------------------------------------------------------------+

1.2 Que hace cada sistema (Regla de Oro)

REGLA DE ORO: No replicar lo que otro sistema ya hace bien.

SistemaResponsabilidadEl CRM NO hace
PresupuestadorCrear presupuestos, gestionar pedidos, pipeline de distribuidores, scoring/gamificacion, aclaradoresEl CRM no crea presupuestos ni gestiona pedidos. Lee datos via API.
DoWISPFacturacion, cobros, suscripciones, provisioning, firma contratosEl CRM no genera facturas ni gestiona cobros. Lee datos via API y los cachea.
CRM ConexiaVision unificada del cliente, tickets + sub-tickets, mensajeria, cobertura, organizaciones, analyticsEl CRM es el punto unico de consulta. Agrega datos de ambos sistemas.

1.3 Arquitectura tecnica

ComponenteCRM (nuevo)Presupuestador (existente)
BackendPython 3.12 + FastAPIPHP puro con clases OOP
FrontendNext.js 14 + React 18 + shadcn/ui + TailwindjQuery 3.7 + Bootstrap 4/5
BDPostgreSQL 16MySQL (conexiatec_adminpresupuestador)
CacheRedis 7No tiene
AsyncCelery 5 (polling DoWISP, emails, reglas)No tiene (todo sincrono)
AuthJWT (access 15min + refresh 7d) + 2FA TOTPSesiones PHP + SHA-256 + salt
APIREST con Bearer token (45 endpoints)REST con X-API-Key (7 endpoints + 10 Fase 0)
WebhooksReceptor HMAC-SHA256Emisor HMAC-SHA256 (backoff exponencial)
InfraDocker Compose + NginxServidor PHP (pedidos.conexiatec.com)

2. Roles y Permisos

2.1 Los 5 roles del CRM

El sistema tiene exactamente 5 roles. No mas.

RolDescripcionVe datos financierosPuede configurar
Super AdminControl total del sistema. Unico rol que ve MRR, ARPU, churn, ganancias, deuda global, analytics. Puede suplantar cualquier usuario.SISI (todo)
AdminGestion operativa: tickets, contactos, organizaciones, usuarios. NO ve datos financieros globales.NOParcial (usuarios, orgs)
AgenteAtencion al cliente: tickets asignados, contactos asignados, presupuestos (lectura via Presupuestador), comunicaciones, cobertura.NONO
DistribuidorVe SUS clientes, tickets de sus clientes, presupuestos (via Presupuestador), servicios. Puede tener delegaciones.NO (excepto SUS comisiones MR en Presupuestador)Sus usuarios
ClientePortal simplificado: facturas, servicios, tickets propios, datos personales. No ve nada del back-office.Solo SUS facturasSolo SUS datos

Regla critica: Datos financieros (MRR, ARPU, churn, deuda global, ganancias, analytics financiero) son exclusivos del Super Admin. Ningun otro rol puede verlos.

2.2 Jerarquia de organizaciones

N0: CONEXIA (Super-Matriz)
  Control y visibilidad absoluta. Suplantacion de cualquier usuario.
  Roles internos: Super Admin, Admin, Agente
  |
  +-- N1: MASTER (distribuidor de alto nivel)
  |    Ve: sus distribuidores, clientes de estos, comisiones
  |    NO puede: suplantar distribuidores inferiores
  |    |
  |    +-- N2: DISTRIBUIDOR (1,456 existentes)
  |    |    Ve: clientes activos, suscripciones, servicios, importes
  |    |    Puede: modificar servicios, generar tickets en nombre de clientes
  |    |    Presupuestador: CRM ventas Kanban, generar pedidos, ver comisiones MR
  |    |    |
  |    |    +-- N2.5: DELEGACION (sucursales del distribuidor)
  |    |    |    Silo aislado: solo ve SUS presupuestos
  |    |    |    NO ve: otras delegaciones, datos economicos del distribuidor, 347
  |    |    |
  |    |    +-- N3: CLIENTE (empresa / autonomo / particular)
  |    |         Portal: facturas, servicios, tickets, contratos, datos
  |    |         |
  |    |         +-- CONTACTOS (personas sin acceso, solo datos)
  |    |
  |    +-- N2: DISTRIBUIDOR ...
  |
  +-- N1: MASTER ...

Regla de visibilidad: Cada nivel ve SOLO sus descendientes. Nunca al reves (un distribuidor no ve al master) ni lateralmente (un distribuidor no ve a otro distribuidor).

2.3 Permisos por rol (matriz completa)

FuncionalidadSuper AdminAdminAgenteDistribuidorCliente
Dashboard (con sus KPIs)SISISISIPortal
Contactos / Vista 360TODOSTODOSSolo asignadosSolo SUS clientesNO
Tickets (ver)TODOSTODOSSolo asignadosSolo SUS clientesSolo propios
Tickets (crear)SISISIEn nombre de sus clientesTipificados
Sub-tickets (crear/escalar)SISISINONO
Pipeline comercialSISINONO (usa Presupuestador)NO
Catalogo productosCRUD completoCRUDSolo lecturaSolo lectura (filtrado)NO
PresupuestosLectura (via API Presup)LecturaLecturaCRUD (en Presupuestador)NO
PedidosLectura + tramitarLectura + tramitarLecturaLectura propiosNO
CoberturaSISISISINO
Facturacion (DoWISP)TODATODASolo asignadosSolo SUS clientesSolo propias
Comunicaciones / MensajeriaTODASTODASSolo asignadosNONO
AnalyticsTODOS los tabsNONONONO
OrganizacionesCRUD completoLectura + crearNOSolo SU orgNO
UsuariosCRUD todosCRUD (no Super Admin)NOSolo SUS usuariosNO
Configuracion sistemaTODONONONONO
Suplantar usuariosCualquieraNONOSolo SUS empleadosNO
Ver datos financieros globalesSINONONONO

2.4 Modelo multi-tenant

El sistema se basa en Organizaciones, no en usuarios sueltos. Cada entidad (Conexia, distribuidor, cliente) es una organizacion.

Creacion de organizaciones

Reglas de la ficha de organizacion

CampoRegla
NIF/CIFInmutable tras creacion. No se puede modificar nunca.
IBANAl modificar, el sistema exige subir un Certificado Bancario. Esto genera un ticket de aprobacion para Super Admin. El cambio NO es inmediato.
ObservacionesCampo de texto libre. Solo visible para CONEXIA (N0). Oculto para Masters, Distribuidores y Clientes.
Estado Activo/InactivoSolo CONEXIA puede bloquear el acceso total a la plataforma.
Codigo PostalAl introducirlo, se auto-rellenan Poblacion, Provincia, CCAA. Esto determina automaticamente el tipo de impuesto (IVA 21% / IGIC 7% / IPSI).
Comercial asignadoSelector que muestra solo usuarios CONEXIA con rol Agente. Solo visible en fichas Master/Distribuidor.
Eliminacion usuariosSiempre soft-delete (logica). Nunca borrado fisico para mantener trazabilidad.

Datos de la ficha de empresa

3. Flujo por Rol: Super Admin

El Super Admin es el unico rol con vision completa del negocio. Tiene acceso a todo el sistema sin restricciones.

Acceso

Sidebar completo: Dashboard, Contactos, Vista 360, Tickets, Pipeline, Catalogo, Presupuestos, Pedidos, Cobertura, Facturacion, Comunicaciones, Centro de Control, Analytics, Configuracion, Portal Cliente (vista previa).

Dashboard

KPIs financieros: MRR (ingresos recurrentes mensuales), ARPU (ingreso medio por cliente), Churn (tasa abandono), Deuda vencida. Graficos: evolucion MRR 12 meses, pipeline funnel, nuevos vs bajas, mix productos. Tablas: tickets urgentes, actividad reciente.

Flujo de trabajo diario tipico

1
Revisar dashboard: MRR, churn, deuda, tickets criticos.
2
Gestionar tickets escalados: Sub-tickets de proveedores (Sarenet), distribuidores. Verificar SLA.
3
Analytics: Tab financiero (facturacion, cobrado vs facturado, antiguedad deuda). Tab comercial (ranking agentes, conversion). Tab soporte (SLA, reincidencia).
4
Configuracion: Gestionar organizaciones (arbol), usuarios, sync DoWISP (verificar estado modulos), integraciones.
5
Aprobar cambios IBAN: Tickets generados automaticamente cuando un distribuidor o cliente solicita cambio de cuenta bancaria.

Acciones exclusivas del Super Admin


4. Flujo por Rol: Admin

El Admin gestiona operaciones diarias sin acceso a datos financieros globales.

Acceso

Todo excepto: Configuracion del sistema, Analytics, datos financieros.

Dashboard

KPIs operativos: Tickets abiertos (criticos), SLA cumplido, Contactos activos, Tareas equipo.

Flujo de trabajo diario tipico

1
Asignar tickets: Distribuir tickets entrantes entre agentes segun carga de trabajo.
2
Supervisar SLA: Verificar tickets proximos a vencer, escalar si necesario.
3
Gestionar usuarios y organizaciones: Crear nuevos usuarios, asignar roles, gestionar accesos.
4
Pipeline: Supervisar oportunidades de venta, mover etapas.
5
Catalogo: Actualizar productos, familias, datasheets.

5. Flujo por Rol: Agente

El Agente atiende clientes, gestiona tickets y consulta informacion.

Acceso

Dashboard (sus KPIs), Contactos (asignados), Tickets (asignados), Presupuestos (lectura), Cobertura, Facturacion (sus clientes), Comunicaciones.

Dashboard

KPIs personales: Mis tickets (criticos), SLA mis tickets, Tareas pendientes, Contactos asignados.

Flujo de trabajo diario tipico

1
Revisar tickets asignados: Priorizar criticos, responder pendientes.
2
Crear sub-tickets: Si necesita escalar al proveedor (Sarenet) o notificar al distribuidor, crea sub-ticket con su propio hilo.
3
Mensajeria: Responder WhatsApp/Telegram de clientes desde el CRM. Cada conversacion vinculada al contacto y ticket.
4
Vista 360: Al atender un cliente, consultar ficha completa: servicios activos, deuda, facturas, historial tickets, actividades.
5
Cobertura: Consultar disponibilidad multi-proveedor para un cliente que solicita nuevo servicio.

6. Flujo por Rol: Distribuidor

El Distribuidor gestiona sus clientes y usa el Presupuestador para ventas.

Acceso CRM

Dashboard (sus KPIs), Contactos (SUS clientes), Tickets (de sus clientes), Facturacion (de sus clientes), Cobertura.

Acceso Presupuestador (sistema separado)

El distribuidor accede al Presupuestador (pedidos.conexiatec.com) para crear presupuestos, gestionar pedidos y ver su pipeline Kanban. Desde el CRM, un boton redirige al Presupuestador con inicio de sesion automatico.

Integracion CRM <-> Presupuestador para el Distribuidor:

Dashboard

KPIs: Mis clientes (nuevos este mes), Tickets (criticos), Presupuestos pendientes, Servicios activos.

Gestion de usuarios del Distribuidor (Admin de org)

El Admin del distribuidor puede:

Delegaciones (N2.5)

Sucursales del distribuidor con entorno aislado. El usuario master de la delegacion solo puede crear, ver y tramitar presupuestos de SU delegacion. No ve otras delegaciones ni datos economicos del distribuidor principal.


7. Flujo por Rol: Cliente

El Cliente accede a un portal simplificado. Layout diferente (sin sidebar completo).

Acceso

Portal Cliente: Mis servicios, Mis facturas, Soporte, Mis datos.

Primer login obligatorio

Funcionalidades del Portal

SeccionFuncionalidad
Mis serviciosVer servicios activos con cuota, permanencia, estado. Solicitar ampliacion/suspension.
Mis facturasConsultar facturas, descargar PDF, pagar pendientes (URL cobro), descargar 347 anual.
SoporteCrear tickets tipificados (Tecnico, Administrativo, Back Office). Ver estado de tickets existentes.
Mis datosModificar email de facturacion. Ver datos personales (nombre, NIF, IBAN enmascarado). Descargar contratos firmados.
ContactosCrear contactos internos (nombre, cargo, email, telefono) que no tienen acceso a la plataforma.

8. Modulos del CRM (detalle funcional)

8.1 Dashboard

El dashboard se adapta segun el rol del usuario. Solo Super Admin ve datos financieros.

RolKPIs visibles
Super AdminMRR, ARPU, Churn, Deuda vencida, Tickets abiertos, SLA, Pipeline valor, Nuevos clientes + todos los graficos
AdminTickets abiertos, SLA cumplido, Contactos activos, Tareas equipo
AgenteMis tickets, SLA mis tickets, Tareas pendientes, Contactos asignados
DistribuidorMis clientes, Tickets, Presupuestos pendientes, Servicios activos
ClientePortal: Servicios, Cuota mensual, Facturas pendientes, Tickets abiertos

8.2 Contactos y Vista 360

La pagina mas importante del CRM. Toda la informacion del cliente en una sola pantalla.

Lista de contactos

Vista 360 (9 tabs)

TabDatosOrigen
ResumenDatos cliente, deuda, servicios activos, ultima actividadCRM + DoWISP
ServiciosSuscripciones detalladas: producto, cuota, permanencia, proveedor, altaDoWISP
FacturasHistorial facturas: fecha, base, IVA, total, estado, PDF, enviar emailDoWISP
TicketsTickets abiertos + historial, con boton crear ticket pre-rellenando clienteCRM
PipelineOportunidades activas + presupuestos del PresupuestadorCRM + Presupuestador API
ActividadesTimeline cronologico: llamadas, emails, visitas, tareas con filtrosCRM
ComunicacionesLog de emails, SMS, WhatsApp, llamadas con estado entregaCRM
DocumentosContratos firmados, mandatos SEPA, ofertas (descarga PDF)DoWISP (firmas)
NotasNotas libres del equipo. Privadas (solo N0) y publicas.CRM

Vinculacion entre sistemas

Un contacto del CRM se vincula con el cliente de DoWISP y el contacto del Presupuestador mediante el NIF/CIF como clave natural. El campo dowisp_cliente_id almacena el ID de DoWISP. El campo presup_uuid almacena el UUID del Presupuestador.


8.3 Tickets y Sub-tickets

Ticket principal

Estructura: sidebar (estado, prioridad, asignado, SLA, cliente, servicio afectado, tags, acciones) + conversacion (hilos de respuestas y notas internas).

Sistema de sub-tickets en cascada

Cuando un ticket necesita involucrar a terceros (proveedor, distribuidor, equipo interno), se crean sub-tickets con numeracion #parent-N.

TICKET #1234 - "Sin conexion FTTH zona norte"
  Creado por: Cliente (Juan Perez)
  Asignado a: Ana Garcia (Agente)
  Conversacion: cliente <-> agente
  |
  |-- SUB-TICKET #1234-1 (Proveedor: Sarenet)
  |   Hilo propio: Back Office <-> Sarenet (via email)
  |   Cada respuesta email del proveedor se integra en el hilo
  |
  |-- SUB-TICKET #1234-2 (Distribuidor: Alpha)
  |   Hilo propio: Agente <-> Distribuidor
  |   Notificacion al distribuidor sobre clientes afectados
  |
  |-- SUB-TICKET #1234-3 (Interno: Tecnico)
      Hilo propio: solo equipo interno
      Verificacion post-restauracion

Reglas de los sub-tickets

SLA (Service Level Agreement)

PrioridadTiempo primera respuestaTiempo resolucion
Critica30 minutos2 horas
Alta1 hora4 horas
Normal4 horas24 horas
Baja8 horas48 horas

8.4 Pipeline comercial

Kanban de oportunidades de venta. Solo visible para Super Admin y Admin.

Etapas: Prospecto (10%) -> Contactado (25%) -> Propuesta (50%) -> Negociacion (75%) -> Ganado (100%) / Perdido.

Cada tarjeta muestra: nombre oportunidad, empresa, valor MRR, agente asignado. Drag & drop para mover etapas.

Relacion con el Presupuestador: El pipeline del CRM muestra las oportunidades del CRM. El pipeline del Presupuestador (potenciales/activos) es independiente y lo usan los distribuidores. Los datos se sincronizan via webhooks (lead.creado, lead.etapa_cambiada).

8.5 Catalogo de productos

Gestion del catalogo de productos con jerarquia de 3 niveles.

Jerarquia

FAMILIA (ej: "Pack Fibra+Movil")
  |-- Segmento: Empresa / Residencial / Ambos
  |-- Margen Master: 8%
  |-- Margen Distribuidor: 5%
  |-- Visibilidad: Todos / Solo Masters / Solo CONEXIA
  |
  +-- SUBFAMILIA (ej: "Pack Fibra 600Mb")
  |    |-- Hereda margenes de Familia (puede sobrescribir)
  |    |
  |    +-- PRODUCTO (ej: "Fibra 600Mb + Movil 30GB")
  |         |-- Ref DoWISP (vinculacion)
  |         |-- Ref Herramienta (auto-generada)
  |         |-- es_servicio: true (genera MRR)
  |         |-- Precio coste (solo visible Gerencia/Super Admin)
  |         |-- PVP (Base Imponible)
  |         |-- Descuento por defecto
  |         |-- Importe alta + descuento alta
  |         |-- Margenes (hereda o sobrescribe)
  |         |-- DataSheets PDF vinculados
  |         +-- Imagenes (galeria)

Reglas de precios

DataSheets y generacion PDF

Desactivacion en cascada

Si se desactiva una Familia, se ocultan automaticamente todas sus subfamilias y productos.


8.6 Presupuestos

Los presupuestos se crean en el Presupuestador (pedidos.conexiatec.com) y se leen en el CRM via API REST.

Que muestra el CRM

Que hace el Presupuestador (no el CRM)

Sincronizacion


8.7 Pedidos y Aclaradores

Los pedidos se tramitan en el Presupuestador y se consultan en el CRM.

Aclaradores (formularios dinamicos)

Al tramitar un pedido, el Presupuestador muestra formularios dinamicos segun el producto:

ProductoAclaradorCampos
Linea MovilAclarador MovilTipo tramite (nuevo/portabilidad), soporte (SIM/eSIM), logistica (envio), numero a portar, operador origen
FibraAclarador FibraTipo instalacion, direccion, contacto en sitio, franja horaria, cobertura verificada
PBX VoIPAclarador PBXNumero extensiones, tipo terminales, portabilidad fijos

Multiplicidad: Si el cliente contrata 5 lineas moviles, el sistema exige rellenar 5 aclaradores de movil.

Campos condicionales: Si es portabilidad -> pedir numero actual. Si es eSIM -> pedir email. Si es SIM fisica -> pedir direccion envio.

8.8 Cobertura multi-proveedor

Check de cobertura consultando 3 proveedores desde una sola pantalla.

ProveedorMetodoDatos disponiblesEstado
SarenetBusqueda en CSV local de nodosFTTH disponible, velocidad max, central, nodo, distanciaCSV disponible
OniviaAPI REST v2.3FTTO 10Gb, tipo acceso, SLA, tiempo activacionCredenciales OK
CableMovil/OrangeConsulta cobertura OrangeFTTH disponible, velocidad, tecnologia, operador redPendiente definir metodo

Flujo

  1. Usuario introduce direccion + codigo postal
  2. Auto-relleno: poblacion, provincia (API publica de CP)
  3. Click "Buscar cobertura": consulta en paralelo los 3 proveedores
  4. Resultados: tabla comparativa con disponibilidad, velocidad, estado por proveedor
  5. Boton "Crear presupuesto con esta direccion": rellena automaticamente el formulario de presupuesto

Pendiente definir: El metodo exacto para CableMovil/Orange. Opciones: (a) API oficial si la proporcionan, (b) iframe integrado, (c) link directo a orange.es/contratacion/cobertura. La idea es centralizar la consulta, no necesariamente automatizarla al 100%.


8.9 Facturacion (cache DoWISP)

El CRM no genera facturas. Lee y cachea datos de DoWISP para mostrarlos.

4 tabs

TabDatosOrigen
SuscripcionesCliente, producto, estado, cuota, permanencia, altaDoWISP /suscripciones/
FacturasNumero, fecha, base, IVA, total, estado, PDF, enviar emailDoWISP /facturas/
Cobros/EfectosImporte, vencimiento, estado, dias vencido + KPIsDoWISP /efectos/
Top deudoresRanking morosos: deuda, recibos, antiguedad, score riesgoCalculado CRM desde DoWISP

Sincronizacion DoWISP (Celery)

ModuloFrecuencia polling
Clientes5 minutos
Suscripciones5 minutos
Tickets2 minutos
Efectos/Cobros10 minutos
Facturas15 minutos
Firmas/Contratos10 minutos
Productos/Tarifas1 hora

Nota sobre DoWISP API: Actualmente solo funciona el endpoint /api/clientes/. Los demas (suscripciones, facturas, tickets, efectos) necesitan que DoWISP active el acceso. Esto esta confirmado como posible - solo hay que solicitarlo.


8.10 Comunicaciones y Mensajeria

Mensajeria en tiempo real

Interfaz tipo chat con panel izquierdo (lista conversaciones) y panel derecho (chat activo). Canales integrados:

CanalIntegracionArchivo backend
WhatsAppMeta Business API (Bearer Token)comms/channels/whatsapp.py
TelegramBot API (Bot Token)comms/channels/telegram.py
PBX/Centralita3CX/Asterisk AMI (IP whitelist)comms/channels/pbx.py

Cada conversacion se vincula al contacto (Vista 360) y opcionalmente a un ticket.

Historial

Log de todas las comunicaciones: fecha, canal, direccion (entrante/saliente), destino, asunto, estado entrega, usuario.

Plantillas

Templates con variables: {{nombre}}, {{empresa}}, {{deuda}}, {{url_cobro}}, etc. Tipos: Email, SMS, WhatsApp.

Campanas

Envio masivo segmentado: seleccionar audiencia (filtros), plantilla, canal, programar envio. Metricas: enviados, abiertos, clicks, conversiones.


8.11 Analytics

Solo visible para Super Admin.

TabMetricas
EjecutivoMRR, ARPU, Churn, Clientes activos. Graficos: MRR 12m, nuevos vs bajas, mix productos, tickets por prioridad
ComercialLeads activos, tasa conversion, tiempo cierre, win rate. Ranking agentes. ROI por canal. Pipeline funnel.
FinancieroFacturacion mes, cobrado vs facturado, devoluciones, antiguedad deuda, deuda por producto
SoporteTiempo resolucion, SLA cumplido, backlog, satisfaccion. Tickets por departamento. Carga agentes. Reincidencia.

8.12 Centro de Control (Super Admin)

Solo visible para Super Admin (N0). Panel unificado que consolida datos de los 3 sistemas (CRM, Presupuestador, DoWISP) en una unica vista. Permite controlar todos los procesos que se estan desarrollando a traves de los tres sistemas.

Objetivo: El Super Admin necesita vision completa y cruzada del negocio sin tener que saltar entre 3 plataformas. El Centro de Control es el panel de mando unificado.

Ruta de acceso

/control-center - Icono "capas" en el sidebar, entre Comunicaciones y Analytics. Solo aparece para rol Super Admin.

Indicadores de estado de sistemas

En la parte superior se muestran los 3 sistemas con su estado en tiempo real (Online/Offline/Degradado). Permite saber de un vistazo si alguna integracion esta caida.

5 Tabs del Centro de Control

Tab 1: Resumen global

Fuente: Los 3 sistemas combinados

Tab 2: Comercial

Fuente: Presupuestador API (pedidos.conexiatec.com)

Tab 3: Operaciones

Fuente: DoWISP (cache billing en PostgreSQL)

Tab 4: Soporte

Fuente: CRM interno + DoWISP cache

Tab 5: Procesos

Fuente: n8n API + sync_state + webhook_log

Datos cruzados exclusivos del Centro de Control

A diferencia del Dashboard (que muestra KPIs del rol) y Analytics (que profundiza en una dimension), el Centro de Control cruza datos entre sistemas:

Backend - Endpoints API

EndpointDescripcionFuente
GET /api/v1/control-center/overviewKPIs globales cruzados + alertas + timelineCRM + Presup. API + DoWISP cache
GET /api/v1/control-center/commercialPipeline, top distribuidores, en riesgoPresupuestador API REST
GET /api/v1/control-center/operationsSuscripciones, cobros, firmas, deudaDoWISP cache (billing schema)
GET /api/v1/control-center/supportTickets, agentes, churn cruzadoCRM interno + DoWISP cache
GET /api/v1/control-center/healthWorkflows n8n, sync state, webhooks, auditn8n API + sync_state + webhook_log

Permiso requerido

analytics.control_center - Solo asignado a los roles super_admin y gerencia.


8.13 Configuracion del sistema

Solo visible para Super Admin.

TabContenido
OrganizacionesArbol jerarquico (N0-N3). Crear, editar, desactivar organizaciones.
UsuariosCRUD usuarios con filtro por org, rol, estado. Asignar roles. Forzar 2FA.
Sync DoWISPEstado de cada modulo: frecuencia, ultimo sync, registros, errores. Boton forzar sync.
IntegracionesDoWISP (URL/token cifrado), Presupuestador (URL/API Key), Webhooks (URLs + HMAC), SMTP (SendGrid).
GeneralDatos empresa, zona horaria, idioma, moneda. Seguridad: 2FA obligatorio, intentos login, sesion expira.

8.14 Portal Cliente

Descrito en seccion 7. Layout diferente al back-office. 4 tabs: Servicios, Facturas, Soporte, Mis datos.

9. Integraciones

9.1 CRM <-> Presupuestador (API REST bidireccional)

Principio: El CRM es el hub central de datos del cliente. El Presupuestador es la herramienta de ventas. Ambos coexisten y se comunican via API REST.

Presupuestador -> CRM (webhooks)

El Presupuestador emite webhooks (HMAC-SHA256) cuando ocurren eventos:

EventoCuando se disparaEstado
presupuesto_creadoAl guardar nuevo presupuestoExiste
substatus_cambiadoAl cambiar estado (tramitado, rechazado, caducado)Existe
distribuidor.creadoAl crear prospecto via APIExiste
distribuidor.activadoAl convertir prospecto a activoExiste
agente.creadoAl activar distribuidor (crea agente automatico)Existe
pedido.tramitadoAl tramitar pedido (contrato DoWISP creado)Fase 0
lead.creadoNuevo lead en pipelineFase 0
lead.etapa_cambiadaLead cambia etapa en KanbanFase 0

El CRM recibe estos webhooks en POST /webhooks/presupuestador, verifica firma HMAC, y actualiza sus datos.

CRM -> Presupuestador (API REST)

El CRM consulta datos del Presupuestador via su API (auth: X-API-Key):

EndpointUso en el CRMEstado
GET distribuidor/listarSincronizar lista distribuidoresExiste
GET distribuidor/ver/{uuid}Detalle distribuidor con agentesExiste
GET stats/resumenKPIs para analyticsExiste
GET presupuesto/listarLista presupuestos en Vista 360Fase 0
GET presupuesto/ver/{uuid}Detalle presupuestoFase 0
GET pedido/listarLista pedidosFase 0
GET producto/listarCatalogo activoFase 0
POST contacto/buscarBuscar contacto por CIF (POST, nunca URL)Fase 0

Acceso al Presupuestador desde el CRM

Decision tomada: El Presupuestador sigue siendo la herramienta de creacion de presupuestos. Desde el CRM, segun el rol del usuario, habra un boton que redirige al Presupuestador. Opciones de inicio de sesion:

  1. SSO (Single Sign-On): El CRM genera un token temporal que el Presupuestador valida. El usuario no ve login.
  2. Deep link con token: URL tipo pedidos.conexiatec.com/auto-login?token=JWT_TEMPORAL&redirect=presupuestos.php
  3. Sesiones separadas: El usuario tiene credenciales en ambos sistemas (menos ideal, pero mas simple).

Recomendacion: Opcion 2 (deep link con token temporal). El Presupuestador ya tiene sistema de sesiones PHP + API keys. Se puede agregar un endpoint POST auto-login que acepte un JWT firmado por el CRM, cree la sesion PHP, y redirija.


9.2 CRM <-> DoWISP (API + polling)

Lectura (DoWISP -> CRM)

Celery tasks hacen polling periodico a la API de DoWISP y cachean los datos en PostgreSQL:

Escritura (CRM -> DoWISP)

Al tramitar un pedido, el flujo es: Presupuestador llama a DoWISP POST /contratador/crea_contrato/. El CRM no escribe directamente en DoWISP (lo hace el Presupuestador).

Pendiente: Actualmente solo funciona /api/clientes/ en DoWISP. Los endpoints de suscripciones, facturas, tickets, efectos necesitan que DoWISP active el acceso. Confirmado que es posible solicitandolo.


9.3 Cobertura: Sarenet, Onivia, CableMovil

ProveedorMetodoEstado
SarenetCSV local con nodos y zonas de cobertura. Busqueda por CP/direccion.CSV disponible
Onivia B2BAPI REST cobertura v2.3. Credenciales: acceso a front.onivia.es confirmado.Acceso OK
CableMovil/OrangeConsulta cobertura. Metodo exacto pendiente de definir.Pendiente metodo

9.4 Canales: WhatsApp, Telegram, PBX

CanalAuth entranteAuth salienteProteccion
WhatsAppVerify TokenBearer Token MetaIP whitelist Meta
TelegramSecret token en URLBot TokenVerificar source IP
PBX/CentralitaIP whitelistAMI credentialsRed interna / VPN

9.5 n8n (automatizaciones)

n8n Skynet (skynet-n8n.conexiatec.com) para automatizaciones que conectan el CRM con otros sistemas:

Auth: API Key con scope limitado. Red interna Docker.

10. Seguridad

OWASP Top 10

#AmenazaProteccion
A01Broken Access ControlRBAC + org hierarchy check en CADA endpoint (middleware FastAPI)
A02Cryptographic FailuresTLS 1.3 + AES-256 campos sensibles (pgcrypto)
A03InjectionORM parametrizado (SQLAlchemy) + Pydantic validacion + CSP headers
A07Auth FailuresJWT refresh + 2FA TOTP + lockout (5 intentos, 30min bloqueo)
A08Data IntegrityFirma HMAC-SHA256 en todos los webhooks
A09Logging FailuresAudit log + Sentry. NUNCA loguear passwords, tokens, IBAN

Autenticacion

MecanismoDetalle
JWT Access TokenExpira 15 min. Header Authorization: Bearer
JWT Refresh TokenExpira 7 dias. Cookie httponly secure samesite=strict
Password Hashbcrypt 12 rounds
2FA TOTPGoogle Authenticator. Secret cifrado en BD con APP_KEY
Rate Limiting120 req/min general, 10 req/min en /auth/*, 300 en /webhooks
Session FingerprintHash de IP+UserAgent en JWT. Si cambia, invalidar.

GDPR/LOPD

11. Fases de desarrollo

FaseSemanasEntregable
Fase 0 (Presupuestador)3API REST 12 endpoints, organizations, RBAC, dowisp_id, webhooks, margenes, IVA/IGIC, cifrar token
Fase 1 (Fundacion CRM)6Docker, auth JWT+2FA, contacts, tickets, frontend base (login, dashboard, sidebar)
Fase 2 (DoWISP)4Celery polling, sync 7 modulos, Vista 360 parcial
Fase 3 (Presup+Pipeline+Comms)4Webhooks bidireccional, pipeline CRM, canales comunicacion
Fase 4 (Portal Cliente)3Portal N3, aclaradores dinamicos
Fase 5 (Analytics+n8n)34 tabs analytics, motor reglas, dashboards, integracion n8n

12. Preguntas abiertas y decisiones pendientes

#TemaEstadoNota
1DoWISP: activar endpoints suscripciones, facturas, tickets, efectosPedir accesoConfirmado que es posible
2CableMovil/Orange cobertura: metodo exactoDefinirAPI, iframe o link directo
3Onivia API: analizar interfaz y documentar flujoAnalizarCredenciales OK, pendiente documentar
4SSO Presupuestador: implementar deep link con tokenDecision tomadaOpcion deep link recomendada
5Acceso al codigo Laravel del PresupuestadorVerificarSi tenemos acceso al repo o marc@points2c hace deploy
6Workflow cobranza: definir pasos y tiempos exactosDefinirDias entre SMS, email, llamada, suspension
7WhatsApp WABA: usar el existente (109603372144228) o nuevo para CRMDefinirActualmente usado por bot Desk

Este documento es la base del proyecto. Nada de lo descrito aqui esta inventado. Todo esta basado en: el manual tecnico del Presupuestador, los 7 PDFs de analisis (97 paginas), el mockup funcional, y las decisiones tomadas en conversacion.

Cualquier funcionalidad no descrita aqui necesita ser analizada y documentada antes de desarrollarse.


Conexia Telecomunicaciones S.L. | CRM Conexia v1.1 | Abril 2026
Documento generado como base de desarrollo. Revision obligatoria antes de cada fase.