commit 6ea00e4ec5257a677be9045fe7a8f4418f7cb412 Author: pablinux Date: Mon Oct 12 19:28:02 2026 -0500 docs: inicializar estructura de documentacion de agentes diff --git a/.agente/ideas.md b/.agente/ideas.md new file mode 100644 index 0000000..2b70431 --- /dev/null +++ b/.agente/ideas.md @@ -0,0 +1,17 @@ +# ideas.md — Ideas y posibilidades + +> Especulativo — "podría ser interesante si...". Sin compromiso. +> Cuando una idea se aprueba y se decide que debe hacerse, moverla a `objetivos.md`. +> Cuando una idea pasa directamente a ejecución, moverla a `proyecto_memoria.md`. + +--- + +## Ideas pendientes + +_(anota aquí las ideas con algo de forma)_ + +--- + +## Ideas en borrador + +_(anota aquí lo que se te ocurra, sin filtro)_ diff --git a/.agente/infraestructura.md b/.agente/infraestructura.md new file mode 100644 index 0000000..2a0c20b --- /dev/null +++ b/.agente/infraestructura.md @@ -0,0 +1,2737 @@ +# 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: `audiocontrol.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 | 🟡 En mantenimiento / primer deploy | Servidor central de backup cifrado y consolas web. Puerto 3000 en 192.168.10.136. MCP ID: 12. | +| **cloud-sync-clients** | [sin remoto aún — siax-amd] | Rust 2021 + Axum 0.7 + Tokio + aes-gcm + zstd | pablinux | 🟡 En desarrollo activo | Clientes server-to-server (Linux/Windows) para respaldo y cifrado local hacia cloud-sync. UI local :3001. MCP ID: 21. | + + +--- + +--- + +## 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 | + +--- + +### 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) + 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 | `audiocontrol.sigmac.app` (pendiente virtualhost/SSL en .160) | +| 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-23 | + +**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` | — (pendiente JWT) | Reproduce archivo MP3 local con `ffplay`. Body: `{ file: "ruta/relativa" }` | +| POST | `/control/audio/stop` | — (pendiente JWT) | Detiene `ffplay` activo | +| POST | `/control/youtube/download` | — | Descarga audio de YouTube como MP3. 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 | + +**Servicios que consume:** + +| Servicio | Uso | +|---------|-----| +| `ffplay` (sistema — parte de `ffmpeg`) | Reproducción de audio local | +| YouTube (internet) vía `@distube/ytdl-core` | Descarga de audio | +| Google OAuth 2.0 API | Verificación de tokens de usuario | + +**Integración con el ecosistema:** +- Independiente actualmente — no consume APIs internas del ecosistema +- 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 `