Panel generadores.ar

Panel de administracion interno para KOR Generadores

Acceso

URLpanel.generadores.ar
AuthGoogle OAuth2 (solo ivankorzy@gmail.com)
Repogithub.com/ivankorzy25/panel-generadores (privado)

Stack Tecnologico

Frontend

  • React 19 + TypeScript
  • Vite 6 (build)
  • Tailwind CSS 3
  • React Router 7
  • Recharts 2 (graficos)
  • Lucide React (iconos)

Backend / API

  • Cloudflare Workers
  • TypeScript + Wrangler 3
  • JWT (HS256) en cookies HttpOnly
  • Cloudflare REST + GraphQL API

Herramientas Disponibles

ToolRutaDescripcion
Barrios/tools/barrios440+ barrios privados CABA/GBA con tracking, export CSV/KML
Contactos/tools/contactosCRM unificado: 2,834 contactos de StelOrder, WhatsApp, Odoo, ERPNext
OpenClaw AI/tools/openclawChat IA con Kimi K2.5 via Ollama
ML Publisher/tools/ml-publisherPublicador MercadoLibre con IA
Notas/tools/notasNotas rapidas estilo Google Keep (localStorage)
Anura Central/tools/anuraCentral telefonica cloud: llamadas, perdidas, grabaciones, bloqueo
Bot STEL/tools/botstelDashboard unificado STEL Order + ERPNext
AWS EC2/tools/awsMonitoreo EC2: CPU, RAM, disco, Docker, creditos
ERPNext/tools/erpnextERP completo: productos, ventas, stock, contabilidad
Docs/tools/docsEsta documentacion

Infraestructura

ModuloRutaDescripcion
DNS/dnsGestion de registros DNS en Cloudflare
Workers/workersLista de Cloudflare Workers
Pages/pagesProyectos Cloudflare Pages
Cache/cachePurgar cache por URL o completo

Ultima actualizacion: 13 de marzo 2026

Arquitectura

Como esta armado el sistema

Diagrama General

Usuario (browser)
    |
    v
