# Infraestructura SIGMA — Documentación Técnica --- > # 🚨 PELIGRO — LEER ANTES DE TOCAR CUALQUIER COSA > > **ESTE ARCHIVO NO SE EDITA MANUALMENTE. NUNCA. BAJO NINGUNA CIRCUNSTANCIA. SIN AUTORIZACION** > > - ❌ No reescribas este archivo. > - ❌ No elimines secciones existentes. > - ❌ No agregues datos que pablinux no haya confirmado explícitamente. > - ❌ No derives datos del código fuente y los documentes aquí como si fueran infraestructura. > > **¿Por qué?** Este documento es la biblia compartida de todo el ecosistema Telcotronics. > Un dato incorrecto aquí afecta a todos los proyectos y a todas las IAs que lo leen. > La fuente de verdad es el **MCP de infraestructura** (`mcp.telcotronics.net`). --- > **Propósito:** Describe la arquitectura completa del ecosistema. Ante cualquier tarea técnica, leer primero. > **Fuentes de verdad:** Árbol Proxmox VE, tabla DHCP MikroTik (mayo 2026), historia documentada por pablinux, e inventario de hardware/servicios/apps IA/servicios externos del **MCP de Infraestructura** (uso interno — ver sección dedicada más abajo). > > **Documentos relacionados:** > - 🎨 **[Design System](design-system.md)** — Estándar visual unificado: colores, tipografía, componentes. > - 🗺️ **[Roadmap](roadmap.md)** — Decisiones técnicas tomadas y pendientes de ejecutar. --- ## Requisito de documentación > **Este documento no es un inventario de IPs. Es la guía de integración del ecosistema.** > Cualquier proyecto, app o servicio debe poder conectarse a otro leyendo solo este archivo — > sin preguntar, sin buscar en el código, sin horas de explicación. > > **Regla de oro:** si alguien necesita enviar un correo, usar WhatsApp, facturar, sincronizar ideas > o consumir cualquier servicio del ecosistema, la respuesta completa debe estar aquí. > > **Todo proyecto o servicio documentado aquí debe incluir:** > - URL del repositorio Git > - Tecnología principal, responsable y estado actual > - Servidor de producción — IP, puerto, dominio público > - Cómo usarlo desde otra app — URL base, autenticación requerida, ejemplo mínimo > - Swagger / documentación de API si existe > - BDs que usa — motor, host, nombre, propósito > - Servicios que consume — para entender sus dependencias > - Dónde buscar más información — ruta local del `agents.md` del proyecto > > **Sé breve y conciso.** Incluye lo suficiente para conectarse — no más. > Si los detalles completos ya están en Swagger o en el `agents.md` del proyecto, aquí va solo el enlace. > El criterio es: ¿puede otra IA o desarrollador usar este servicio leyendo solo esta sección? > Si la respuesta es no, falta información. Si ocupa más de una página, sobra información. --- ## Documentos del ecosistema > Leer antes de inicializar, diseñar o desplegar cualquier proyecto nuevo. | Documento | Descripción | |---|---| | [`infraestructura.md`](infraestructura.md) | Este documento — arquitectura de servidores, red, CTs y servicios | | [`migraciones.md`](migraciones.md) | Registro global de cambios de schema de BD — ALTER TABLE, índices, tablas nuevas. Fuente de verdad de qué SQL hay que correr y en qué BDs | | [`design-system.md`](design-system.md) | Sistema de diseño unificado SIGMA — paleta, tipografía, componentes, multi-plataforma | | [`roadmap.md`](roadmap.md) | Hoja de ruta estratégica — decisiones técnicas tomadas, pendientes de ejecutar | | [`prompt_ini_proyectos.md`](prompt_ini_proyectos.md) | Plantilla de inicialización para proyectos nuevos del ecosistema | --- ## Convenciones de scripts en proyectos Todo proyecto del ecosistema usa exactamente **dos scripts**. Nada más para el despliegue. ### `desplegar.sh` — corre desde la máquina de desarrollo Cómo lo hace depende del tipo de proyecto: Todo proyecto debe tener o crear un bash sh llamado desplegar.sh, este se encarga de la sincronizacion de el proyecto a produccion. 1.- en caso de proyectos tipo webapps(app_fidelizacion, apps_ideas, sigmac-web,etc) o servicios(mail, siax-monitor,etc) sube el código al servidor de produccion asignado. 2.- en caso de apps desarrolladas para moviles o table(sigmac-app, app_pedidos,etc), y pc(desktop-> SIGMAC, ERP, CRM,etc). estas despliegan directamente al proyecto de Web_siax-sytem(https://siax-system.net) y las se publican las url en la api de webcontrol("https://api.siax-system.net/") | Tipo de proyecto | Mecanismo | |-----------------|-----------| | Interpretado (Node.js, Python, PHP) | `git push` al repo + SSH al servidor + `git pull` + reinicio del proceso | | Compilado (Rust, Java, Go) | Compila localmente + `scp`/`rsync` del binario al servidor + reinicio | Lee `servers.conf` para saber a qué servidores apuntar. `servers.conf` **nunca se commitea** — cada desarrollador crea el suyo desde `servers.conf.example`. ### `init.sh` — corre en el servidor Ejecutor local. Solo arranca lo que ya está instalado. No sube código, no compila. Puede ser simple (un solo comando) o interactivo (menú de opciones). ### Referencia entre proyectos | Proyecto | `desplegar.sh` | `init.sh` | |---------|----------------|-----------| | `siax_monitor` | Compila Rust + scp binario a cada servidor | Instala como servicio systemd | | `api_service_ia` | git push + SSH + git pull + reinicio tmux | Interactivo — op.1: instala deps + arranca / op.2: solo arranca | | _(nuevo proyecto)_ | Seguir el mismo patrón | Seguir el mismo patrón | ### Actuallizaciones de las Base de Datos de los proyecto. Todo proyecto al ser tipo tenancy usa su propia base de datos, la cual al sirve "https://api-gateway-cloud.telcotronics.net/" para consultarla se necesita una apikey, la cual es proporcionada solo por webcontrol("https://api.siax-system.net/") despues de realizar las debidas autenticaciones. Esto hace que siempre alla cambios en las bd. y por tal las actualizaciones sql siempre estarqan disponibles en webcontrol: "/api/sql/check_update", "/api/sql/updates". mas info en su api o la seccion dedicada en este doc. cada proyecto tiene 2 bd una de empresa(EMPRESA_XXX) y otra llamada sigma que almacena las actualizaciones en la tabla: "SIGMA.HistorialActualizacionBD". #### conclusion cada proyecto debera implementar un algoritomo de control de versiones de las actualizaciones sea por bd o por versiones de ejecutables. en caso de webapps --- ## MCPs del ecosistema Telcotronics > El ecosistema tiene **4 MCPs independientes**, cada uno con un rol distinto. > No confundirlos — conectarse al MCP equivocado da datos incorrectos o genera acciones en el sistema erróneo. | MCP | URL | Rol | Estado | |-----|-----|-----|--------| | **Infraestructura** | `192.168.10.160:3006` (SSE, uso interno — NO expuesto a internet) | Fuente de verdad de toda la infraestructura del ecosistema. Las IAs se conectan aquí para leer y actualizar servidores, CTs, redes, servicios y proyectos. **Fuente de este documento — ver aviso más abajo.** | ✅ Activo | | **Comunicaciones robóticas** | `sigma-robot.telcotronics.com` | Envío automatizado de mensajes: Email, WhatsApp y otros canales. Usado por agentes y robots del ecosistema para comunicarse con clientes y sistemas externos. | — | | **ERP / CRM SIGMA** | — | Datos del ERP y CRM de SIGMA — productos, clientes, ventas, inventario. Usado por los módulos comerciales del ecosistema. | — | | **Ideas** | `ideas.telcotronics.net` | Orquesta las ideas del ecosistema. Centraliza y coordina lo que se escribe en `ideas.md` de cada proyecto. | — | --- ## Ecosistema de Proyectos Telcotronics | Proyecto | Repositorio / Git | Tecnología Principal | Responsable | Estado | Rol Central | |---|---|---|---|---|---| | **mail-monitor** | `https://git.telcotronics.net/pablinux/Monitor-ServerMail.git` | Rust (Axum + sqlx + Tera + HTMX) | pablinux | ✅ Activo | Administración y monitoreo del servidor de correo SIGMA (Postfix + Dovecot). Gestiona usuarios, logs, fail2ban y notifica eventos a API-SIGMA-WEBCONTROL | | **SIAX Monitor** | `https://git.telcotronics.net/pablinux/SIAX-MONITOR` | Rust (Nativo) | pablinux | ✅ Activo | Agente de monitoreo systemd | | **SIGMA-CLOUD-APPS-SERVER** (Webswing) | `https://git.telcotronics.net/pablinux/SIGMA-CLOUD-APPS-SERVER.git` (remote `origin` histórico: `bitbucket.org/pablinux/webswing.git`) | Fork Webswing — Java 11 build / Java 8 runtime (20.1.7) + Jetty | pablinux | ✅ Producción | Servidor de apps Swing en el browser (SIGMAC). Login WebControl + skin SIGMA Cloud. CT 141 (.110). | | **SIGMAC** | Local — pendiente subir a git.telcotronics.net | Java 11 (NetBeans + Swing) + MySQL / HikariCP | pablinux | ✅ Producción | ERP desktop de facturación electrónica Ecuador. Corre sobre Webswing (CT 141). BD `facturacion` en .116. | | **SIGMA-OPEN-API** | `https://github.com/telcotronics/xsystem-open-api` | Spring Boot 1.5.9 + Java 8 | pablinux | ✅ Activo (legacy) | API facturación SRI — sistemas existentes. Nueva URL: `api.factura-e.net` | | **SIGMAC-SRI-API** | `https://git.telcotronics.net/pablinux/SIGMAC-SRI_API.git` | Spring Boot 1.5.9 + Java 8 | pablinux | ✅ Activo | Nueva API facturación SRI — sistemas nuevos. URL: `api.sigmac.app/sri` | | **API-SIGMA-WEBCONTROL** | `https://git.telcotronics.net/pablinux/API-SIGMA-WEBCONTROL.git` | Node.js (Express) + MariaDB / MySQL | pablinux | ✅ Activo | Base de autorizaciones, notificaciones, identidades y onboarding | | **API-SIGMA-CLOUD** | `https://github.com/telcotronics/api-gateway-cloud.git` | Node.js (Express) + MySQL | pablinux | ✅ Activo | API Gateway multi-tenant y motor transaccional comercial | | **sigma-robot** | `https://git.telcotronics.net/pablinux/sigma-robot.git` | Node.js + Express + MySQL + Socket.IO | pablinux | ✅ Activo | Hub central de comunicaciones e IA. Recibe mensajes WhatsApp (Meta + Web Bot), los procesa con IA (fallback automático SIAX→DeepSeek→Gemini→Claude), expone AI Gateway compatible OpenAI para apps externas, y orquesta agentes IA con flujos configurables desde el panel. | | **WebControlSigma** | `https://git.telcotronics.net/pablinux/Web_siax-sytem.git` | PHP 8.x + MySQL / MariaDB + Rivescript | pablinux | ✅ Activo | Panel web de control administrativo e interfaz visual para control de licencias, usuarios, captcha y gestión de API Keys en el ecosistema Telcotronics. | | **sigmac_app** | `https://git.telcotronics.net/pablinux/SIGMAC.APP.git` | Flutter 3.44.6 stable / Dart 3.12.2 | pablinux | 🟢 En producción — cliente real pagando (FERROTOACHI) | App CRM companion multiplataforma (Android + Linux desktop). Cliente nativo offline-first para gestión de ventas, inventario, clientes, pedidos, proformas y compras, con facturación electrónica SRI real (emisión directa) y chat de soporte en tiempo real. Se sincroniza con API-SIGMA-CLOUD y se autentica vía API-SIGMA-WEBCONTROL. | | **sigmac-web** | `https://git.telcotronics.net/pablinux/SIGMAC-WEB_PHP.git` | Laravel 13 (PHP 8.5) + Vue 3 + Tailwind CSS | pablinux | 🟡 En desarrollo activo | CRM web companion a sigmac_app. SPA Vue 3 + API REST Laravel (proxy). Módulos principales operativos. URL: `crm.sigmac.app`. Servidor-web CT 150 (.109). | | **SitioWeb_telcotronics** | `https://git.telcotronics.net/pablinux/SitioWeb_telcotronics.git` | HTML5/CSS3/JS vanilla + PHP 8.5 + PHPMailer | pablinux | ✅ v2.7.0 | Sitio web institucional y tienda en línea (SSR) de Telcotronics. Catálogo real (901 productos) por conexión directa a MySQL, sin proxy. Panel de configuración privado con dashboard GA4. Apache .109 `/var/www/web_telcotronics/public_html/`. Dominio: `telcotronics.com`. | | **app_ideas** | `https://git.telcotronics.net/pablinux/APPA-GENERQADOR-DE-IDEAS.git` | Node.js (Express) + MongoDB + EJS | pablinux | 🟡 En desarrollo activo | Canvas de ideas y pensamiento visual. Genera, organiza y visualiza ideas con soporte de IA. Incluye panel de dibujo, flujo, recopilación de procesos e integración con AIT (IA Telcotronics). Puerto 2000. BD: MongoDB `app_ideas` en CT 102 (.146). | | **app_marketing** | [pendiente — crear repo en git.telcotronics.net] | Node.js (Express) + MongoDB + EJS | pablinux | ✅ Activo | Centro de publicidad y marketing multi-tenant del ecosistema. Gestiona campañas internas y de anunciantes, las sirve vía API REST y widget JS embebible. Trackea impresiones y clics por campaña y por app origen. Puerto 2100. BD: MongoDB `app_marketing` en CT 102 (.146). | | **app_fidelizacion** | [pendiente — crear repo en git.telcotronics.net] | Node.js (Express) + MySQL + EJS | pablinux | 🟡 En desarrollo activo | Plataforma de lealtad, escáner QR y canjes. Gestión de clientes y transacciones de partners. Puerto 2001. BD: MySQL `nexo_fd` en 192.168.10.149. | | **api_service_ia** | `git@github.com:telcotronics/API_Service_IA.git` | Python 3.14 + FastAPI + uvicorn | pablinux | 🟡 En desarrollo activo | API REST de modelos de IA preentrenados (OCR, STT, TTS, visión facial, PDF). Único proyecto Python serio del ecosistema. Puerto 8000. BD: MariaDB `api_ia_python` en .149. | | **API_CENTINEL_SECURITY** | `https://git.telcotronics.net/pablinux/API-CENTINEL-SECURITY.git` | Java 17 + Spring Boot 3.3 + WebClient | pablinux | ✅ Activo | API de Gestión de Seguridad Electrónica — control de acceso físico, biometría, apertura remota de puertas, sincronización de credenciales y eventos en tiempo real. Punto único de integración para cualquier app que gestione seguridad física en el ecosistema. | | **audio_control** | `https://git.telcotronics.net/pablinux/audio_control.git` | Node.js (Express 4) + MariaDB + DLNA/UPnP + ffplay | pablinux | ✅ Activo / Producción | Backend SoundWave — control remoto de reproducción de audio, descarga YouTube, playlist MySQL, renderer DLNA y auth Google OAuth. Puerto 4005 en CT 132 (`192.168.10.160`). Dominio: `musica.sigmac.app`. Servicio systemd: `siax-app-AUDIO_CONTROL`. MCP ID: 15. | | **SoundWave** | `https://git.telcotronics.net/pablinux/audio-player.git` | Vue 3 + Vite 7 (PWA) / Node.js (Express) + MongoDB | pablinux | 🟢 Activo en producción | Reproductor de música personal PWA. Desplegado en server-webaps (.160) puerto 2005. Auth Google OAuth, streaming con Range requests, descargador YouTube MP3 (yt-dlp) y monitoreado en SIAX Monitor. | | **app_sigma_inventario** (Control Inventario) | [pendiente — git.telcotronics.net] | Flutter (Android / Linux Desktop) / Dart | pablinux | 🟡 En desarrollo activo | App móvil para supervisores y bodegueros: conciliación física de stock, traslados con código de barras y recepción OCR externa. | | **agente_ventas** | [sin repositorio — local] | Flutter 2.11 / Dart 2.17-beta + SQLite | pablinux | 🟡 En desarrollo activo — integrando API real | App "Agente Ventas SIGMAC" — gestión de rutas y pedidos de campo para vendedores de Telcotronics. Ruta del día, catálogo, pedidos, firma digital, scanner QR/barcode, notificaciones in-app. Auth vía API-SIGMA-WEBCONTROL · datos vía API-SIGMA-CLOUD (BD `TELCOTRONICS`). | | **seguridad_electronica (SENTINEL ONE)** | `https://git.telcotronics.net/pablinux/seguridad_electronica.git` | Flutter 2.11 / Dart 2.17-beta + SQLite | pablinux | 🟡 En desarrollo activo | App de seguridad electrónica offline-first. 15/15 módulos UI completos. Alarmas, control de acceso con registro de usuarios (nivel/áreas/vigencia), mensajería con eventos de pánico/soporte auditables. Pendiente conectar `ApiAuthService` y `Sincronizador` a `API_CENTINEL_SECURITY`. | | **Central_monitoreo** | `https://git.telcotronics.net/pablinux/Central_monitoreo.git` *(crear)* | Flutter 2.11 / Dart 2.17-beta + SQLite | pablinux | 🔴 Iniciando — sesión 1 | App desktop para operadores de la central de monitoreo. Contrapunto de SENTINEL ONE: visión multi-tenant de todos los clientes, gestión de alarmas/incidentes/dispositivos Hikvision. Consume la misma `API_CENTINEL_SECURITY` con el mismo patrón de auth WebControl. | | **API-SIGMA-COMUNICACIONES** | `https://git.telcotronics.net/pablinux/API-SIGMA-COMUNICACIONES.git` | Node.js (Express) + MySQL | pablinux | 🔴 En desarrollo inicial | Gateway SaaS multi-tenant de canales de mensajería: cada cliente/organización crea y conecta su propio componente WhatsApp (bot o Meta), Telegram y redes sociales, aislado del resto. Independiente de `sigma-robot` (comunicaciones internas de Telcotronics). | | **MCP-Infraestructura** | `https://git.telcotronics.net/pablinux/MCP-INFRAESTRUCTURA.git` | TypeScript (@modelcontextprotocol/sdk) + Nuxt 3 + MySQL | pablinux | ✅ Activo | Servidor MCP y panel web para inventario y gestión en tiempo real de la infraestructura del ecosistema (hardware, servicios, apps IA y externos). Fuente de verdad en MySQL. | | **proxy_server_SRI** | `https://git.telcotronics.net/pablinux/proxy_server_SRI.git` | Python 3 (ThreadingHTTPServer + requests) | pablinux | ✅ Producción | Script proxy HTTP multihilo para consultas SRI en cascada de RUC y Cédula (Ecuador). Provee proxy y normalización para WebControl, SIGMAC y apps. | | **cloud-sync** | `https://git.telcotronics.net/pablinux/Service-Cloud-SINC.git` | Rust 2021 + Axum 0.7 + SQLite | pablinux | ✅ Activo / Producción HTTP | Servidor central de backup cifrado y consolas web. `192.168.10.136:3000`, health `ok` y harness remoto upload/list/download/restore verificados el 2026-10-17. HTTPS pendiente; MCP id 12. | | **cloud-sync-clients** | [sin remoto aún — siax-amd] | Rust 2021 + Axum 0.7 + Tokio + aes-gcm + zstd + rusqlite | pablinux | 🟡 Operativo / En desarrollo | Clientes server-to-server (Linux/Windows) para respaldo y cifrado local hacia cloud-sync. UI local :3001. Harness remoto validado (192.168.10.136:3000). MCP ID: 21. Agente ID: 42. | --- --- ## Infraestructura física ### Red | Parámetro | Valor | |-----------|-------| | Red local | 192.168.10.0/24 | | Router / DHCP | MikroTik — XSYSTEM MKT | | DNS / AdBlocker | AdGuard — 192.168.10.2 | | WiFi AP | EW1200G-PRO — 192.168.10.254 | > **Nota:** Los contenedores LXC de Proxmox se identifican por MAC con prefijo `BC:24:11:*`. Las IPs no siguen el número del CT — son históricas y se mantienen desde antes de Proxmox. --- ### Conexiones WAN y NAT — MikroTik XSYSTEM MKT El ecosistema tiene **3 conexiones a internet** con interfaces separadas en el MikroTik. Cada una tiene su propio conjunto de NATs y sirve servicios distintos. #### Interfaces WAN | Interface | Tipo | IP pública | Velocidad | Destino principal | |-----------|------|-----------|-----------|-------------------| | `P1 WAN` | Fibra directa | `181.198.143.66` | 15 Gbps | Apache .109 (sitios web) + correo + RustDesk | | `CHR-MKT_old` | VPN tunnel → VPS Google (antiguo) | `34.170.252.64` | — | Nginx Proxy Manager .141 | | `CHR_XSYSTEM_V2` | VPN tunnel → VPS Google (nuevo) | `104.198.154.171` | — | server-webapps .160 | > **DNS por dominio:** > - `siax-system.net` → gestionado por **Cloudflare** (con o sin proxy según el servicio) > - `sigmac.app`, `telcotronics.net`, `telcotronics.com`, etc. → gestionados en su registrador propio > > **`crm.sigmac.app`** — A record directo a `181.198.143.66` (fibra P1 WAN). No necesita Cloudflare proxy: es un CRM de usuarios limitados, la IP de fibra es estable y certbot maneja el SSL en el servidor. #### NAT Rules activas | # | Interface entrada | Puerto ext | Destino interno | Servicio | |---|-------------------|-----------|----------------|---------| | 3 | CHR_XSYSTEM_V2 | 80 | 192.168.10.160:80 | Nginx (VPS nuevo) | | 4 | CHR_XSYSTEM_V2 | 443 | 192.168.10.160:443 | Nginx (VPS nuevo) | | 5 | CHR-MKT_old | 80 | 192.168.10.141:80 | Nginx Proxy Manager | | 6 | CHR-MKT_old | 443 | 192.168.10.141:443 | Nginx Proxy Manager | | 7 | P1 WAN | 80 | 192.168.10.109:80 | **Apache — sitios web** | | 8 | P1 WAN | 443 | 192.168.10.109:443 | **Apache — sitios web (SSL)** | | 10 | P1 WAN | 25 | 192.168.10.111:25 | SMTP (Postfix) | | 11 | P1 WAN | 993 | 192.168.10.111:993 | IMAP SSL (Dovecot) | | 12 | P1 WAN | 587 | 192.168.10.111:587 | SMTP Submission | | 13 | P1 WAN | 465 | 192.168.10.111:465 | SMTPS | | 14 | CHR-MKT_old | 25 | 192.168.10.99:25 | SMTP cluster (mail secundario) | | 15 | CHR-MKT_old | 143 | 192.168.10.99:143 | IMAP cluster | | 19-21 | P1 WAN | 21114-21119 | 192.168.10.105:21114+ | RustDesk (UDP+TCP) | #### NAT Rules deshabilitadas (legacy / pendientes) | # | Servicio | Destino | Motivo | |---|---------|---------|--------| | 1 | SMTP por VPN | .150:25 | Legacy server-sigma | | 9 | Webmin | .150:10000 | Legacy en retiro | | 16 | SIGMA-WEB | .150:8443 | Legacy en retiro | | 17 | WEB-SWING | .110:8090 | Acceso directo desactivado | | 18 | MONITOR SIAX | .150:8080 | Legacy | #### Flujo de tráfico por dominio ``` Internet │ ├─ Fibra P1 WAN ──────────────► .109 Apache │ factura-e.net, crm.sigmac.app │ sigmac.app, telcotronics.com, etc. │ Correo: .111 (25/587/465/993) │ RustDesk: .105 │ ├─ VPS Google (viejo) ────────► .141 Nginx Proxy Manager │ CHR-MKT_old api-gateway-cloud.telcotronics.net │ git, n8n, proxy, mail, voip, etc. │ └─ VPS Google (nuevo) ────────► .160 server-webapps CHR_XSYSTEM_V2 klickbot.app, mesh.telcotronics.net api-gateway-sigma.telcotronics.net ``` --- ### Hypervisor | Parámetro | Valor | |-----------|-------| | Plataforma | Proxmox VE | | Nombre | BLACK-SERVER | | Nodo `cloud` | Servidor nuevo — CTs críticos de producción SIGMA | | Nodo `cluster` | Servidor principal — resto de servicios del ecosistema | --- ### Todos los CTs y servicios del ecosistema #### Nodo cloud (producción SIGMA) | CT | IP | Nombre | Tecnología | Rol | Estado | |----|-----|--------|-----------|-----|--------| | 141 | 192.168.10.110 | Servidor-SIGMA-VW | SIGMA-CLOUD-APPS-SERVER (Webswing 20.1.7) + Java Swing | Frontend SIGMA — apps Swing en browser | running | | 142 | 192.168.10.120 | SIGMA-OPEN-API / SIGMAC-SRI-API | Spring Boot 1.5.9 + Java 8 | API REST facturación (puerto 8080 legacy + 8082 nueva) | running | | 144 | 192.168.10.111 | servidor-email | Postfix + Dovecot + SnappyMail + **mail-monitor** | Correo + administración | running | | 145 | 192.168.10.116 | SERVIDOR-BD | PostgreSQL 16.13 | BD sigma_api | running | | 150 | 192.168.10.109 | Servidor-web | Apache 2.4.66 + PHP 8.5-FPM | Proxy reverso público + host de sitios PHP | running | #### Nodo cluster (ecosistema) | CT | IP | Nombre | Tecnología | Rol | Estado | |----|-----|--------|-----------|-----|--------| | 100 | 192.168.10.141 | nginxproxymanager | Nginx Proxy Manager | Reverse proxy con UI | running | | 101 | 192.168.10.143 | cloudflared | Cloudflare Tunnel | Túnel seguro internet | running | | 102 | 192.168.10.146 | mongodb | MongoDB | BD documental | running | | 103 | 192.168.10.2 | adguard | AdGuard Home | DNS + bloqueador ads | running | | 105 | 192.168.10.145 | Ubuntu-Docker | Node.js + **API-SIGMA-WEBCONTROL** | API central auth/onboarding (tmux, pendiente siax-monitor) | running | | 107 | 192.168.10.156 | syncthing | Syncthing | Sincronización archivos | running | | 108 | 192.168.10.108 | Servidor-IA (SIAX) | IA autónoma | Coordinador autónomo | running | | 110 | 192.168.10.106 | meshcentral | MeshCentral | Gestión remota equipos | running | | 114 | 192.168.10.149 | mariadb | MariaDB + phpMyAdmin | BD relacional (mailserver_db) | running | | 121 | 192.168.10.112 | SERVER-MAIL | — | Servidor mail secundario | running | | 122 | 192.168.10.171 | n8n | n8n | Automatización flujos | running | | 123 | 192.168.10.107 | rustdeskserver | RustDesk Server | Escritorio remoto | running | | 124 | 192.168.10.173 | jupyternotebook | Jupyter Notebook | Data science / IA | running | | 125 | 192.168.10.148 | sqlserver2022 | SQL Server 2022 | BD Microsoft | running | | 128 | 192.168.10.103 | VOIP-SERVER | — | Telefonía IP | running | | 130 | 192.168.10.151 | gitea | Gitea | Repositorio Git | running | | 132 | 192.168.10.160 | server-webapps | Node.js / PM2 + **API-SIGMA-CLOUD** | Apps web + API Gateway | running | | 133 | 192.168.10.144 | redis | Redis | Cache en memoria | running | | 134 | 192.168.10.102 | apache-tomcat | Apache Tomcat | Servidor Java legacy | running | | 137 | 192.168.10.172 | flowiseai | Flowise AI | Flujos IA low-code | running | | 138 | 192.168.10.152 | jenkins | Jenkins | CI/CD | running | | 139 | 192.168.10.147 | postgresql | PostgreSQL | BD adicional | running | | 140 | 192.168.10.98 | API-FACTURACION | — | API facturación adicional | running | | 143 | 192.168.10.115 | DB-EMPRESAS | — | BD de empresas (Tenants) | running | --- ### Mapa de dominios #### Nginx Proxy Manager (CT 100 — 192.168.10.141) > Gestiona todos los dominios públicos del ecosistema con SSL automático vía Let's Encrypt. > Panel admin: `https://proxy.telcotronics.net` | # | Dominio(s) | Destino interno | SSL | Estado | |---|-----------|----------------|-----|--------| | 1 | `mesh.telcotronics.net` | 192.168.10.160:443 | HTTP Only | ✅ Online | | 2 | `cluster.telcotronics.net` | 192.168.10.140:8006 | Let's Encrypt | ✅ Online | | 3 | `proxy.telcotronics.net` | 192.168.10.141:81 | Let's Encrypt | ✅ Online | | 4 | `telcotronics.net` | 192.168.10.166:80 | HTTP Only | ✅ Online | | 5 | `android.telcotronics.net` | 192.168.10.150:4000 | Let's Encrypt | ✅ Online | | 8 | `n8n.telcotronics.net` | 192.168.10.171:5678 | Let's Encrypt | ✅ Online | | 9 | `whisper.telcotronics.net` | 192.168.10.145:8000 | Let's Encrypt | ✅ Online | | 10 | `voip.telcotronics.net` | 192.168.10.102:80 | Let's Encrypt | ✅ Online | | 11 | `sigma.telcotronics.net` | 192.168.10.150:8443 | Let's Encrypt | ❌ Offline | | 12 | `api.telcotronics.net` | 192.168.10.145:8000 | Let's Encrypt | ✅ Online | | 13 | `dibujo.telcotronics.net` | 192.168.10.159:3000 | Let's Encrypt | ✅ Online | | 15 | `xsend.telcotronics.net` | 192.168.10.147:80 | Let's Encrypt | ✅ Online | | 17 | `git.telcotronics.net` | 192.168.10.151:3000 | Let's Encrypt | ✅ Online | | 19 | `api.klickbot.app` | 192.168.10.170:4001 | Let's Encrypt | ✅ Online | | 20 | `app.klickbot.app` | 192.168.10.170:3001 | Let's Encrypt | ✅ Online | | 22 | `api-gateway-cloud.telcotronics.net` | 192.168.10.160:3003 | Let's Encrypt | ✅ Online | | 23 | `api-gateway-sigma.telcotronics.net` | 192.168.10.160:3003 | Let's Encrypt | ✅ Online | | 24 | `klickbot.app` | 192.168.10.160:3005 | Let's Encrypt | ✅ Online | > **Nota:** `api-gateway-cloud` y `api-gateway-sigma` apuntan al mismo destino (.160:3003) — dos dominios para el mismo servicio API-SIGMA-CLOUD. `sigma.telcotronics.net` offline — servicio en .150 (legacy en retiro). --- ### Equipos de desarrollo | IP | Nombre | Descripción | |----|--------|-------------| | 192.168.10.100 | siax-amd | Workstation AMD — desarrollo | | 192.168.10.101 | siax-intel | Workstation Intel — desarrollo | | 192.168.10.72 | pablinux-laptop | Laptop de trabajo | | 192.168.10.155 | DAPSI | Sistema de domótica | --- ### Servidor legacy en retiro | Parámetro | Valor | |-----------|-------| | Nombre | server-sigma | | IP | 192.168.10.150 | | OS | Ubuntu 20.04 LTS | | Estado | ⚠️ En proceso de retiro | | Historia | Servidor monolítico original. BD ya migrada. Casi vacío. | en contenedor ia va a reusar la ip por el nuevo servidor -> Servidor-API-CENTINEL:~/apps$ ip a 192.168.10.150/24 --- --- ## Bases de datos ### CT cloud — SERVIDOR-BD (192.168.10.116) | Parámetro | Valor | |-----------|-------| | IP | 192.168.10.116 | | MAC | BC:24:11:50:DE:27 | | CT Proxmox | 145 (nodo cloud) | | OS | Ubuntu 24.04 LTS | | Motores activos | **MySQL 8.0.45** (Producción) / **PostgreSQL 16.13** (API) | | Bases de datos MySQL | `TELCOTRONICS` (servidor propio de la dueña y patrocinadora), `SIGMA`, `facturacion` | | Bases de datos PostgreSQL | `sigma_api` (SIGMA-OPEN-API legacy), `sigmac_sri` (SIGMAC-SRI-API nueva), `veronica` (Base original) | | Rol central | Servidor de base de datos de producción exclusivo de **TELCOTRONICS**. **MySQL** hospeda sus datos comerciales privados en total aislamiento sin compartir nada. **PostgreSQL** es el motor compartido para el almacenamiento de facturas electrónicas de clientes exclusivamente a través de la API `sigma-open-api`. | **⚠️ Notas de Configuración:** * **MySQL (Puerto 3306):** Hospeda de manera aislada y privada los datos comerciales e internos de Telcotronics. No tiene contacto con clientes ni con `sigma-open-api`. * **PostgreSQL (Puerto 5432):** Hospeda la base `sigma_api` utilizada de forma compartida por `sigma-open-api` para facturación electrónica con el SRI. Mantener `password_encryption = md5`. El driver JDBC `postgresql-9.4.1212.jre7` no soporta `scram-sha-256`. --- ### CT cluster — mariadb (192.168.10.149) | Parámetro | Valor | |-----------|-------| | IP | 192.168.10.149 | | MAC | BC:24:11:96:D4:49 | | CT Proxmox | 114 (nodo cluster) | | OS | Debian 12 | | Motor | **MariaDB 10.11.14** | | Base de datos crítica | **`webControl`** (Base central de WebControlSigma / `Web_siax-sytem`) | | Otras BDs hospedadas | `mailserver_db` (correo), `gitea` (repositorios), `siax_core`, `SIGMA`, `TELCOTRONICS`, `facturacion`, `sri_data` (caché compartido de consultas RUC/Cédula, usado por API-SIGMA-WEBCONTROL), entre otras (28 BDs en total). | | Rol central | Servidor de base de datos relacional del clúster del ecosistema. Provee almacenamiento centralizado y es donde vive la base de datos `webControl` con las tablas `usuarios_sesion` (login) y `api_key` (llaves de API). | --- ### CT cluster — DB-EMPRESAS (192.168.10.115) | Parámetro | Valor | |-----------|-------| | IP | 192.168.10.115 | | MAC | BC:24:11:D4:3C:73 | | CT Proxmox | 143 (nodo cluster) | | OS | Ubuntu 24.04 LTS | | Motor | **MySQL 8.0.45** | | Bases de datos hospedadas | `EMPRESA_EL_SOL` (Base de datos de cliente tenant activo), `admin` | | Rol central | Servidor de bases de datos de clientes (Tenants) del ecosistema. Utilizado críticamente por `api-gateway-cloud.telcotronics.net` (`API-SIGMA-CLOUD`) para enrutar de forma dinámica y síncrona el flujo comercial diario de los clientes finales. | --- --- ## APIs ### Sistema SIGMA — Facturación electrónica SIGMA es el sistema de **facturación electrónica** para Ecuador, basado en el proyecto open source [Verónica](https://github.com/RolandoPalermo/veronica-open-api), adaptado localmente. Se comunica con el **SRI** para envío y autorización de comprobantes electrónicos. Corre en el nodo **cloud** de Proxmox. #### Flujo de una factura ``` Usuario (navegador) │ ▼ Servidor-SIGMA-VW — Webswing (192.168.10.110) App Java Swing corriendo en servidor, visible en navegador vía HTML5 │ ▼ Servidor-web — Apache proxy (192.168.10.109) api.factura-e.net → 192.168.10.120:8080 │ ▼ SIGMA-OPEN-API — Spring Boot (192.168.10.120:8080) │ │ ▼ ▼ SERVIDOR-BD SRI Ecuador PostgreSQL 16 cel.sri.gob.ec (internet) 192.168.10.116:5432 ``` --- ### CT cloud — SIGMA-OPEN-API (192.168.10.120) | Parámetro | Valor | |-----------|-------| | IP | 192.168.10.120 (IP fija) | | MAC | BC:24:11:1D:F6:60 | | CT Proxmox | 142 (nodo cloud) | | OS | Ubuntu 24.04 LTS | | Rol | API REST de facturación electrónica | | Framework | Spring Boot 1.5.9 | | Java | OpenJDK **8** (1.8.0_482) — **NO usar Java 9+** | | Puerto | 8080 | | Contexto URL | `/veronica` | | Usuario deploy | `pablinux` | **Ruta del proyecto:** `/home/pablinux/app/sigma-open-api/` **Arrancar:** ```bash sh /home/pablinux/app/1_factElect_modoPROD.sh # producción sh /home/pablinux/app/0_factElect_modoDEV.sh # desarrollo ``` **Endpoints:** | Recurso | URL | |---------|-----| | Swagger UI | `http://192.168.10.120:8080/veronica/swagger-ui.html` | | OAuth token | `POST http://192.168.10.120:8080/veronica/oauth/token` | | API facturas | `http://192.168.10.120:8080/veronica/api/v1.0/` | **⚠️ Si Maven falla por repositorios HTTP bloqueados:** comentar bloque `maven-default-http-blocker` en `/usr/share/maven/conf/settings.xml`. --- ### CT cloud — SIGMAC-SRI-API (192.168.10.120 — puerto 8082) | Parámetro | Valor | |-----------|-------| | Repositorio Git | `https://git.telcotronics.net/pablinux/SIGMAC-SRI_API.git` | | Tecnología principal | Spring Boot 1.5.9 + Java 8 (⚠️ Java 9+ rompe dependencias de firma digital) | | Responsable | pablinux | | Estado actual | ✅ Producción | | Equipo / ubicación local | `siax-amd` (`192.168.10.100`) — `/home/pablinux/Projects/java/sigmac-sri-api` | | CT Proxmox | 142 (nodo cloud) — comparte CT con SIGMA-OPEN-API | | Puerto interno | `8082` | | URL interna | `http://192.168.10.120:8082/sri` | | Dominio público | `https://api.sigmac.app` (SSL Let's Encrypt — expira 2026-08-30) | | Contexto URL | `/sri` | | Autenticación | OAuth2 Password Grant — `POST https://api.sigmac.app/sri/oauth/token` | | Documentación API | `https://api.sigmac.app/sri/swagger-ui.html` | | Última actualización | 2026-06-01 | `SIGMAC-SRI-API` es el fork limpio y propiedad total de Telcotronics de la API de facturación electrónica SRI. Sucesor de `SIGMA-OPEN-API` con namespace unificado `com.telcotronics.sri`. Gestiona el ciclo de vida completo de comprobantes electrónicos: generación XML → firma XAdES-BES → envío SRI → autorización → RIDE (PDF). **Esta es la API oficial del ecosistema. Todos los sistemas nuevos deben integrar esta API.** > ⚠️ **`SIGMA-OPEN-API` (`api.factura-e.net`) entra en estado LEGACY** — solo se mantiene para sistemas existentes que no pueden actualizarse. No integrar nuevos proyectos contra ella. La migración progresiva hacia `api.sigmac.app` es el camino a seguir. **Credenciales de acceso:** | Tipo | Parámetro | Valor | Uso | |------|-----------|-------|-----| | OAuth2 client | client / secret | `pablinux` / `Microbot%` | Requerido en todas las peticiones de token — va en HTTP Basic Auth | | Usuario ADMIN | username / password | `admin` / `SigmacAdmin.2026@` | `ROLE_ADMIN` — gestión de certificados, usuarios, catálogos, stats | | Usuario ADMIN — siax-system.net (`Web_siax-sytem`) | username / password | `SIAX-SYSTEM` / `TP.1210@` | `ROLE_ADMIN` dedicado, server-to-server. Uso: administrar certificados digitales (subir/renovar/eliminar vía `/operaciones/certificados-digitales/empresas/{ruc}`) como apoyo técnico a usuarios remotos, y demás operaciones administrativas iniciadas desde el panel `siax-system.net`. Credencial propia, revocable sin afectar a API-SIGMA-WEBCONTROL ni al admin humano | | Usuario ADMIN — API-SIGMA-WEBCONTROL | username / password | `WEBCONTROL` / `EA.1303@` | `ROLE_ADMIN` dedicado, server-to-server. Uso: llamadas automatizadas de `API-SIGMA-WEBCONTROL` (creación/sincronización de usuarios vía `POST /operaciones/usuarios`) | | Usuario MONITOR | username / password | `monitor` / `SigmacMonitor.2026@` | `ROLE_MONITOR` — monitoreo operativo: tokens, certificados, stats. Sin acceso de escritura. Uso: dashboard/comprobantes/certificados de `siax-system.net`. API key: `3c2b3e57-2173-475a-89f3-82e74170574c` (header `x-api-key`, alternativa a pedir Bearer token). **Temporal** — eliminar esta fila una vez que `siax-system.net` tenga la credencial integrada de su lado | | Usuario USER (pruebas) | username / password | `facturador_app` / `SigmacUser.2026@` | `ROLE_USER` — emisión de comprobantes. Usar para pruebas; cada cliente solicita su propio usuario al admin | > Cada sistema o cliente que consuma esta API debe solicitar al admin la creación de su propio usuario con `ROLE_USER` vía `POST /sri/operaciones/usuarios`. **Cómo autenticarse (dos métodos):** ```bash # --- Método 1: OAuth2 Bearer token --- curl -u pablinux:Microbot% -X POST https://api.sigmac.app/sri/oauth/token \ -d "username=facturador_app&password=SigmacUser.2026@&grant_type=password" # Respuesta: { "access_token": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "expires_in": 1199 } curl https://api.sigmac.app/sri/api/v1.0/facturas/{claveAcceso}/archivos/xml \ -H "Authorization: Bearer xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" # --- Método 2: API key (header x-api-key) --- # Generar API key para un usuario (requiere ROLE_ADMIN) curl -X POST https://api.sigmac.app/sri/operaciones/usuarios/facturador_app/api-key \ -H "Authorization: Bearer " # Respuesta: { "success": true, "result": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" } curl https://api.sigmac.app/sri/api/v1.0/facturas/{claveAcceso}/archivos/xml \ -H "x-api-key: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" ``` > Si la petición incluye ambos (`Bearer` + `x-api-key`), el Bearer token tiene precedencia. **BD que usa:** | BD | Host | Motor | Uso | |----|------|-------|-----| | `sigmac_sri` | `192.168.10.116:5432` | PostgreSQL 16.13 | Comprobantes electrónicos (facturas, retenciones, guías, notas, liquidaciones) | **Endpoints principales (para integración):** | Método | Endpoint | Descripción | Auth | |--------|---------|-------------|------| | POST | `https://api.sigmac.app/sri/oauth/token` | Obtener token OAuth2 | Client `pablinux:Microbot%` | | POST | `https://api.sigmac.app/sri/api/v1.0/facturas` | Crear y firmar factura | `ROLE_USER` | | PUT | `https://api.sigmac.app/sri/api/v1.0/facturas/{clave}/enviar` | Enviar al SRI | `ROLE_USER` | | PUT | `https://api.sigmac.app/sri/api/v1.0/facturas/{clave}/autorizar` | Consultar autorización | `ROLE_USER` | | GET | `https://api.sigmac.app/sri/api/v1.0/facturas/{clave}/archivos/pdf` | Descargar RIDE (PDF) | `ROLE_USER` | | GET | `https://api.sigmac.app/sri/api/v1.0/facturas/{clave}/archivos/xml` | Descargar XML firmado | `ROLE_USER` | | POST | `https://api.sigmac.app/sri/operaciones/usuarios/{user}/api-key` | Generar/renovar API key de usuario | `ROLE_ADMIN` | | GET | `https://api.sigmac.app/sri/operaciones/usuarios/{user}/api-key` | Consultar API key de usuario | `ROLE_ADMIN` | | PUT | `https://api.sigmac.app/sri/operaciones/usuarios/{user}/estado` | Activar/desactivar usuario (revoca tokens Bearer activos al desactivar) | `ROLE_ADMIN` | | POST | `https://api.sigmac.app/sri/operaciones/certificados-digitales/empresas/{ruc}` | Subir certificado digital (falla si ya hay uno activo) | `ROLE_ADMIN` | | GET | `https://api.sigmac.app/sri/operaciones/certificados-digitales/empresas/{ruc}` | Consultar metadata del certificado activo | `ROLE_ADMIN` | | PUT | `https://api.sigmac.app/sri/operaciones/certificados-digitales/empresas/{ruc}` | Renovar certificado (elimina el anterior + crea el nuevo) | `ROLE_ADMIN` | | DELETE | `https://api.sigmac.app/sri/operaciones/certificados-digitales/empresas/{ruc}` | Eliminar certificado (borra físicamente) | `ROLE_ADMIN` | | GET | `https://api.sigmac.app/sri/operaciones/stats/resumen` | Total por tipo y estado | `ROLE_ADMIN` | | GET | `https://api.sigmac.app/sri/operaciones/stats/hoy` | Comprobantes del día | `ROLE_ADMIN` | | GET | `https://api.sigmac.app/sri/operaciones/stats/recientes?limit=N` | Últimos N comprobantes | `ROLE_ADMIN` | | GET | `https://api.sigmac.app/sri/monitor/tokens` | Tokens activos por usuario | `ROLE_MONITOR` | | DELETE | `https://api.sigmac.app/sri/monitor/tokens/{username}` | Revocar tokens de un usuario | `ROLE_MONITOR` | | GET | `https://api.sigmac.app/sri/monitor/certificados` | Estado y caducidad de certs PKCS12 | `ROLE_MONITOR` | | GET | `https://api.sigmac.app/sri/monitor/stats/resumen` | Resumen general (monitor) | `ROLE_MONITOR` | | GET | `https://api.sigmac.app/sri/monitor/stats/hoy` | Comprobantes del día (monitor) | `ROLE_MONITOR` | | GET | `https://api.sigmac.app/sri/monitor/stats/recientes?limit=N` | Últimos N comprobantes (monitor) | `ROLE_MONITOR` | El mismo patrón de endpoints aplica para: `retenciones`, `guias-remision`, `notas-credito`, `notas-debito`, `liquidaciones-compra`. **Módulos disponibles:** | Módulo | Endpoint base | Auth | Estado | |--------|--------------|------|--------| | Factura | `/sri/api/v1.0/facturas` | ROLE_USER | ✅ Operativo | | Retención | `/sri/api/v1.0/retenciones` | ROLE_USER | ✅ Operativo | | Guía de Remisión | `/sri/api/v1.0/guias-remision` | ROLE_USER | ✅ Operativo | | Nota de Crédito | `/sri/api/v1.0/notas-credito` | ROLE_USER | ✅ Operativo | | Nota de Débito | `/sri/api/v1.0/notas-debito` | ROLE_USER | ✅ Operativo | | Liquidación de Compra | `/sri/api/v1.0/liquidaciones-compra` | ROLE_USER | ✅ Operativo | | Estadísticas (admin) | `/sri/operaciones/stats/*` | ROLE_ADMIN | ✅ Operativo | | Monitor | `/sri/monitor/*` (tokens, certificados, stats) | ROLE_MONITOR | ✅ Operativo | **Servicios externos que consume:** | Servicio | URL | Uso | |---------|-----|-----| | SRI Recepción (prod) | `https://cel.sri.gob.ec/.../RecepcionComprobantesOffline?wsdl` | Envío comprobantes | | SRI Autorización (prod) | `https://cel.sri.gob.ec/.../AutorizacionComprobantesOffline?wsdl` | Autorización SRI | **Integración con el ecosistema:** - Independiente — no consume APIs internas del ecosistema - Los sistemas nuevos que requieran facturación deben apuntar a `api.sigmac.app/sri` - Para más información técnica: `siax-amd:/home/pablinux/Projects/java/sigmac-sri-api/agents.md` **Arrancar en producción:** ```bash cd /home/pablinux/app/sigmac-sri-api ./init.sh # selecciona 2 (producción) # o: java -jar sigmac-sri-api.jar ``` --- ### proxy_server_SRI — Script proxy para consultas SRI de RUC y Cédula | Parámetro | Valor | |-----------|-------| | Repositorio Git | `https://git.telcotronics.net/pablinux/proxy_server_SRI.git` | | Tecnología principal | Python 3 (ThreadingHTTPServer nativo + connection pooling) | | Responsable | pablinux | | Estado actual | ✅ Producción | | Equipo / ubicación local | `siax-amd` (`192.168.10.100`) — `/home/pablinux/Projects/Python/proxy_server_SRI` | | Servidor de producción | `186.4.245.19` | | Puerto interno | `8000` | | Dominio público / URL | `http://186.4.245.19:8000` | | Autenticación | Público con CORS total para `/consultar`; HTTP Basic Auth para `/api/logs` | | Proceso | `tmux` sesión `proxy_server_SRI` gestionada por `init.sh` | | Última actualización | 2026-09-01 | `proxy_server_SRI` es un script proxy HTTP en Python y orquestador de búsqueda en cascada para la consulta y validación fiscal de identificaciones (RUC y Cédulas de Ecuador). Resuelve la dispersión de fuentes externas consultando secuencialmente con detención temprana (`SRI.php` → `SRI2.php` → `CEDULAS2.php`) y normaliza la respuesta en JSON estructurado para el consumo de `API-SIGMA-WEBCONTROL`, `WebControlSigma`, `SIGMAC`, `sigmac_app` y `sigmac-web`. **BDs que usa:** - Sin base de datos local (Stateless — proxy / gateway). El resultado externo es cacheado de forma compartida en `sri_data.clientes` (`.149`) por `API-SIGMA-WEBCONTROL`. **Servicios que expone:** | Método | Endpoint | Descripción | Auth | |--------|---------|-------------|------| | `GET` | `http://186.4.245.19:8000/consultar?ruc={ruc}` | Consulta en cascada de RUC / Cédula | Libre (CORS `*`) | | `GET` | `http://186.4.245.19:8000/` | Landing de diagnóstico visual y mini-docs | Libre | | `GET` | `http://186.4.245.19:8000/api/logs?tail=N` | Historial de logs del servidor | HTTP Basic Auth (`admin`) | | `POST` | `http://186.4.245.19:8000/api/logs/clear` | Vaciado de archivo de logs | HTTP Basic Auth (`admin`) | **Servicios que consume:** - `http://sheyla2.dyndns.info/SRI` (`SRI.php`, `SRI2.php`, `CEDULAS2.php`). **Módulos disponibles:** - Cascada de consultas SRI / Cédula: ✅ Operativo - Normalización y parseo de respuestas: ✅ Operativo - Consola de logs dual (consola/tmux + rotativo 5MB): ✅ Operativo - Landing interactiva con mini documentación y probador: ✅ Operativo **Integración con el ecosistema:** - Consumido por `API-SIGMA-WEBCONTROL` (módulo directorio de clientes), `WebControlSigma` y aplicaciones cliente de facturación. - Más información técnica: `siax-amd:/home/pablinux/Projects/Python/proxy_server_SRI/agents.md`. --- ### API-SIGMA-WEBCONTROL — Centro de control administrativo y seguridad | Parámetro | Valor | |-----------|-------| | Repositorio Git | `https://git.telcotronics.net/pablinux/API-SIGMA-WEBCONTROL.git` | | Tecnología principal | Node.js (Express) con pool de conexión `mysql2/promise` | | Responsable | pablinux | | Estado actual | ✅ Producción — `Ubuntu-Docker` CT 105 (`192.168.10.145`) | | Equipo / ubicación local | `siax-amd` (`192.168.10.100`) — `/home/pablinux/Projects/Node/API-SIGMA-WEBCONTROL` | | Proceso | `tmux` sesión con `npm start` en `/root/app/API-SIGMA-WEBCONTROL` — pendiente migrar a **siax-monitor** | | Puerto interno | `3002` | | URL interna | `http://192.168.10.145:3002` | | Dominio público | `https://api.siax-system.net` (vía Cloudflare — SSL) | | Autenticación | Login por `usrSesion_email` — soporta bcrypt y plain-text con auto-migración silenciosa | | Rol en el ecosistema | Núcleo central de autorizaciones y notificaciones de salud del ecosistema completo | | Última actualización | 2026-08-04 | `API-SIGMA-WEBCONTROL` es el cerebro y columna vertebral de seguridad y eventos del ecosistema SIGMA. Actúa como la fuente única de verdad para autorizar procesos y recopilar la salud e incidencias operativas de toda la red local y cloud de Telcotronics: * **Base Central de Autorizaciones (API Keys)**: Genera, almacena y valida las llaves de acceso de sistema (**API Keys** en la tabla `webControl.api_key`). Es consumida críticamente por las aplicaciones comerciales y, fundamentalmente, por agentes de monitoreo e infraestructura como **SIAX Monitor**, **mail-monitor** o **server-monitor** (encargado de alertar sobre la caída de instancias o servidores) para autenticar sus despachos de telemetría. * **Base Central de Notificaciones de Salud y Eventos**: Centraliza y procesa el flujo de logs de errores, caídas de servicios y alertas críticas del sistema. Despacha alertas a las interfaces correspondientes tras recibir notificaciones de eventos (como caídas detectadas por los monitores del cluster o estados de rechazo de documentos del SRI procesados por n8n). * **CRM y Licenciamiento**: Controla el registro de empresas aliadas y gestiona los parámetros globales de suscripciones y accesos de usuarios de plataforma. * **Onboarding Automático en 3 Pasos**: 1. *Pre-registro*: Registra provisionalmente datos en la tabla temporal `usuarios_xValidar` (`usr_est=0`), genera un token y despacha un código OTP de 6 dígitos vía correo electrónico (`emailService.js`) con rate limiting (3 intentos cada 15 min) para mitigar spam de cuentas. 2. *Verificación OTP*: Valida el OTP antes de 10 minutos desde el envío. Tras verificarlo, cambia el estado a `usr_est=1` y autoriza al cliente a instanciar la cuenta definitiva. 3. *Aprovisionamiento de Base de Datos*: Crea el usuario definitivo en la tabla `usuarios_sesion` (contraseña bcrypt) y clona síncronamente el molde MySQL oficial hacia la nueva base de datos del cliente (`EMPRESA_XXX`) en el host de Tenants (`.115`) ejecutando el script `tenantSchema.js`. * **Directorio Centralizado de Clientes** (`/api/clientes`): ⚠️ Documentado en versiones previas de este documento como operativo, pero **no está montado en `app.js`** — código muerto hoy (varias rutas referencian funciones inexistentes en el controlador). Pendiente reparar o retirar. Flujo de consulta ya implementado en el código (aunque no montado): `TELCOTRONICS.clientes` (CRM privado de Telcotronics) → caché compartido `sri_data.clientes` (`.149`) → servicio externo (`zonafranka.ec:8000/consultar`, `siax-system.net/api/clientes_cloud.php`) — el resultado externo se cachea en `sri_data` con upsert para no repetir la consulta la próxima vez. * **Registro Centralizado de Empresas** (`/api/empresas`): RUC, razón social, nombre comercial y logo. Requisito previo para subir la firma electrónica de una empresa en `sigmac-sri-api` — el RUC debe existir aquí antes de que esa API acepte un certificado, evitando asociarlo a un RUC inventado por error humano. * **Activación de Documentos Electrónicos** (`/api/sri/documentos-electronicos`): sincroniza la identidad del usuario con `sigmac-sri-api`, reemplazando el patrón inseguro de embeber credenciales admin en cada app cliente. Valida email+contraseña como un login real; solo si es válido, usa ese password (nunca persistido) para crear/sincronizar el usuario en `sigmac-sri-api` vía una credencial admin server-to-server dedicada (`WEBCONTROL`). Guía de integración para cualquier app del ecosistema: `/home/pablinux/Projects/activacion_documentos_electronicos.md`. **BDs que usa:** | BD | Host | Motor | Uso | |----|------|-------|-----| | `webControl` | `192.168.10.149` | MariaDB 10.11 | `usuarios_sesion` (identidades + login, incluye `sri_synced`), `usuarios_xValidar` (onboarding temporal), `api_key` (llaves de API), `aplicaciones`, `aplicaciones_versiones`, `empresas` (RUC, nombre comercial, logo) | | `sri_data` | `192.168.10.149` | MariaDB 10.11 | Caché compartido de consultas RUC/Cédula a servicios externos (`clientes`) — independiente de `TELCOTRONICS.clientes` (CRM privado de Telcotronics) y de `webControl.empresas` (registro formal) | | `SIGMA` | `192.168.10.116` | MySQL 8.0 | `HistorialActualizacionBD` — scripts SQL delta distribuidos a todas las apps del ecosistema | | `EMPRESA_SEED` | `192.168.10.115` | MySQL 8.0 | BD semilla — clonada para crear `EMPRESA_XXX` en el onboarding paso 3 | | `EMPRESA_XXX` (dinámica) | `192.168.10.115` | MySQL 8.0 | BD del nuevo tenant — aprovisionada automáticamente en onboarding paso 3 | **Servicios que consume:** | Servicio | Host / URL | Uso | |---------|-----------|-----| | SMTP | `smtp.sigmac.app:587` (interno: `192.168.10.111:587`) | Envío de OTP al registrar usuarios — `no-reply@sigmac.app`, STARTTLS | **Endpoints principales (para integración):** | Método | Endpoint | Descripción | Auth | |--------|----------|-------------|------| | POST | `/api/auth/pre-register` | Paso 1 onboarding — registro temporal + envío OTP | Pública | | POST | `/api/auth/verify-otp-registro` | Paso 2 — verificación OTP (10 min, rate limit 3 intentos/15 min) | Pública | | POST | `/api/auth/register` | Paso 3 — cuenta definitiva + aprovisionamiento BD tenant | Pública | | POST | `/api/auth/empresas` | Pre-login — devuelve empresas del email sin emitir JWT. `unica: true` si solo tiene una. | Pública | | POST | `/api/auth/login` | Login — emite JWT (8h) + apiKey. `?dba=EMPRESA_XXX` opcional para multi-empresa. Registra `usrSesion_ultimo_login`. | Pública | | POST | `/api/auth/forgot-password` | Recuperación paso 1 — envía OTP al email. Respuesta genérica (no revela si existe). | Pública | | POST | `/api/auth/reset-password` | Recuperación paso 2 — verifica OTP y actualiza contraseña en cloud. | Pública | | GET | `/api/apps` | Lista apps satélite del ecosistema con metadata | `x-api-key` | | GET | `/api/apps/versiones` | Lista versiones registradas (filtrables por app) | `x-api-key` | | POST | `/api/apps/versiones` | Publica nueva versión de app (versión, changelog, url_descarga, archivo_md5, estado) | `x-api-key` | | GET | `/api/apps/versiones/:app_nombre/latest` | Última versión activa — usada por apps cliente para auto-actualización | `x-api-key` | | GET | `/api/apps/versiones/:app_nombre/md5` | Hash MD5 del ejecutable de la versión activa — el cliente lo compara con el MD5 del archivo descargado para verificar integridad | `x-api-key` | | GET | `/api/sql/check_update` | Resumen rápido: total scripts y versión más reciente en `HistorialActualizacionBD` | `x-api-key` | | GET | `/api/sql/updates?since=YYYY-MM-DD` | Scripts activos desde fecha indicada — paginado, máx 500/página | `x-api-key` | | GET | `/api/sql/updates/:id` | Script por ID (incluye inactivos — para auditoría y reintentos) | `x-api-key` | | POST | `/api/sql/updates` | Publica nuevo script delta (uso exclusivo del equipo de desarrollo) | `x-api-key` | | PATCH | `/api/sql/updates/:id/estado` | Activa o desactiva un script publicado | `x-api-key` | | * | `/api/notificaciones/*` | Recepción de eventos de salud e incidencias del ecosistema | `x-api-key` | | POST | `/api/errores` | Bitácora centralizada — cualquier app/web app reporta sus errores (obligatorio `app_origen`+`mensaje`; resto opcional). Tabla `webControl.sistemas_errores` | `x-api-key` | | GET | `/api/errores` | Lista paginada con filtros (`app_origen`/`usuario`/`cuenta`/`categoria`/`nivel`/`huella`/`desde`/`hasta`), sin `detalle` | `x-api-key` | | GET | `/api/errores/:id` | Error completo con `detalle` (stack/dump) | `x-api-key` | | GET | `/api/errores/resumen?dias=N` | Conteo agrupado por app+categoria+huella (qué falla más) | `x-api-key` | | * | `/api/clientes/*` | ⚠️ No montado — ver nota arriba | — | | * | `/api/sri/*` | Configuración de firmas electrónicas y SRI | `x-api-key` | | POST | `/api/sri/documentos-electronicos/activar` | Valida email+contraseña como login real; sincroniza el usuario en sigmac-sri-api | Pública (la validación de password ES la autenticación) | | GET | `/api/sri/documentos-electronicos/estado?email=` | Consulta si el usuario ya activó la emisión de documentos electrónicos | `x-api-key` | | POST | `/api/empresas` | Registra una empresa (ruc, nombre_comercial, razon_social?, dba?) | `x-api-key` | | GET/PUT | `/api/empresas/:ruc` | Consulta / actualiza una empresa (nunca el RUC) | `x-api-key` | | POST/GET | `/api/empresas/:ruc/logo` | Sube / sirve el logo de la empresa | `x-api-key` | **Header de autenticación para endpoints protegidos:** `x-api-key: {key}` (tabla `webControl.api_key`) **Módulos disponibles:** | Módulo | Prefijo de ruta | Estado | |--------|----------------|--------| | Autenticación y Onboarding | `/api/auth` | ✅ Operativo | | Apps satélite e infraestructura | `/api/apps`, `/api/apps_servcs` | ✅ Operativo | | Versiones de Apps (CLI Sync) | `/api/apps/versiones` | ✅ Operativo | | Scripts SQL delta | `/api/sql` | ✅ Operativo | | Documentos Electrónicos y SRI | `/api`, `/api/sri` | ✅ Operativo | | Activación Documentos Electrónicos (sync sigmac-sri-api) | `/api/sri/documentos-electronicos` | ✅ Operativo | | Registro Centralizado de Empresas | `/api/empresas` | ✅ Operativo | | Directorio Centralizado de Clientes | `/api/clientes` | ⚠️ Documentado pero no montado | | Monitoreo, Alertas y Proyectos | `/api/notificaciones`, `/api/proyectos` | ✅ Operativo | | Bitácora centralizada de errores | `/api/errores` | 🟡 Código listo — pendiente `CREATE TABLE sistemas_errores` en `.149` + deploy | **Integración con el ecosistema:** - **factura-e**: usa `webControl.usuarios_sesion` directamente para auth — login por `usrSesion_email` + bcrypt/plain-text - **sigmac_app** / **sigmac-web**: registro y login vía `/api/auth/*`. Usuarios nuevos quedan con `usrSesion_panel = 'configuracion'` - **API-SIGMA-CLOUD**: valida `x-api-key` contra `webControl.api_key` (`.149`) en cada petición entrante - **mail-monitor**: notifica eventos de seguridad (bans fail2ban, cambios de cuenta) vía `x-api-key` - Para más información técnica del proyecto: consultar localmente en `siax-amd:/home/pablinux/Projects/Node/API-SIGMA-WEBCONTROL/agents.md` --- ### API-SIGMA-CLOUD — API Gateway Multi-tenant | Parámetro | Valor | |-----------|-------| | Repositorio Git | `https://github.com/telcotronics/api-gateway-cloud.git` (Gitea: `https://git.telcotronics.net/pablinux/API-GATEWAY-CLOUD.git`) | | Tecnología principal | Node.js (Express) con conmutador de pools dinámicos (`mysql2/promise`) | | Responsable | pablinux | | Estado actual | ✅ Producción — `server-webapps` CT 132 (`192.168.10.160`) | | Equipo / ubicación local | `siax-amd` (`192.168.10.100`) — `/home/pablinux/Projects/Node/API-SIGMA-CLOUD` | | Puerto interno | `3003` | | URL interna | `http://192.168.10.160:3003` | | Dominio público | `api-gateway-cloud.telcotronics.net` / `api-gateway-sigma.telcotronics.net` | | Servicio systemd | `api-gateway.service` | | Documentación API | `https://api-gateway-cloud.telcotronics.net/api-docs` (Swagger UI) | | Rol en el ecosistema | API Gateway multi-tenant cloud y motor transaccional comercial diario de todos los tenants | | Última actualización | 2026-06-07 | `API-SIGMA-CLOUD` es el proxy y enrutador comercial del ecosistema. Se conecta directamente con las aplicaciones de campo finales (Webswing, `sigmac_app` Flutter, `sigma_app` Android) para procesar el volumen operativo diario de cada tenant. Actúa como puente dinámico entre las apps y las bases de datos individuales de los clientes. **API REST pura** — sin vistas ni templates (código legacy eliminado 2026-06-07). * **Enrutamiento Dinámico Multi-tenant**: Middleware `dbConnection.js` enruta cada petición a la BD exacta del cliente (`?db=` o `x-database`). Nombres reservados van a pools fijos; cualquier otro nombre usa `getTenantPool(dbName)` — pool cacheado apuntando a `.115` con esa BD. Sin restricción de patrón de nombre. * **Autenticación en Dos Capas**: API Key (`x-api-key`) validada contra `webControl.api_key` en `.149`, y JWT Bearer (8 h) para sesiones de usuarios dentro del tenant. * **Transaccionalidad Comercial**: Inserción de pedidos, proformas e items bajo `BEGIN TRANSACTION / COMMIT / ROLLBACK` — sin corrupción de registros contables. * **Sincronización Delta Offline**: Endpoints masivos con filtro `?desde=` y paginación `?limite=`/`?offset=`. El sync masivo excluye imágenes — se recuperan puntualmente en Base64 con `/api/items/get-items/:item`. **BDs que usa:** | BD | Host | Motor | Uso | |----|------|-------|-----| | `webControl` | `192.168.10.149` | MariaDB 10.11 | Tabla `api_key` — validación de API Keys en cada petición entrante | | `EMPRESA_XXX` (dinámica, `dbConnection`) | `192.168.10.115` | MySQL 8.0 | BD operativa del tenant enrutado por `?db=` — lógica de negocio diaria | | `EMPRESA_XXX` (dinámica, `poolTenants`) | `192.168.10.115` | MySQL 8.0 | Pool dedicado sin DB fija para `/api/reportes` — queries con prefijo schema `` `EMPRESA_XXX`.tabla `` | | `TELCOTRONICS` | `192.168.10.116` | MySQL 8.0 | Pool por defecto — datos propios Telcotronics | | `SIGMA` | `192.168.10.116` | MySQL 8.0 | Pool histórico — consultas legacy | | `sigma_tv` | `192.168.10.149` | MariaDB 10.11 | Pool canales Sigma TV | **Headers de autenticación e integración:** | Header / Param | Requerido | Descripción | |----------------|-----------|-------------| | `x-api-key` | ✅ Siempre | API Key del ecosistema — validada contra `webControl.api_key` en `.149` | | `x-database` o `?db=` | ✅ En endpoints tenant | Nombre de la BD del cliente (ej: `EMPRESA_EL_SOL`) | | `Authorization: Bearer {jwt}` | En endpoints de usuario | JWT emitido por `/api/auth/login-socio` (validez 8 h) | **Módulos disponibles:** | Módulo | Prefijo de ruta | Estado | |--------|----------------|--------| | Autenticación dual (admins bcrypt + socios MD5 legacy) | `/api/auth` | ✅ Operativo | | Catálogo e Inventario — CRUD completo (GET individual, POST transaccional, PUT, DELETE transaccional, sync delta) | `/api/items` | ✅ Operativo | | Utilidades y Precios (cálculo PVP offline, márgenes por grupo/item/volumen/costo) | `/api/items/utilidad`, `/api/items/precios` | ✅ Operativo | | Clientes y Miembros — CRUD multi-tenant (`poolTenants` + `resolveDb`) | `/api/clientes` | ✅ Operativo | | Documentos transaccionales (Pedidos y Proformas) | `/api/documentos` | ✅ Operativo | | Contabilidad y Plan de Cuentas (sync offline Android) | `/api/contabilidad` | ✅ Operativo | | Panel (Cajas activas, Pagos, Comprobantes) | `/api/panel` | ✅ Operativo | | Localización (Áreas físicas) | `/api/localizacion` | ✅ Operativo | | Reportes y Dashboard (10 endpoints analíticos para `sigmac_app`) | `/api/reportes` | ✅ Operativo | | Usuarios del sistema — CRUD por tenant (facturador, vendedor, etc.) | `/api/panel/usuarios` | ✅ Operativo | **Integración con el ecosistema:** - **API-SIGMA-WEBCONTROL**: fuente de validación de `x-api-key` — toda petición entrante consulta `webControl.api_key` en `.149` - **DB-EMPRESAS (.115)**: destino dinámico de todas las operaciones comerciales de tenants vía `dbConnection.js` - **sigmac_app / sigmac-web**: consumidor principal — sync offline, pedidos, proformas, clientes e items - **Webswing (.110)**: cliente desktop de operaciones comerciales diarias - Para más información técnica del proyecto: consultar localmente en `siax-amd:/home/pablinux/Projects/Node/API-SIGMA-CLOUD/agents.md` --- ### API-SIGMA-COMUNICACIONES — Gateway SaaS de canales de mensajería por cliente | Parámetro | Valor | |-----------|-------| | Repositorio Git | `https://git.telcotronics.net/pablinux/API-SIGMA-COMUNICACIONES.git` | | Tecnología principal | Node.js (Express) + MySQL (`mysql2/promise`) | | Responsable | pablinux | | Estado actual | 🔴 En desarrollo inicial — arquitectura base multi-tenant en código, sin desplegar | | Equipo / ubicación local | `siax-amd` (`192.168.10.100`) — `/home/pablinux/Projects/Node/API-SIGMA-COMUNICACIONES` | | Servidor de producción | `server-webapps` CT 132 (`192.168.10.160`) — mismo servidor que API-SIGMA-CLOUD y API-SIGMA-WEBCONTROL. Aún sin primer despliegue. | | Ruta remota | `/home/user_apps/apps/API-SIGMA-COMUNICACIONES/` | | Servicio systemd | `siax-app-API-SIGMA-COMUNICACIONES.service` (gestionado por SIAX Monitor — pendiente de registrar en el servidor) | | Puerto interno | `3004` (default, configurable por `.env`) | | Dominio público | Pendiente | | Última actualización | 2026-08-17 | `API-SIGMA-COMUNICACIONES` es el producto SaaS multi-tenant de canales de mensajería: cada organización/cliente del ecosistema crea y conecta **su propio** componente WhatsApp (bot tipo `whatsapp-web.js` y/o Meta Cloud API), Telegram y redes sociales, aislado del resto de tenants. Es un sistema **paralelo e independiente de `sigma-robot`** — ese es el hub de comunicaciones e IA de uso *interno* de Telcotronics; este proyecto no delega envío de mensajes en él ni viceversa. * **Multi-tenencia**: una sola BD MySQL; toda tabla de negocio futura lleva `organization_id`. Patrón `TenantScopedRepository` obligatorio para evitar fugas de datos entre tenants. * **Autenticación de tenants**: `x-api-key` por organización (hash SHA-256 almacenado, formato `sk__`, nunca se guarda en texto plano). * **Autenticación de administración**: `x-admin-secret` — gestiona el catálogo de organizaciones y sus api keys, separado de `x-api-key` para evitar el problema de arranque circular (no se puede exigir una key de tenant para crear la primera key de ese tenant). **BDs que usa:** | BD | Host | Motor | Uso | |----|------|-------|-----| | Pendiente de aprovisionar | Pendiente | MySQL | `organizations`, `api_keys` — migraciones ya escritas en `src/db/migrations/`, no aplicadas aún | **Servicios que consume:** ninguno todavía. **Endpoints principales (para integración):** | Método | Endpoint | Descripción | Auth | |--------|----------|-------------|------| | GET | `/health` | Healthcheck | Pública | | POST / GET | `/organizations` | Crear / listar organizaciones | `x-admin-secret` | | GET / PUT / DELETE | `/organizations/:uuid` | Detalle / actualizar / suspender (soft-delete) | `x-admin-secret` | | GET / POST | `/organizations/:uuid/api-keys` | Listar / emitir api key de un tenant | `x-admin-secret` | | POST | `/organizations/:uuid/api-keys/:id/revoke` | Revocar api key | `x-admin-secret` | **Módulos disponibles:** | Módulo | Estado | |--------|--------| | Arquitectura SaaS multi-tenant (organizations/api_keys) | 🟡 Código listo, sin desplegar | | Cuentas de usuario humano (login agentes/administradores) | ⏳ Pendiente | | Componente WhatsApp por tenant (bot whatsapp-web.js / Meta Cloud API) | ⏳ Pendiente | | Telegram / redes sociales | ⏳ Pendiente | **Integración con el ecosistema:** - Ningún proyecto lo consume todavía — es un proyecto nuevo. - Para más información técnica del proyecto: consultar localmente en `siax-amd:/home/pablinux/Projects/Node/API-SIGMA-COMUNICACIONES/agents.md` --- --- ## Aplicaciones web ### CT cloud — Servidor-web (192.168.10.109) | Parámetro | Valor | |-----------|-------| | IP | 192.168.10.109 | | MAC | BC:24:11:68:9D:74 | | CT Proxmox | 150 (nodo cloud) | | Motor | Apache 2.4.66 + PHP **8.5**-FPM | | Rol | Proxy reverso público + host de sitios PHP | > **Convención de directorios:** `/var/www/web_[nombre]/` | Directorio | Dominio | Notas | |-----------|---------|-------| | `web_factura-e` | `factura-e.net` / `app.factura-e.net` | ← **FACTURA-E** (ERP Facturador SIGMA) | | `web_sigmac-crm` | `crm.sigmac.app` | sigmac-web (Laravel 13 + Vue 3) | | `web_sigmac_app` | `sigmac.app` | Web de la marca SIGMAC | | `web_telcotronics` | `telcotronics.com` | Web corporativa Telcotronics | | `web_domus-fa` | `domus-fa.com` | Sistema domótica DAPSI | | `web_acerogas` | — | Cliente Acerogas | | `web_artesymas` | — | Cliente Artes y Más | | `web_fact_pro` | — | Facturador Pro | | `web_gimnasio` | — | Cliente Gimnasio | | `web_helpdesk` | — | Help Desk | | `web_tiendaPadi` | — | Cliente Tienda Padi | | `web_xsystem` | — | XSystem | | `web_zonaindustrial` | — | Cliente Zona Industrial | | `web_test_facturador` | — | Entorno de pruebas | **Proxies internos (Apache → backend):** | Dominio | Destino | |---------|---------| | `api.factura-e.net` | http://192.168.10.120:8080/ | | `app.factura-e.net` | http://*:3001/ | | `api.sigmac.app` | http://192.168.10.120:8082/ | --- ### CT cloud — Servidor-SIGMA-VW (192.168.10.110) · proyecto `SIGMA-CLOUD-APPS-SERVER` **Servidor de aplicaciones cloud** del ecosistema: ejecuta aplicaciones Java Swing (principalmente **SIGMAC**, el ERP de facturación electrónica) dentro del navegador usando HTML5 Canvas + WebSocket + Protocol Buffers, sin modificar el código fuente de la app. Es un **fork de Webswing** (última versión libre) adaptado con autenticación centralizada contra **API-SIGMA-WEBCONTROL**, multi-tenant (el `db_tenant` del login llega como `-Dsigma.db=` al proceso Swing) y branding SIGMA Cloud. Nombre lógico del proyecto: `SIGMA-CLOUD-APPS-SERVER` (el directorio local sigue llamándose `SIGMA-CLOUD-APPS/` para no romper rutas absolutas de config/worktree). | Parámetro | Valor | |-----------|-------| | IP | 192.168.10.110 | | MAC | BC:24:11:DC:3B:6E | | CT Proxmox | 141 (nodo cloud) | | Rol | Frontend web del sistema SIGMA (servidor de apps Swing en el browser) | | Repositorio Git | `https://git.telcotronics.net/pablinux/SIGMA-CLOUD-APPS-SERVER.git` (remote `origin` histórico: `bitbucket.org/pablinux/webswing.git`) | | Tecnología | **Webswing 20.1.7 en producción** (rama `webcontrol-20.1.7`) · fork base **20.2.5** en `main` | | Stack | Java 11 (build) / **Java 8 (runtime servidor 20.1.7 — Guice 4.1 + CGLIB)** / Java 8 u 11 (apps Swing) · Jetty 9.4 · Jersey 2.31 · Google Guice 4.1 · Protocol Buffers 3.12 · BouncyCastle 1.61 · ActiveMQ (puerto **configurable** vía `-Dwebswing.jmsUrl`, default 34455 — permite 2 instancias en el mismo host) · TypeScript 5.5 · Webpack 5.93 · Xvfb | | Responsable | pablinux | | Estado actual | ✅ **En producción real** (deploy 2026-09-05): `sigma-server.war` 20.1.7 con WebControl + skin SIGMA Cloud + consola admin rebrandeada, en `app/SIGMA-WEB` (plataforma legacy, ganadería/CRM + SIGMAC). Además, **instalación nueva y separada** en `servicios/sigma-cloud-apps-server` (misma IP, puertos propios), `apps/` vacía — sin apps reales desplegadas ahí todavía. | | Equipo / código local | `siax-amd` (`192.168.10.100`) — `/home/pablinux/Projects/java/SIGMA-CLOUD-APPS` (rama `main`) y `/home/pablinux/Projects/java/SIGMA-CLOUD-APPS-2017` (worktree, rama `webcontrol-20.1.7`) | | Servidor de producción | Servidor-SIGMA-VW CT 141 (`192.168.10.110`) | | Puerto | `8090`/`8443` (`app/SIGMA-WEB`, prod real) · `8091`/`8444` (`servicios/sigma-cloud-apps-server`, instalación nueva) · `8085` (entorno de prueba en siax-amd, bind `192.168.10.100`) | | Dominio público | `https://app.factura-e.net` (Apache `.109` → Webswing `.110`) | | Última actualización | 2026-09-05 | **Arquitectura:** ``` Navegador (HTML5 Canvas, TS) │ WebSocket (Protobuf) Webswing Server (Jetty + Jersey + Guice) ── login → API-SIGMA-WEBCONTROL │ WebSocket (Protobuf) JVM Swing Process (WebToolkit interceptado) ── 1 por sesión de usuario │ Aplicación SIGMAC (Java Swing — sin modificar) ── -Dsigma.db= → MySQL .116 ``` **BDs que usa:** ninguna propia. Las apps Swing (SIGMAC) conectan a la BD del tenant en `192.168.10.116` (MySQL / HikariCP), nombre de BD según `db_tenant`. **Servicios que consume:** | Servicio | Para qué | |---|---| | `API-SIGMA-WEBCONTROL` (`api.siax-system.net`, detrás de Cloudflare) | Login (`POST /api/auth/login` → JWT HS256 8h + apiKey + `db_tenant`) | | MySQL tenant `.116` | Datos de SIGMAC (vía la app Swing, no directo) | | `smtp.sigmac.app:587` / `192.168.10.111:587` | Correo del ecosistema | **Servicios que expone:** UI de las apps Swing por HTTP/WebSocket; REST de gestión (`/rest/paths`, `/sessions`, `/pathConfig`, `/log`, CRUD de paths — solo `main`/20.2.5); consola de administración en `/admin/` (20.1.7, recuperada de prod). **Módulos (estado para integración):** - Fork base + rebranding + REST extendida (`main`/20.2.5) — ✅ compila y corre - Módulo `WebControlSecurityModule` (20.1.7) — ✅ probado e2e - Skin de login SIGMA Cloud + consola admin rebrandeada (20.1.7) — ✅ en producción real (`app/SIGMA-WEB`) - Instalación nueva y separada en `servicios/sigma-cloud-apps-server` (8091/8444) — ✅ armada y corriendo, `apps/` vacía (falta desplegar SIGMAC u otra app ahí) **Integración con el ecosistema:** es el frontend de **SIGMAC**; se autentica vía **API-SIGMA-WEBCONTROL**; SIGMAC (a través de este servidor) consume **API-SIGMA-CLOUD** y la BD del tenant. Publicado al exterior por el Apache de Servidor-web (`.109`). **Compilar:** ```bash # Fork 20.2.5 (rama main) mvn install -Pdev -T 18 -pl webswing-server/webswing-server-war --also-make # 20.1.7 + WebControl + skin (worktree SIGMA-CLOUD-APPS-2017) — sin Maven ./build-webcontrol-war.sh ``` **Dónde buscar más info:** `siax-amd:/home/pablinux/Projects/java/SIGMA-CLOUD-APPS/agents.md` (+ `.agente/` para memoria, estructura, errores, objetivos y reglas). --- ### WebControlSigma (Web_siax-sytem) — Panel Administrativo del Ecosistema Panel web central de administración del ecosistema Telcotronics. Gestiona empresas clientes, usuarios cloud (`usuarios_sesion` / `usuarios_xValidar`), API Keys de los 3 sistemas (webControl, sigma-robot, api-IA), licencias de hosts (SHA256 determinista), notificaciones, proyectos y catálogo de apps descargables. Incluye módulo BFF PHP hacia `SIGMAC-SRI-API` para facturación electrónica. Login con bcrypt + captcha. Desplegado en Apache 2.4 + PHP 8.5-FPM en Servidor-web (.109). | Parámetro | Valor | |-----------|-------| | Repositorio Git | `https://git.telcotronics.net/pablinux/Web_siax-sytem.git` | | Tecnología principal | PHP 8.5 + MariaDB (PDO) | | Responsable | pablinux | | Estado actual | ✅ Activo — tabs Android/iOS + CLI Sync + endpoint upload_app 2026-06-16 | | Equipo / código local | `siax-amd` (`192.168.10.100`) — `/home/pablinux/Projects/php/Web_siax-sytem` | | Servidor de producción | Servidor-web CT 150 (`192.168.10.109`) | | Directorio deploy | `/var/www/web_xsystem/public_html` | | Dominio público | `siax-system.net` | | Puerto | 80 / 443 (Apache) | | Última actualización | 2026-06-16 | **BDs que usa:** | BD | Host | Motor | Uso | |----|------|-------|-----| | `webControl` | `192.168.10.149` | MariaDB 10.11 | BD principal — `ClienteEmpresa`, `HostEmpresa`, `usuarios_sesion`, `usuarios_xValidar`, `panel_control_users`, `api_key`, `notificaciones` | | `siax_core` | `192.168.10.149` | MariaDB 10.11 | Lectura/escritura API keys de sigma-robot (`api_keys`) | | `api_ia_python` | `192.168.10.149` | MariaDB 10.11 | Lectura/escritura API keys de api_service_ia (`api_key`) | **Servicios que consume:** | Servicio | URL | Autenticación | Propósito | |---------|-----|---------------|-----------| | SIGMAC-SRI-API | `https://api.sigmac.app/sri` | OAuth2 Password Grant | Panel BFF facturación SRI — `app/facturacion/` | | SMTP ecosistema | `smtp.sigmac.app:587` | `no-reply@sigmac.app` | Envío de correos vía PHPMailer | | API_CENTINEL_SECURITY | `https://api.telcotronics.com` | `x-api-key` | Control de acceso Hikvision — gestión de dispositivos, apertura de puertas, consulta de eventos de acceso físico | **Módulos disponibles:** | Módulo | Ruta | Estado | |--------|------|--------| | Login + captcha | `index.php` + `login.php` | ✅ Operativo (bcrypt + PHP 8.5) — rediseño pendiente | | Panel principal + Dashboard métricas | `PanelMenu.php` | ✅ Operativo — 7 stat cards + 2 tablas detalle + cards Android/iOS/CLI Sync en sec-apps (contadores GROUP BY) | | Hub Clientes (4 tabs: empresas / equipos / sesiones cloud / xValidar) | `app/clientes/sesiones.php` | ✅ Operativo 2026-06-03 | | API Keys (webControl + sigma-robot + api-IA) | `app/clientes/apikeys.php` | ✅ Operativo — ver/copiar key_value, badge vencida, extender expiración | | Equipos / Licencias hosts SHA256 | `sesiones.php?tab=equipos` | ✅ Operativo — `licencias.php` redirige aquí | | Notificaciones por cliente | `app/clientes/notificaciones.php` | ✅ Operativo | | Panel Facturación SRI (BFF) | `app/facturacion/` | ✅ Operativo | | Usuarios del panel | `app/usuarios/` | ✅ Operativo | | Hub Software (10 tabs: linux/windows/mac/android/ios/bd/reportes/herramientas + cloud + cli-sync) | `app/software/` | ✅ Operativo — Android, iOS, CLI Sync agregados 2026-06-16 | | Webhook sync apps | `POST /api/sync_app.php` | ✅ Operativo — `x-api-key`, INSERT/UPDATE `aplicaciones` | | Endpoint reportes SIGMAC Java | `GET /api/reportes.php` | ✅ Operativo — catálogo JSON + descarga por `?id=N` | | Reportes de audio | `app/rep_audio/` | 🔧 En desarrollo | | Webhooks / chatbot | `webhooks/domus/` | ⚠️ Legacy | **Algoritmo de licencias:** `hash('sha256', strtoupper($hostname).'|'.strtoupper($empresa).'|'.SIGMA_LIC_SALT)` — resultado (64 hex) en `HostEmpresa.HostEmp_idLic`. Determinista: mismo host+empresa = mismo código siempre. **BDs de software (en `webControl` — `.149`):** | Tabla | Uso | Campo clave | |-------|-----|-------------| | `aplicaciones` | Catálogo de apps descargables (Linux/Windows/Mac/Android/iOS/BD/Herramientas) | `app_ENLACE` — URL de descarga actual | | `aplicaciones_versiones` | Historial de versiones por app. FK `app_id→aplicaciones.app_ID`. UNIQUE `(app_id,version)`. Campos: `version`, `changelog`, `fecha_release`, `url_descarga`, `archivo_md5`, `estado` ENUM(`activo`\|`inactivo`\|`beta`) | `url_descarga` + `archivo_md5` | | `aplicaciones_reportes` | Plantillas de reportes por categoría (ventas, inventario, caja, CxC, CxP, compras, contabilidad) | `url_plantilla` — consumida por `GET /api/reportes.php?id=N` | | `aplicaciones_img` | Iconos y miniaturas para `aplicaciones` y `aplicaciones_reportes` | `ref_tabla` + `ref_id` — FK polimórfica | **Sistema de actualizaciones de apps — CLI Sync:** > Mecanismo central del que dependen TODAS las apps cliente para recibir nuevas versiones. > Aplica a apps descargables (instaladores, binarios, paquetes). No aplica a webapps ni servicios. ``` Developer/IA/Robot/CI ↓ POST /api/upload_app.php (x-api-key) ↓ aplicaciones + aplicaciones_versiones (BD webControl .149) ↓ POST https://api.siax-system.net/api/apps/versiones (notifica API WebControl) ↓ App cliente consulta GET /api/apps/versiones/{app_nombre}/latest ↓ Descarga url_descarga → verifica archivo_md5 → instala ``` Subir nueva versión desde CLI: ```bash curl -X POST 'https://siax-system.net/api/upload_app.php' \ -H 'x-api-key: ' \ -F 'nombre=SIGMA RC' \ -F 'version=5.2.1' \ -F 'plataforma=WINDOWS' \ -F 'changelog=Corrección de errores' \ -F 'fecha_release=2026-06-16' \ -F 'archivo=@./sigma_setup.exe' # → {"ok":true,"app_id":N,"db_action":"created|updated","url_descarga":"...","archivo_md5":""} ``` Verificar última versión disponible (apps cliente): ``` GET https://api.siax-system.net/api/apps/versiones/{app_nombre}/latest Header: x-api-key: → version, url_descarga, archivo_md5, estado (solo actualizar si estado="activo") ``` Consultar en panel: `https://siax-system.net/app/software/index.php?tab=cli-sync` API key: panel `siax-system.net` → Clientes → API Keys **Endpoint de reportes para SIGMAC Java:** ``` GET https://siax-system.net/api/reportes.php → catálogo JSON completo GET https://siax-system.net/api/reportes.php?id=N → descarga directa o redirect GET https://siax-system.net/api/reportes.php?categoria=ventas → filtrado JSON → Sin autenticación — acceso público por URL ``` **Integración con el ecosistema:** - Provee `webControl.api_key` — consumida por `API-SIGMA-CLOUD` y `API-SIGMA-WEBCONTROL` para validar `x-api-key` - Gestiona `usuarios_sesion` y su vínculo con `ClienteEmpresa` (FK bidireccional `usrSesion_idEmp` ↔ `clientEmp_idUsuario`) - Las apps Flutter/PHP/Java registran usuarios vía `API-SIGMA-WEBCONTROL` → `usuarios_xValidar` → OTP → `usuarios_sesion` — visibles y gestionables desde este panel - **SIGMAC Java** consumirá `GET /api/reportes/{id}` para descargar plantillas de reportes directamente desde el panel **Más información:** `siax-amd:/home/pablinux/Projects/php/Web_siax-sytem/agents.md` --- ### SitioWeb_telcotronics — Sitio web institucional y tienda en línea Sitio web público de Telcotronics: institucional (SPA estática, `index.html`) + tienda en línea SSR (`tienda.php`) servidos por Apache en Servidor-web (.109). Genera leads vía formulario PHP+PHPMailer y vende el catálogo real (901 productos, 22 categorías) leyendo MySQL **directo** — sin proxy intermedio, modelo `factura-e.net`. Incluye un panel de configuración privado (login propio) con parámetros de vitrina, gestión de destacados/imágenes y un dashboard de visitas/clics vía GA4 Data API. | Parámetro | Valor | |-----------|-------| | Repositorio Git | `https://git.telcotronics.net/pablinux/SitioWeb_telcotronics.git` | | Tecnología principal | HTML5 / CSS3 / JS ES6+ vanilla · Tailwind CSS (CDN) · PHP 8.5 + PHPMailer | | Responsable | pablinux | | Estado actual | ✅ v2.7.0 | | Código local | `siax-amd` (`192.168.10.100`) — `/home/pablinux/Projects/php/SitioWeb_telcotronics` | | Servidor de producción | Servidor-web CT 150 (`192.168.10.109`) — Apache 2.4.66 + PHP 8.5-FPM | | Directorio deploy | `/var/www/web_telcotronics/public_html/` | | Dominio público | `telcotronics.com` | | Puerto | 80 / 443 (Apache) | | Última actualización | 2026-09-05 | **BDs que usa:** conexión **directa** (PDO, solo lectura) a MySQL `TELCOTRONICS` en `192.168.10.115:3306` (servidor de tenants DB-EMPRESAS) — vista `ver_inventario_precios_app` filtrando `grupo_precio = 'VENTAS_WEB'`. Usuario `web_telco`@`192.168.10.%` con `GRANT SELECT` sobre la vista. Ya no pasa por API-SIGMA-CLOUD (ese proxy queda legacy, sin uso — `api/productos.php`). **Servicios que consume:** | Servicio | URL / Host | Autenticación | Propósito | |---------|-----------|---------------|-----------| | SMTP ecosistema | `smtp.sigmac.app:587` (interno: `192.168.10.111:587`) | `no-reply@sigmac.app` | Formulario de contacto — pendiente activar `smtp_pass` real en el servidor | | GA4 Data API | `analyticsdata.googleapis.com` | Service account (JWT, rol Lector en la propiedad) | Dashboard de visitas/clics del panel — pendiente `ga4_property_id` + key del service account | | Google Analytics 4 | tag `G-GZX7LYMP3L` | — | Analytics de `index.html` y `tienda.php` | **Servicios que expone:** | Servicio | URL | Autenticación | Propósito | |---|---|---|---| | Panel de configuración | `https://telcotronics.com/panel_config.php` | Login propio — sesión PHP, `panel_user`/`panel_pass_hash` (bcrypt) en `api/config.php` del servidor | Config del catálogo, parámetros de vitrina (IVA, ocultar sin stock/imagen), imágenes de categoría, destacados, dashboard GA4. Enlazado (discreto, `rel=nofollow`) desde el footer de `index.html` | **Módulos disponibles:** | Módulo | Archivo | Estado | |--------|---------|--------| | Sitio institucional (SPA) | `index.html` | ✅ v2.1.0 — completo | | Tienda en línea (SSR) | `tienda.php` | ✅ v3 — catálogo real embebido al servir; IVA/destacados/imágenes de categoría configurables desde el panel | | Backend catálogo directo | `api/catalogo_lib.php` + `api/db.php` + `api/catalogo.php` + `api/imagen.php` | ✅ Operativo en prod | | Panel de configuración | `panel_config.php` + `_items`/`_parametros`/`_general`/`_dashboard` | 🟡 Base operativa — dashboard GA4 pendiente de credenciales de Google | | Formulario de contacto | `api/contacto.php` | ✅ PHP + PHPMailer + honeypot — pendiente `smtp_pass` real en el servidor | | Catálogo proxy | `api/productos.php` | 🗄️ Legacy, sin uso — reemplazado por conexión directa a BD | **Integración con el ecosistema:** - Conexión directa (solo lectura) a MySQL `TELCOTRONICS` en DB-EMPRESAS (`.115`) — no pasa por API-SIGMA-CLOUD - Consume **SMTP ecosistema** (`smtp.sigmac.app`) para el formulario de contacto - Chatbot **Dialogflow** embebido (agent ID `eea5ca65-ded3-4c89-bd8a-9e6378cb4686`) — independiente del hosting - Repositorio propio en `git.telcotronics.net` (Gitea) **Más información:** `siax-amd:/home/pablinux/Projects/php/SitioWeb_telcotronics/agents.md` --- ### sigmac-web — CRM Web del Ecosistema SIGMA CRM web companion a `sigmac_app`. SPA Vue 3 servida por un backend Laravel 13 que actúa como proxy puro hacia los servicios del ecosistema — no tiene lógica de negocio propia. La autenticación pasa íntegramente por API-SIGMA-WEBCONTROL y los datos de negocio provienen de MySQL tenant en DB-EMPRESAS. La API Laravel valida el JWT de WEBCONTROL con `AuthJwtMiddleware` y enruta dinámicamente al tenant correcto con `TenantMiddleware` en cada petición. | Parámetro | Valor | |-----------|-------| | Repositorio Git | `https://git.telcotronics.net/pablinux/SIGMAC-WEB_PHP.git` | | Tecnología principal | Laravel 13 (PHP 8.5) + Vue 3 + Vite 5.4 + Tailwind CSS 3.4 | | Responsable | pablinux | | Estado actual | 🟡 En desarrollo activo — módulos principales completos, pendiente Notificaciones/Sincronización/HTTPS | | Equipo / código local | `pablinux-laptop` (`192.168.10.72`) — `/home/pablinux/Projects/php/sigmac-web` | | Servidor de producción | Servidor-web CT 150 (`192.168.10.109`) — Apache 2.4.66 + PHP 8.5-FPM | | Directorio deploy | `/var/www/web_sigmac-crm/` | | Dominio público | `crm.sigmac.app` | | Puerto | 80 / 443 (Apache prod) · `:8000` API dev · `:5173` frontend dev | | Última actualización | 2026-06-09 | **BDs que usa:** | BD | Host | Motor | Uso | |----|------|-------|-----| | `EMPRESA_XXX` (dinámica) | `192.168.10.115` | MySQL 8.0 | BD operativa del tenant — toda la lógica de negocio. Enrutada por `TenantMiddleware` según `db_tenant` del JWT | **Servicios que consume:** | Servicio | URL | Auth | Propósito | |---------|-----|------|-----------| | API-SIGMA-WEBCONTROL | `https://api.siax-system.net` (interno: `http://192.168.10.145:3002`) | Pública | Auth 2 pasos: `POST /api/auth/empresas` + `POST /api/auth/login` → JWT (8h) + apiKey + db_tenant | | API-SIGMA-CLOUD | `https://api-gateway-cloud.telcotronics.net` | `x-api-key` + `?db=` | Sincronización cloud — pendiente implementar | **Flujo de autenticación (para integración):** 1. `POST /api/auth/empresas {email, paswd}` → Laravel proxea a WEBCONTROL → lista de empresas del usuario 2. `POST /api/auth/login {email, paswd, dba}` → Laravel proxea → JWT + apiKey + db_tenant (dba opcional en multi-empresa) 3. Cada request protegida: `Authorization: Bearer {jwt}` → `AuthJwtMiddleware` valida → `TenantMiddleware` conecta a `EMPRESA_XXX` en `.115` **Módulos disponibles (API REST en `crm.sigmac.app/api/`):** | Módulo | Endpoints principales | Estado | |--------|-----------------------|--------| | Auth | `POST /auth/empresas`, `POST /auth/login`, `GET /auth/me` | ✅ Operativo | | Dashboard | `GET /dashboard/kpis`, `/grafica`, `/top-productos`, `/actividad` | ✅ Operativo | | Ventas | `GET/POST /ventas`, `GET /ventas/{id}`, `POST /ventas/{id}/anular`, `GET /ventas/kpis` | ✅ Operativo | | Compras | `GET/POST /compras`, `GET /compras/{id}`, `GET /compras/kpis` | ✅ Operativo | | Pedidos | `GET/POST /pedidos`, `GET /pedidos/{id}`, `POST /pedidos/{id}/confirmar`, `/cancelar` | ✅ Operativo | | Proformas | `GET/POST /proformas`, `GET /proformas/{id}`, `POST /proformas/{id}/emitir`, `/anular` | ✅ Operativo | | Inventario | `GET/POST/PUT /inventario`, `GET /inventario/{id}`, `POST /inventario/{id}/ajustar-stock`, `GET /inventario/kpis` | ✅ Operativo | | Clientes | `GET/POST/PUT /clientes`, `GET /clientes/{id}`, `GET /clientes/{id}/consultar-sri`, `GET /clientes/kpis` | ✅ Operativo | | Tareas | `GET/POST/PUT/DELETE /tareas`, `POST /tareas/{id}/cambiar-estado` | ✅ Operativo | | Notificaciones | — | 🔧 Pendiente | | Sincronización cloud | — | 🔧 Pendiente | **Integración con el ecosistema:** - Proxea auth hacia **API-SIGMA-WEBCONTROL** (`192.168.10.145:3002`) — no gestiona identidades propias - Accede a **DB-EMPRESAS** (`.115`) directamente vía `TenantMiddleware` + Eloquent (`BaseModel $connection='tenant'`) - Paralelo a **sigmac_app** (Flutter) — misma lógica de negocio orientada al navegador, sin modo offline - El frontend SPA se sirve desde `crm.sigmac.app/app/` (build Vite compilado en `api/public/app/`) **Más información:** `pablinux-laptop:/home/pablinux/Projects/php/sigmac-web/agents.md` --- ### app_ideas — Canvas de Ideas y Pensamiento Visual | Parámetro | Valor | |-----------|-------| | Repositorio Git | `https://git.telcotronics.net/pablinux/APPA-GENERQADOR-DE-IDEAS.git` | | Tecnología principal | Node.js (Express) + MongoDB + EJS | | Responsable | pablinux | | Estado actual | 🟡 En desarrollo activo | | Puerto | `2000` | | Servicio systemd | `siax-app-APP_IDEAS` (gestionado por SIAX Monitor) | | BD principal | MongoDB — `192.168.10.146:27017/app_ideas` (CT 102, nodo cluster) | | Servidor deploy | `server-webapps` CT 132 (`192.168.10.160`) | | Dominio público | `ideas.telcotronics.com` | Canvas de ideas y pensamiento visual del ecosistema. Permite generar, organizar y visualizar ideas con soporte de inteligencia artificial. Cuenta con paneles especializados: dibujo libre, flujo visual, gestión de ideas, generación asistida por IA y recopilación de procesos. **APIs que consume:** | Servicio | URL / Variable | Uso | |---------|---------------|-----| | MongoDB | `MONGO_URI=mongodb://192.168.10.146:27017/app_ideas` | BD principal — ideas, flujos, sesiones | | AIT (IA Telcotronics) | `AIT_URL=https://api.telcotronics.net/` | Generación y análisis de ideas con IA | | Hub API (Tareas) | `HUB_API_URL=https://tareas.telcotronics.com/api/external` | Integración con sistema de tareas | | Resend | `ReSend_APIKEY` | Envío de emails | --- ### app_marketing — Centro de Publicidad y Marketing del Ecosistema **Descripción:** Centro de publicidad y marketing multi-tenant del ecosistema Telcotronics. Gestiona y sirve campañas promocionales internas y de anunciantes para las aplicaciones del ecosistema (`app_ideas`, `sigmac_app`, `sigmac-web`, etc.) mediante una API REST y un widget JS embebible responsivo. Registra impresiones y clics para proporcionar métricas en tiempo real. | Parámetro | Valor | |-----------|-------| | Repositorio Git | [pendiente — crear repo en git.telcotronics.net] | | Tecnología principal | Node.js (Express) + MongoDB + EJS | | Responsable | pablinux | | Estado actual | ✅ Activo / Producción | | Ubicación local | `siax-intel` (`192.168.10.101`) — `/home/pablinux/Projects/Node/app_marketing` | | Servidor de producción | `server-webapps` CT 132 (`192.168.10.160`) — `/home/user_apps/apps/app_marketing` | | Dominio público | `marketing.sigmac.app` (Portal Admin) y `ads.sigmac.app` (API/Widget) | | Puerto | `2100` | | Servicio systemd | `siax-app-APP_MARKETING` (gestionado por SIAX Monitor) | | Última actualización | 2026-05-31 | **Bases de Datos:** * **MongoDB** (`192.168.10.146:27017/app_marketing` en CT 102, nodo cluster): Almacena las cuentas de usuarios, planes de suscripción con límites, campañas creadas (títulos, descripciones, llamadas a la acción, colores, recursos multimedia) y eventos de impresiones y clics para análisis histórico. **Servicios que Consume y Expone:** * **Expone:** * **Widget JS:** `http://ads.sigmac.app/js/widget.js` (embebible en cualquier web del ecosistema). * **GET** `http://ads.sigmac.app/api/banner?apiKey=sg_live_...&formato={formato}`: Devuelve el anuncio activo para la aplicación autorizada y registra la impresión automáticamente. * **POST** `http://ads.sigmac.app/api/clic`: Registra un clic en el banner. Payload: `{ campanaId, apiKey }`. * **Autenticación:** * Acceso público y seguro al widget vía cabecera `x-api-key` o parámetro de consulta `apiKey`. * Acceso a paneles administrativos mediante sesiones HTTP seguras (`express-session` con almacenamiento en MongoDB). **Módulos Disponibles:** * **Portal Super Admin (`/admin/super`):** Monitoreo de recursos del servidor en tiempo real, gestión de anunciantes y planes de suscripción. (✅ Operativo) * **Portal Anunciante (`/admin`):** Métricas propias y CRUD de campañas publicitarias (imágenes, videos, HTML personalizado) limitadas por su plan. (✅ Operativo) * **Widget Engine:** Inyección responsiva y adaptativa para 5 formatos de anuncios: `banner` (estándar), `sidebar` (columna), `footer` (pie), `intro_demo` (modal) y `slider` (deslizante esquina inferior). (✅ Operativo) **Integración con el Ecosistema:** * Las aplicaciones satélites autorizadas (ej. `app_ideas`, `sigmac-web`, `sigma-robot`, `sigmac_app`) integran el contenedor HTML: ```html
``` y consumen anuncios segmentados utilizando su API Key correspondiente. **Dónde buscar más información:** * Documentación local detallada del proyecto: `siax-intel:/home/pablinux/Projects/Node/app_marketing/README.md`. --- ### app_fidelizacion — Aplicación de Fidelización de Clientes | Parámetro | Valor | |-----------|-------| | Repositorio Git | [pendiente — crear repo en git.telcotronics.net] | | Tecnología principal | Node.js (Express) + MySQL + EJS + Tailwind CSS | | Responsable | pablinux | | Estado actual | 🟡 En desarrollo activo | | Puerto | `2001` | | Servicio systemd | `siax-app-APP_FIDELIZACION.service` | | BD principal | MySQL — `192.168.10.149:3306/nexo_fd` | | Servidor deploy | `server-webapps` CT 132 (`192.168.10.160`) | Plataforma de lealtad desarrollada para gestionar clientes y acumulación de puntos (transacciones) vía escaneo QR por parte de comercios (Partners). Incluye un módulo público, panel de cliente (tienda de canje, perfil), panel de partner y un panel administrativo. Integra una API REST para interacción externa (Partners). **APIs que consume/provee:** | Servicio | URL / Endpoint | Uso | |---------|---------------|-----| | MySQL | `DB_HOST=192.168.10.149` | Base de datos principal de usuarios, catálogo e historial de transacciones | | API Partners | `/api/v1/partner/*` | Endpoints protegidos vía `x-api-key` para registro de clientes, transacciones y catálogo | --- ### drop.sigmac.app (app_compartir) — Plataforma de Transferencia y Visor Rápido de Archivos **Descripción:** Aplicación web en Go para transferencia inmediata de archivos, fotos, documentos y texto/código entre dispositivos (PC y móvil) sin depender de WhatsApp. Incluye un visor universal integrado con reproductores multimedia, lector de PDF y visualizador de código, además de generación instantánea de código QR para escaneo móvil. | Parámetro | Valor | |-----------|-------| | Repositorio Git | [pendiente — crear repo en git.telcotronics.net] | | Tecnología principal | Go 1.22+ / 1.27 (`net/http` nativo) + SQLite + Tailwind CSS | | Responsable | pablinux | | Estado actual | ✅ Operativo / En pruebas | | Ubicación local | `siax-amd` — `/home/pablinux/Projects/GO/app_compartir` | | Servidor de producción | `server-webapps` CT 132 (`192.168.10.160`) — pendiente deploy | | Dominio público | `drop.sigmac.app` | | Puerto | `2006` | | Servicio systemd | `siax-app-DROP_SIGMAC_APP.service` (gestionado por SIAX Monitor) | **Bases de Datos:** * **SQLite** (`data/compartir.db` local en modo WAL): Almacena metadatos de archivos compartidos (`shares`), usuarios vinculados (`users`) y tokens de sesión (`sessions`). **Política de Retención y Almacenamiento:** * **Sesiones Invitado (Guest):** No requieren login. Los archivos y notas tienen caducidad estricta de **24 horas**. Un worker en segundo plano (`cleaner`) purga periódicamente el archivo físico en disco y su registro en la base de datos. * **Cuentas Registradas (WebControl / Google OAuth):** Almacenamiento **permanente**. No se eliminan a las 24 horas y disponen de panel de gestión en `/mis-archivos`. **Servicios que Consume y Expone:** * **Expone:** * **GET** `/`: Portal web de subida (drag & drop, pegar con `Ctrl+V`, compartir notas/código). * **POST** `/api/upload`: Subida multipart de archivos (hasta 500 MB). Retorna JSON con `viewer_url` y `download_url`. * **POST** `/api/share-text`: Subida rápida de fragmentos de texto o código. * **GET** `/v/{id}`: Visor universal (imágenes con zoom, video/audio HTML5, PDF embebido, texto/código con botón de copia, y QR móvil). * **GET** `/d/{id}`: Descarga directa forzada (`attachment`). * **GET** `/raw/{id}`: Visualización directa en el navegador (`inline`). * **GET** `/qr/{id}`: Código QR dinámico en PNG (256x256). * **DELETE** `/api/shares/{id}`: Eliminación manual de archivos por su propietario. * **Consume:** * **WebControl (Auth):** `https://api.siax-system.net/api/auth/login` para autenticación de cuentas internas Telcotronics. * **Google OAuth2:** Flujo de login con cuentas Google (`/auth/google`). **Módulos Disponibles:** * **Módulo de Subida y Streaming:** Recepción de multipart y almacenamiento local con generación de slug corto. (✅ Operativo) * **Visor Universal:** Interfaz interactiva adaptativa según el MIME type. (✅ Operativo) * **Purga Automática 24h:** Goroutine en segundo plano que limpia archivos y sesiones guest expiradas. (✅ Operativo) * **Gestor de Cuentas y Mis Archivos:** Panel para usuarios registrados con métricas de visitas y descarga. (✅ Operativo) **Dónde buscar más información:** * Documentación técnica del proyecto: `siax-amd:/home/pablinux/Projects/GO/app_compartir/agents.md`. --- ### sistema-gimnasio — Sistema de Administración para Gimnasio (SOCIOS) Panel web de administración de gimnasios en el ecosistema SIGMA (frente 3 — Panel Admin SOCIOS). Staff del gimnasio gestiona miembros, membresías, pagos, visitas, cajas, inventario de items y ventas. SPA Vue 2 + Vuetify 2 con tema oscuro. Consume dos APIs del ecosistema: `API-SIGMA-WEBCONTROL` para autenticación y `API-SIGMA-CLOUD` para todos los datos de negocio. | Parámetro | Valor | |-----------|-------| | Repositorio Git | `https://github.com/telcotronics/sistema-gimnasio.git` | | Tecnología principal | Vue.js 2.5 + Vuetify 2.7 (Options API) + Webpack 3 | | Responsable | pablinux | | Estado actual | 🚧 En desarrollo activo — migración a API-SIGMA-CLOUD en curso (~98% completado) | | Equipo / código local | `siax-amd` (`192.168.10.100`) — `/home/pablinux/Projects/Node/sistema-gimnasio` | | Servidor de producción | `Servidor-web` CT 150 (`192.168.10.109`) | | Directorio deploy | `/var/www/web_gimnasio/public_html/` | | Dominio público | `[pendiente]` | | Puerto | 8080 (dev) / 80-443 (prod vía Apache) | | Última actualización | 2026-06-08 | **BDs que usa:** No interactúa con BD directamente. Enruta al tenant del gimnasio vía `?db=[nombre_bd]` en cada request a `API-SIGMA-CLOUD`. **Servicios que consume:** | Servicio | URL | Autenticación | Propósito | |---------|-----|---------------|-----------| | API-SIGMA-WEBCONTROL | `https://api.siax-system.net` | Pública | Auth: `POST /api/auth/empresas` (pre-login) + `POST /api/auth/login` → devuelve JWT + apiKey | | API-SIGMA-CLOUD | `https://api-gateway-cloud.telcotronics.net` | `x-api-key` + `Bearer JWT` + `?db=` | Todos los datos de negocio — miembros, membresías, pagos, cajas, clientes, items, ventas | | WebSocket ChatBot | `ws://[host]/chat` | Ninguna | Módulo de chat interno | | API_CENTINEL_SECURITY | `https://api.telcotronics.com` | `x-api-key` | Control de acceso Hikvision — CRUD usuarios en dispositivo, apertura remota de puertas | **Flujo de autenticación:** 1. `POST api.siax-system.net/api/auth/empresas` `{email, paswd}` → lista de empresas del usuario 2. Si una empresa: login directo. Si varias: usuario selecciona. 3. `POST api.siax-system.net/api/auth/login` `{email, paswd, dba}` → `{token, apiKey, db_tenant, usuario}` 4. Requests posteriores a API-SIGMA-CLOUD llevan: `x-api-key`, `Authorization: Bearer {token}`, `?db={db_tenant}` **Módulos disponibles:** | Módulo | Ruta | Estado | |--------|------|--------| | Autenticación / Sesión | `/login` | ✅ Operativo — login vía WebControl (`api.siax-system.net`) | | Miembros | `/crud_miembros_card` | ✅ Migrado — `api/clientes/miembros` | | Membresías / Planes | `/crud_membresia_card` | ✅ Migrado — `api/clientes/tipos-membresia` (CRUD completo) | | Clientes | `/clientes` | ✅ Migrado — `api/clientes/verClientesJsonApp` + `consulta_clientesApps` | | Dashboard | `/` | 🚧 Datos hardcodeados — sin conectar a API | | Pagos | `/pagos` | ✅ Migrado — `api/panel/pagos/transacciones` (lista + registro) | | Visitas | `/visitas` | ✅ Migrado — `api/visitas` (lista + registro miembro/ocasional + áreas) | | Cajas | `/caja_apertura` | ⚠️ Pendiente — endpoints SOL-04/05 pendientes en backend | | Usuarios | `/usuarios` | ✅ Migrado — `api/panel/usuarios` (CRUD completo, baja lógica) | | Ventas | `/venta` | 🚧 UI lista — `handleSave` sin implementar | | Inventario | `/inventario` | 🚧 UI lista — sin backend | | CXC / Abonos | `/cxc`, `/abonos` | ❌ Placeholders — sin implementar | | Config. Áreas | `/admin-areas` | ✅ Migrado — `api/localizacion/areas` (CRUD + inactivar) | | Config. Empresa | `/configurar` | ✅ Migrado — `api/empresa/datos` GET/PUT. RUC solo lectura. | | Chat | `/chat` | ⚠️ WebSocket funcional — envío con URL PHP hardcodeada | | Control de Acceso | `/sincronizar` | 🚧 UI lista — conectar a `API_CENTINEL_SECURITY` (`api.telcotronics.com/api/devices/{id}/users`) | **Integración con el ecosistema:** - Auth vía `API-SIGMA-WEBCONTROL` (`api.siax-system.net`) — el apiKey devuelto en login es válido para API-SIGMA-CLOUD. - Datos vía `API-SIGMA-CLOUD` — multi-tenant por `?db=` y validación de `x-api-key` contra `webControl.api_key` (.149). - El `/login` en `api-gateway-cloud.telcotronics.net/api/auth` es LEGACY (viene del monolito `app.factura-e.net`) — no usar. **Más información:** `siax-amd:/home/pablinux/Projects/Node/sistema-gimnasio/agents.md` --- ### audio_control — Panel de Control Remoto de Audio (SoundWave) Backend de la app **SoundWave**. Permite controlar la reproducción de audio de forma remota desde el navegador o dispositivos móviles: reproduce archivos MP3 locales con `ffplay`, descarga audio de YouTube, gestiona una playlist en MySQL, actúa como MediaRenderer DLNA/UPnP en la red local y autentica usuarios con Google OAuth 2.0 + JWT. Desplegado y activo en producción en `server-webaps` (CT 132 en `192.168.10.160`) bajo supervisión de systemd. | Parámetro | Valor | |---|---| | Repositorio Git | `https://git.telcotronics.net/pablinux/audio_control.git` | | Tecnología principal | Node.js (Express 4) + Socket.IO + MariaDB + DLNA/UPnP + ffplay + EJS | | Responsable | pablinux | | Estado actual | ✅ Activo / Desplegado en producción | | Equipo / ubicación local | `siax-amd` (`192.168.10.100`) — `/home/pablinux/Projects/Node/audio_control` | | Servidor de producción | `server-webaps` CT 132 (`192.168.10.160`) — `/home/user_apps/apps/audio_control` | | Dominio público | `musica.sigmac.app` (vhost activo en .160; enrutamiento WAN sujeto a proxy en .109 / NAT) | | Puerto | `4005` (dev: `4000`) | | Servicio systemd | `siax-app-AUDIO_CONTROL.service` (activo) | | Registro MCP | Servicio ID `15` en `http://192.168.10.160:3006` | | Última actualización | 2026-09-24 | **BD que usa:** | BD | Host | Motor | Uso | |----|------|-------|-----| | `AUDIO_CTRL` | `192.168.10.149` | MariaDB 10.11 | `users` (usuarios Google OAuth), `rep_youtube` (playlist YouTube) | **Endpoints principales (para integración):** | Método | Endpoint | Auth | Descripción | |--------|----------|------|-------------| | POST | `/control/audio/play` | `verificarJWT` | Reproduce archivo MP3 local con `ffplay` y emite `player:status`. Body: `{ file: "ruta/relativa" }` | | POST | `/control/audio/stop` | `verificarJWT` | Detiene `ffplay` activo y emite `player:status` | | POST | `/control/youtube/download` | `verificarJWT` | Descarga audio de YouTube como MP3 con validación regex anti-SSRF. Body: `{ url: "..." }` | | GET | `/api/youtube-playlist` | — | Lista playlist YouTube (últimas 50 de MySQL) | | POST | `/api/youtube-playlist/add` | — | Agrega video a playlist | | GET | `/api/mp3-files` | — | Lista archivos MP3 en `public/files/mp3/` | | POST | `/api/auth/google` | — | Auth Google OAuth 2.0 → JWT propio | | GET | `/api-docs` | — | Swagger UI | | WS | Socket.IO | — | Eventos `player:status` y ajuste de `player:volume` bidireccional | **Servicios que consume:** | Servicio | Uso | |---------|-----| | `ffplay` / `amixer` (sistema Linux) | Reproducción de audio local y control de volumen hardware | | YouTube (internet) vía `@distube/ytdl-core` | Descarga de audio | | Google OAuth 2.0 API | Verificación de tokens de usuario | | Bitácora Centralizada de Errores | `POST https://api.siax-system.net/api/errores` (`app_origen: audio_control`) | **Integración con el ecosistema:** - Conectado a la bitácora centralizada de errores (`siax-system.net`) - Sincronizado en tiempo real vía WebSockets para pantallas y controles múltiples - Potencial: integrar con `sigma-robot` para notificaciones de estado vía WhatsApp **Dónde buscar más información:** `siax-amd:/home/pablinux/Projects/Node/audio_control/agents.md` --- ### SoundWave — Reproductor de Música Personal PWA Webapp PWA de streaming de música personal dentro del ecosistema Telcotronics. El usuario se autentica con Google y accede a una biblioteca de música compartida alojada en el servidor. Funciona en cualquier dispositivo con navegador (teléfono, Android del carro, tablet, PC) sin anuncios y sin suscripciones. En producción corre como un monolito Express (puerto 2005) que sirve tanto la API como los estáticos de la PWA (`dist/`). Incluye un panel integrado para descargar música directamente desde YouTube a MP3 (320 kbps con metadatos) utilizando `yt-dlp`. | Parámetro | Valor | |---|---| | Repositorio Git | `https://git.telcotronics.net/pablinux/audio-player.git` | | Tecnología principal | Vue 3 + Vite 7 (PWA) / Node.js (Express) + MongoDB | | Responsable | pablinux | | Estado actual | 🟢 Activo en producción | | Equipo / ubicación local | `siax-amd` (`192.168.10.100`) — `/home/pablinux/Projects/Node/audio-player` | | Servidor de producción | `server-webaps` (CT 132 en `192.168.10.160`) — `/home/user_apps/apps/audio-player` | | Dominio público | En configuración (subdominio planificado: `soundwave.telcotronics.net` / `music.telcotronics.net` con SSL) | | Puerto backend / prod | `2005` (Express monolito) | | Puerto frontend (dev) | `3000` | | Servicio systemd | `siax-app-soundwave.service` (activo) | | Monitor SIAX | Registrado y supervisado en SIAX Monitor (`http://192.168.10.160:8080`) | | MCP Infraestructura | Registrado y activo como Aplicación ID **13** (`category: 'application'` per Feedback #12 · `http://192.168.10.160:3006/sse`) | | Centro de Agentes (sigma-robot) | Registrado y activo como **`Agente SoundWave`** (ID: **37**) en `https://sigma-bot.telcotronics.com` | | Despliegue | Script `./desplegar.sh` (build Vite + rsync + npm install + systemctl restart) | | Última actualización | 2026-09-30 | **BD que usa:** | BD | Host | Motor | Uso | |----|------|-------|-----| | `soundwave` | `192.168.10.146:27017` | MongoDB (CT 102) | Usuarios registrados — name, email, picture, provider, providerId | **Endpoints principales (para integración):** | Método | Endpoint | Auth | Descripción | |--------|----------|------|-------------| | POST | `/api/auth/login` | no | Valida email/password contra API-SIGMA-WEBCONTROL (:3002) → upsert MongoDB → devuelve JWT | | POST | `/api/auth/webcontrol` | no | Alias de `/api/auth/login` | | POST | `/api/auth/google` | no | Verifica Google ID token → upsert usuario MongoDB → devuelve JWT | | POST | `/api/auth/facebook` | no | Verifica FB accessToken → upsert usuario MongoDB → devuelve JWT | | GET | `/api/music/folders` | JWT | Árbol completo de carpetas y archivos de música | | GET | `/api/music/search?q=` | JWT | Búsqueda recursiva por nombre | | GET | `/api/music/stream/*ruta` | JWT (`?token=`) | Streaming de audio con Range requests (seek) | | GET | `/api/music/download/*ruta` | JWT (`?token=`) | Descarga de archivo al dispositivo | | POST | `/api/music/upload` | JWT | Sube archivo de música (multipart, límite 200 MB) | | POST | `/api/music/folder` | JWT | Crea carpeta | | PATCH | `/api/music/rename` | JWT | Renombra carpeta o archivo (preserva extensión) | | DELETE | `/api/music/item` | JWT | Elimina carpeta o archivo recursivamente (protege raíz) | | POST | `/api/music/youtube/search` | JWT | Busca videos en YouTube o consulta URL directa | | POST | `/api/music/youtube/download` | JWT | Descarga audio YT a MP3 320kbps con metadatos a `server/cloud/` | > **Nota:** El JWT se acepta en header `Authorization: Bearer {token}` Y en query param `?token=` — necesario para `