panel.generadores.ar (Cloudflare Pages - React SPA)
    |
    v  /api/*
panel-api (Cloudflare Worker)
    |
    +---> Cloudflare API (DNS, Analytics, Workers, Pages, Cache)
    +---> Google OAuth2 (autenticacion)
    +---> aws.generadores.ar/health (monitoreo EC2)
    +---> Servicios internos via Cloudflare Tunnel
              |
              +---> 192.168.100.10:8097 (anura-bot)
              +---> 192.168.100.10:8098 (server-health)
              +---> ERPNext, Bot STEL, etc.

Estructura del Proyecto

panel-generadores/
├── frontend/
│   ├── src/
│   │   ├── App.tsx              # Rutas
│   │   ├── components/
│   │   │   ├── Layout.tsx       # Layout principal
│   │   │   ├── Sidebar.tsx      # Navegacion lateral
│   │   │   └── ...              # Charts, tables, cards
│   │   ├── pages/               # Una pagina por herramienta
│   │   │   ├── AWS.tsx
│   │   │   ├── Anura.tsx
│   │   │   ├── Barrios.tsx
│   │   │   └── ...
│   │   ├── hooks/               # useAuth, useCFAnalytics
│   │   └── lib/api.ts           # Cliente API
│   ├── package.json
│   └── vite.config.ts
├── worker/
│   ├── src/index.ts             # Todos los endpoints
│   └── wrangler.toml            # Config CF Worker
├── CLAUDE.md                    # Documentacion para IA
└── package.json                 # Monorepo root

Cloudflare Tunnel

Tunnel kor-generadores conecta servicios locales (192.168.100.10) con dominios publicos via Cloudflare.

DominioServicioPuerto
aws.generadores.arserver-health8098
anura.generadores.aranura-bot8097
erpnext.generadores.arERPNext8080

Servicios Docker en EC2

ServicioPuertoDescripcion
server-health8098Health check del servidor (CPU, RAM, disco, Docker)
anura-bot8097Monitoreo Anura con polling y dashboard
cloudflared-Tunnel Cloudflare para exponer servicios

Ultima actualizacion: 13 de marzo 2026

Deploy

Como desplegar cambios al panel

Frontend (Cloudflare Pages)

cd frontend
npm run build
CLOUDFLARE_API_KEY=$CF_API_KEY CLOUDFLARE_EMAIL=ivankorzy@gmail.com \
  npx wrangler pages deploy dist --project-name=panel-generadores

Worker / API (Cloudflare Workers)

cd worker
CLOUDFLARE_API_KEY=$CF_API_KEY CLOUDFLARE_EMAIL=ivankorzy@gmail.com \
  npx wrangler deploy

Git (backup)

# Despues de cada cambio
git add -A
git commit -m "descripcion del cambio"
git push origin main

Flujo Completo Recomendado

  1. Hacer cambios en el codigo
  2. npm run build - verificar que compila sin errores
  3. git diff - verificar que no se quito nada existente
  4. git commit - guardar backup
  5. Desplegar worker (si hubo cambios en API)
  6. Desplegar frontend
  7. git push - subir a GitHub

Servicios Docker (servidor local)

# SSH al servidor
ssh ivan@192.168.100.10

# Rebuild de un servicio
cd /ruta/al/servicio
docker compose up -d --build

Configuracion Cloudflare

Zone ID1be80aaf510341ea8ff0713fdf8dd267
Account IDdae7c94b2e08aea997c40a64d047bd08
Workerpanel-api
Pages projectpanel-generadores
Docs projectdocs-generadores

Ultima actualizacion: 13 de marzo 2026

Barrios Privados

Base de datos de 440+ barrios y countries de CABA y GBA

Funcionalidades

  • Listado completo con busqueda y filtros por zona
  • Tracking de estado comercial (contactado, interesado, cliente, etc.)
  • Export CSV y KML (para Google Maps/Earth)
  • Integracion con Google Maps para ubicacion
  • Datos: nombre, direccion, localidad, zona, contacto, telefono, email

Acceso

Panel/tools/barrios
Componentefrontend/src/pages/Barrios.tsx

Ultima actualizacion: 13 de marzo 2026

Contactos CRM

2,834 contactos unificados de multiples fuentes

Fuentes de Datos

  • StelOrder - Clientes del sistema de facturacion
  • WhatsApp - Contactos de conversaciones
  • Odoo - CRM anterior
  • ERPNext - ERP actual

Funcionalidades

  • Busqueda por nombre, empresa, telefono, email
  • Filtros por fuente de datos
  • Chat con IA para consultas sobre contactos
  • Vista unificada sin duplicados

Acceso

Panel/tools/contactos
Componentefrontend/src/pages/Contactos.tsx

Ultima actualizacion: 13 de marzo 2026

OpenClaw AI

Asistente IA con Kimi K2.5 via Ollama

Funcionalidades

  • Chat conversacional con modelo Kimi K2.5
  • Integracion con WhatsApp y Telegram
  • AWS Gateway para acceso remoto
  • Contexto personalizado para generadores.ar

Infraestructura

  • Modelo: Kimi K2.5 (via Ollama Cloud)
  • Gateway: AWS API Gateway
  • Canales: Web, WhatsApp, Telegram

Acceso

Panel/tools/openclaw
Componentefrontend/src/pages/OpenClaw.tsx

Ultima actualizacion: 13 de marzo 2026

ML Publisher

Publicador inteligente para MercadoLibre

Funcionalidades

  • Generacion automatica de publicaciones con IA
  • Respuestas automaticas a preguntas de compradores
  • Sincronizacion de precios desde ERPNext
  • Gestion de stock y variantes

Acceso

Panel/tools/ml-publisher
Componentefrontend/src/pages/MLPublisher.tsx

Ultima actualizacion: 13 de marzo 2026

Notas Rapidas

Notas estilo Google Keep con almacenamiento local

Funcionalidades

  • Crear, editar y eliminar notas
  • Colores personalizados por nota
  • Fijar notas importantes (pin)
  • Busqueda por contenido
  • Vista grilla o lista

Almacenamiento

Las notas se guardan en localStorage del navegador. No hay backend ni sincronizacion entre dispositivos.

Acceso

Panel/tools/notas
Componentefrontend/src/pages/Notas.tsx

Ultima actualizacion: 13 de marzo 2026

Anura Central

Central telefonica cloud PBX argentina

Funcionalidades

  • Historial - Todas las llamadas con fecha, hora, numeros, duracion, precio en ARS, grabaciones
  • Perdidas - Llamadas no atendidas (estados CANCEL, NO ANSWER)
  • Cuentas - Cuentas Anura activas con extensiones
  • Agenda - Contactos de la central
  • Bloqueados - Bloqueo de numeros no deseados por cuenta
  • Log - Registro de actividad del bot
  • Filtros por rango de fecha (Desde/Hasta)

API Anura

Base URLhttps://api.anura.com.ar/GCAPI/rest
SSOhttps://sso.anura.com.ar/auth/realms/anura/protocol/openid-connect/token
AuthOAuth2 (refresh_token → access_token)
HeaderAnura-AccountId requerido para endpoints por cuenta
CDR dialTimeEpoch en milisegundos (ej: 1773407712796)
Swaggerhttps://api.anura.com.ar:443/GCAPI/docs/swagger_ar_prod.json

Microservicio (anura-bot)

UbicacionD:\1000-IA LOCAL\anura-bot\
Servidor192.168.100.10:8097
StackFastAPI + APScheduler + Docker
Dominioanura.generadores.ar (via tunnel)

Archivos clave

  • app.py - Backend FastAPI con polling de CDRs y endpoints
  • anura_api.py - Cliente OAuth2 para la API de Anura
  • templates/index.html - Dashboard HTML con tabs
  • docker-compose.yml - Config Docker (puerto 8097:8000)

Acceso

Panel/tools/anura
Componentefrontend/src/pages/Anura.tsx

Ultima actualizacion: 13 de marzo 2026

Bot STEL

Dashboard unificado STEL Order + ERPNext

Funcionalidades

  • Integracion STEL Order y ERPNext
  • Reportes unificados
  • Chat IA para consultas
  • Gestion de proyectos
  • Cache inteligente
  • Puente con Odoo

Acceso

Panel/tools/botstel
Componentefrontend/src/pages/BotStel.tsx

Ultima actualizacion: 13 de marzo 2026

AWS EC2

Monitoreo en tiempo real de la instancia EC2

Metricas

  • Creditos - Saldo restante, costo/hora, costo/dia, fecha estimada de agotamiento
  • CPU - Load average 1m/5m/15m, cantidad de cores
  • RAM - Total, usada, disponible, porcentaje con barra de progreso
  • Swap - Total, usado, porcentaje
  • Disco - Total, usado, libre, porcentaje
  • Docker - Tabla con todos los containers (nombre, estado, imagen, CPU, memoria, red)
  • Instancia - ID, tipo, region, IP, disco, AMI, key pair, uptime, boot time

Instancia EC2

IDi-00de61555b63eddf5
Tipot3.small (2 vCPU, 2 GB RAM)
Regionsa-east-1 (Sao Paulo)
IP18.231.111.36
Disco30 GB gp3
OSUbuntu 24.04 LTS
Creditos$100 USD @ $0.026/hr (desde 2026-03-13)

Microservicio (server-health)

UbicacionD:\1000-IA LOCAL\server-health\
Servidor192.168.100.10:8098
StackFastAPI + Docker (python:3.12-slim)
Dominioaws.generadores.ar (via tunnel)
EndpointGET /health

Como funciona

  • Lee /host/proc (montado desde el host) para uptime, CPU load, memoria
  • Ejecuta docker stats y docker ps via socket montado
  • Calcula creditos AWS restantes basado en horas transcurridas

Cadena de datos

panel.generadores.ar/tools/aws (React)
  → Worker /api/aws/health
    → aws.generadores.ar/health (Cloudflare Tunnel)
      → 192.168.100.10:8098 (server-health container)
        → /host/proc + docker stats

Auto-refresh

La pagina se actualiza automaticamente cada 60 segundos. Tambien tiene boton de refresh manual.

Acceso

Panel/tools/aws
Componentefrontend/src/pages/AWS.tsx
LinksERPNext, Console AWS, Billing AWS

Ultima actualizacion: 13 de marzo 2026

ERPNext

ERP completo en AWS

Funcionalidades

  • Gestion de productos y stock
  • Ventas y facturacion
  • Contabilidad
  • CRM integrado
  • Webshop (v16)

Acceso

Panel/tools/erpnext
Directoerpnext.generadores.ar
Componentefrontend/src/pages/ERPNext.tsx

Ultima actualizacion: 13 de marzo 2026

DNS

Gestion de registros DNS en Cloudflare

Funcionalidades

  • Listar todos los registros DNS del dominio generadores.ar
  • Editar registros existentes (tipo, nombre, contenido, TTL, proxy)
  • Eliminar registros

API

EndpointMetodoDescripcion
/api/dns/recordsGETListar registros
/api/dns/records/:idPUTEditar registro
/api/dns/records/:idDELETEEliminar registro

Acceso

Panel/dns
Componentefrontend/src/pages/DNS.tsx

Ultima actualizacion: 13 de marzo 2026

Workers

Cloudflare Workers activos

Funcionalidades

  • Lista de todos los Workers desplegados en la cuenta
  • Informacion de cada worker: nombre, estado, fecha de creacion

Acceso

Panel/workers
Componentefrontend/src/pages/Workers.tsx

Ultima actualizacion: 13 de marzo 2026

Pages

Proyectos Cloudflare Pages

Funcionalidades

  • Lista de todos los proyectos Pages desplegados
  • Informacion: nombre, URL, ultimo deploy, estado

Proyectos Activos

  • panel-generadores - Este panel (panel.generadores.ar)
  • docs-generadores - Esta documentacion (docs.generadores.ar)

Acceso

Panel/pages
Componentefrontend/src/pages/Pages.tsx

Ultima actualizacion: 13 de marzo 2026

Cache

Gestion de cache en Cloudflare

Funcionalidades

  • Purgar todo - Limpiar toda la cache del dominio
  • Purgar URLs - Limpiar cache de URLs especificas (max 30)

API

EndpointMetodoDescripcion
/api/cache/purge-allPOSTPurgar toda la cache
/api/cache/purge-urlsPOSTPurgar URLs (body: {urls: [...]})

Acceso

Panel/cache
Componentefrontend/src/pages/Cache.tsx

Ultima actualizacion: 13 de marzo 2026

Cloudflare Tunnel

Conexion segura entre servicios locales y dominios publicos

Tunnel Info

Nombrekor-generadores
ID7e2b91c9-bdcf-4b7d-98a8-909098eb3007
Servidor192.168.100.10 (ivan@)

Rutas Configuradas

HostnameServicio
aws.generadores.arhttp://localhost:8098
anura.generadores.arhttp://localhost:8097
erpnext.generadores.arhttp://localhost:8080

Config DNS

Cada hostname necesita un CNAME apuntando al tunnel:

CNAME  aws.generadores.ar    → 7e2b91c9-bdcf-4b7d-98a8-909098eb3007.cfargotunnel.com
CNAME  anura.generadores.ar  → 7e2b91c9-bdcf-4b7d-98a8-909098eb3007.cfargotunnel.com
CNAME  erpnext.generadores.ar → 7e2b91c9-bdcf-4b7d-98a8-909098eb3007.cfargotunnel.com

Gestion

# Ver estado
ssh ivan@192.168.100.10 "docker ps | grep cloudflared"

# Reiniciar
ssh ivan@192.168.100.10 "docker restart cloudflared"

# Ver config
ssh ivan@192.168.100.10 "cat /etc/cloudflared/config.yml"

Ultima actualizacion: 13 de marzo 2026

Autenticacion

Google OAuth2 + JWT

Flujo de Login

  1. Usuario hace click en "Iniciar sesion con Google"
  2. Frontend redirige a POST /api/auth/login
  3. Worker redirige a Google OAuth consent screen
  4. Google redirige a GET /api/auth/callback con code
  5. Worker intercambia code por tokens, verifica email
  6. Crea JWT (HS256) y lo guarda en cookie session (HttpOnly, Secure, SameSite=Lax)
  7. Redirige a /

Restriccion

Solo se permite el email ivankorzy@gmail.com. Cualquier otro email es rechazado.

Verificacion

Todos los endpoints (excepto auth) verifican el JWT de la cookie antes de procesar. Si no hay JWT o es invalido, retorna 401 Unauthorized.

Secrets (wrangler)

  • CF_API_KEY - API key de Cloudflare
  • GOOGLE_CLIENT_ID - OAuth client ID
  • GOOGLE_CLIENT_SECRET - OAuth client secret
  • JWT_SECRET - Clave para firmar JWTs

Ultima actualizacion: 13 de marzo 2026

API Endpoints

Worker: panel-api (panel-api.ivankorzy.workers.dev)

Autenticacion

MetodoEndpointAuthDescripcion
POST/api/auth/loginNoInicia OAuth Google
GET/api/auth/callbackNoCallback OAuth
GET/api/auth/meNoInfo usuario actual
POST/api/auth/logoutNoCerrar sesion

Analytics

MetodoEndpointParamsDescripcion
GET/api/analytics/traffic?period=24h|7d|30dRequests, visitors, bandwidth, threats, timeseries
GET/api/analytics/countries-Trafico por pais
GET/api/analytics/pages-Top paginas
GET/api/analytics/status-codes-Distribucion HTTP status

DNS

MetodoEndpointDescripcion
GET/api/dns/recordsListar todos los registros
PUT/api/dns/records/:idEditar registro
DEL/api/dns/records/:idEliminar registro

Workers & Pages

MetodoEndpointDescripcion
GET/api/workers/listListar Workers
GET/api/pages/listListar Pages

Cache

MetodoEndpointBodyDescripcion
POST/api/cache/purge-all-Purgar todo
POST/api/cache/purge-urls{urls: [...]}Purgar URLs (max 30)

AWS

MetodoEndpointDescripcion
GET/api/aws/healthHealth check EC2 (proxied via aws.generadores.ar)

Ultima actualizacion: 13 de marzo 2026