Commit Graph

184 Commits

Author SHA1 Message Date
Jonas Pacheco 5d9c034a42 chore: organiza documentação na pasta docs/
Move 27 arquivos .md da raiz para docs/:
- AGENTS.md
- ARCADIA_AUDIT_EXECUCAO.md
- AUDITORIA_XOS_v1.0.md
- AVALIACAO_IMPACTO_GEOLOGIA.md
- CLAUDE.md
- DEPLOY_COOLIFY.md
- DOCUMENTATION.md
- HOSPEDAGEM.md
- INTEGRACAO_IA.md
- MAPA_*.md (10 arquivos)
- PLANO_*.md (5 arquivos)
- RELATORIO_TECNICO_RETAIL.md
- REQUISITOS_TECNICOS_ARCADIA.md
- replit.md

Mantém na raiz apenas README.md
2026-04-09 10:09:01 -03:00
Jonas Pacheco e27f2998e5 feat: adiciona pré-compressão gzip no build
- Instala vite-plugin-compression2 para gerar .gz no build
- Configura Express para servir arquivos .gz quando disponível
- Reduz transferência em ~70% para assets principais

Agent.js: 33KB → 9.9KB (gzip)
index.js: 348KB → 108KB (gzip)
2026-04-09 09:20:05 -03:00
Jonas Pacheco 58efb8c95c fix: reativa gzip no Express com threshold de 1KB
Caddy/Traefik não estavam comprimindo os assets.
Reativando gzip no Express com threshold de 1KB
para garantir compressão de todos os arquivos JS/CSS.
2026-04-09 09:12:41 -03:00
Jonas Pacheco cfb60b2d4b fix: remove gzip do Express para evitar conflito com Traefik
O Traefik (coolify-proxy) já gerencia o gzip compression.
Removendo do Express para evitar conflito e dupla compressão.
2026-04-09 09:07:51 -03:00
Jonas Pacheco 4dcecd3e63 perf: otimizações agressivas de bundle e carregamento
- Configura manualChunks no Vite: vendor, ui, charts, export
- Agent.tsx: de 893KB → 33KB (redução de 96%)
- Charts e export libs: carregamento lazy sob demanda
- Adiciona modulepreload hints automáticos no HTML
- Gzip compression ativado no Express

Resultado: Carregamento inicial ~10x mais rápido
2026-04-08 15:40:24 -03:00
Jonas Pacheco a167d9aaef perf: adiciona gzip compression e otimiza carregamento
- Adiciona middleware compression para servir assets gzipados
- Configura cache de 1 ano para assets estáticos (hash no filename)
- Remove imports pesados do Agent.tsx (jspdf, docx, recharts)
- Cria ChartRenderer com lazy loading para gráficos
- Cria export-utils com dynamic imports para PDF/Word/CSV

Reduz o chunk Agent de 893KB para 690KB (gzip 220KB).
2026-04-08 15:38:16 -03:00
Jonas Pacheco 6bd0ea6d4f chore: remove baseUrl deprecated do tsconfig.json
Remove a opção baseUrl que está obsoleta no TypeScript 5.0+.
Os paths @/* e @shared/* continuam funcionando normalmente
com moduleResolution: bundler.
2026-04-08 15:27:04 -03:00
Jonas Pacheco b037512250 fix: resolve loading infinito na navegação entre módulos
- Adiciona ErrorBoundary para capturar erros do React.lazy()
- LoadingFallback com timeout: aviso aos 3s, erro aos 10s
- Atualiza documentação (SPEC_NAVBAR.md, AGENTS.md)

O Suspense não captura falhas no lazy loading. Agora o ErrorBoundary
envolve o Suspense e exibe UI de fallback quando há erros.
2026-04-08 15:25:28 -03:00
Jonas Pacheco 317926f600 docs: adiciona seção de otimização .dockerignore no DEPLOY_COOLIFY.md
- Documenta estrutura atual do .dockerignore
- Explica o que é excluído vs incluído
- Mostra métricas de melhoria (5GB → 93MB)
- Adiciona alerta sobre assets necessários para build
2026-04-08 14:00:46 -03:00
Jonas Pacheco 2222e78999 fix: inclui attached_assets no contexto de build
- Remove attached_assets/ do .dockerignore (arquivos necessários para build)
- Mantém exclusão de docs/ e *.md
- O arquivo arcadia_suite_icon.png é necessário pelo BrowserFrame.tsx
2026-04-08 13:55:48 -03:00
Jonas Pacheco f623ee20d8 fix: otimiza .dockerignore para reduzir contexto de build
- Adiciona server/bi/metaset/superset-src/ ao .dockerignore (3.7GB)
- Adiciona server/bi/metaset/venv/ ao .dockerignore
- Remove arquivos desnecessários: docs, *.md, __pycache__, etc
- Reduz contexto de build de ~5GB para ~1GB
- Deve melhorar significativamente o tempo de deploy
2026-04-08 13:51:55 -03:00
Jonas Pacheco 1989928329 fix: remove dependência db/index do metaset-client
- Remove import de ../../db/index que quebrava o build
- Simplifica getAutoSuggestions para usar heurísticas em vez de schema query
- Mantém compatibilidade com API existente
2026-04-08 13:38:52 -03:00
Jonas Pacheco a6ac6e9dd9 docs: atualiza specs BI para refletir consolidação MetaSet
Atualiza documentação para refletir a migração Metabase → Apache Superset:

- docs/KERNEL_SPEC.md:
  - Adiciona capability 'embedding' ao MetaSet
  - Atualiza histórico de mudanças (v3.4)

- PLANO_BI_SUPERSET.md:
  - Reescrito como documentação de arquitetura consolidada
  - Adiciona estrutura de arquivos atualizada
  - Documenta API endpoints do novo cliente
  - Inclui exemplos de uso do cliente TypeScript

- MAPA_BI_ARCADIA.md:
  - Substitui todas referências Metabase → MetaSet
  - Atualiza portas: 8088 → 8100
  - Atualiza rotas: /metabase/* → /bi/metaset/*
  - Adiciona server/bi/metaset-client/ aos arquivos principais
2026-04-08 13:33:21 -03:00
Jonas Pacheco a7ecf0defb consolidate: MetaSet BI - migração Metabase → Apache Superset
- Cria novo cliente TypeScript em /server/bi/metaset-client/
  - index.ts: Cliente completo para API Superset v1
  - routes.ts: Rotas Express /api/bi/metaset/*

- Move código legado Metabase para /server/metaset/backup/
  - client.ts → backup/client.ts
  - routes.ts → backup/routes.ts

- Atualiza imports em:
  - server/autonomous/tools/metaset.ts
  - server/autonomous/tools/index.ts
  - server/manus/service.ts
  - server/bi/routes.ts

- Adiciona documentação consolidada em /server/metaset/README.md

Funcionalidades do novo cliente:
- Health check, Databases, Tables
- SQL queries com validação de segurança
- Charts (CRUD), Dashboards (CRUD)
- Guest tokens para embedding
- Auto-suggestions baseado em schema
2026-04-08 13:21:34 -03:00
Jonas Pacheco 95ee51bf68 docs: atualiza MAPA_SISTEMA_ARCADIA.md com Kernel (porta 5001)
- Adiciona porta 5001 (Arcadia Kernel) ao mapa de portas
- Documenta que Kernel roda no mesmo container da app
- Explica acesso via memória (Registry Global)
- Adiciona seção explicativa sobre o Kernel
2026-04-08 12:42:20 -03:00
Jonas Pacheco 9ec61dd932 docs: atualiza KERNEL_SPEC.md com Registry Global
- Atualiza versão para 3.3 (Produção)
- Documenta nova arquitetura com Registry Global
- Adiciona diagrama de fluxo de dados atualizado
- Documenta vantagens do acesso direto vs HTTP
- Atualiza roadmap da Semana 5
2026-04-08 12:34:44 -03:00
Jonas Pacheco bb7cff6c80 fix: Casa de Máquinas usa Registry global em vez de HTTP
O problema era que a Casa de Máquinas (porta 5000) não conseguia
conectar ao Kernel (porta 5001) via HTTP dentro do mesmo container.

Solução:
- Exporta o ServiceRegistry globalmente no server/index.ts
- Casa de Máquinas prioriza o Registry global (mesmo processo)
- Fallback para HTTP apenas se Registry global não disponível

Isso elimina a necessidade de loopback HTTP interno.
2026-04-08 12:27:21 -03:00
Jonas Pacheco da371af0e0 fix: tenta múltiplos hostnames para conectar ao Kernel
Tenta 127.0.0.1 e localhost para conectar ao Registry do Kernel.
Adiciona logs detalhados para debug.
2026-04-08 12:17:35 -03:00
Jonas Pacheco 524a049d03 fix: usa localhost em vez de 127.0.0.1 para conectar ao Kernel
No container Docker, 127.0.0.1 pode não resolver corretamente
para o próprio container. localhost é mais confiável.
2026-04-08 12:11:11 -03:00
Jonas Pacheco 71e2b654bd fix: resolve race condition entre Kernel e Casa de Máquinas
- Move início do Kernel ANTES do servidor HTTP (porta 5000)
- Adiciona retry com exponential backoff na consulta ao Registry
- Garante que Registry esteja pronto antes de receber requisições

Fixes: Casa de Máquinas mostrava 0/0 serviços porque API
chamava Registry antes do Kernel iniciar na porta 5001
2026-04-08 12:03:55 -03:00
Jonas Pacheco ea58a45ea1 fix(engine-room): usa http.get em vez de fetch
O fetch do Node.js estava falhando com loopback.
Trocado para http.get nativo que é mais confiável.

Refs: engine-room, registry, fix
2026-04-08 11:53:08 -03:00
Jonas Pacheco b0a8e73f67 fix(engine-room): usa 127.0.0.1 e adiciona logs
- Troca localhost por 127.0.0.1 (mais confiável)
- Adiciona logs para debugar chamadas ao Registry

Refs: engine-room, registry, debug
2026-04-08 11:47:21 -03:00
Jonas Pacheco fcfce87df8 fix(coolify): remove filtro de labels no CoolifyDiscovery
O Coolify não expõe os labels do Docker na API.
Removido o filtro que exigia 'arcadia.discovery.enabled=true'.
Agora todos os serviços do Coolify são registrados.

Refs: coolify, discovery, fix
2026-04-08 11:40:26 -03:00
Jonas Pacheco a5adf7e096 debug: adiciona logs detalhados no CoolifyDiscovery
Adiciona logs para debugar por que a API do Coolify
está retornando 0 serviços.

Refs: debug, coolify, discovery
2026-04-08 11:34:34 -03:00
Jonas Pacheco 6182a9c490 chore: limpa arquivos temporários e cache
Remove:
- Cache do aider (.aider.tags.cache.v4)
- Arquivos de planejamento antigos (.planning/)
- Arquivos duplicados (MAPA_TENANTS_ARCADIA copy, SESSAO_2026-03-18)
- Metadata de agentes (.agents/)

Refs: cleanup, maintenance
2026-04-08 11:26:56 -03:00
Jonas Pacheco 14e440cc1f fix(docker): expoe porta 5001 para o Kernel
Adiciona porta 5001 no serviço app para permitir
acesso ao Kernel Arcadia (Service Registry).

Refs: kernel, registry, docker
2026-04-08 11:24:32 -03:00
Jonas Pacheco 202101f0e0 refactor(engine-room): simplifica Casa de Máquinas - apenas Registry
REMOVIDO:
- Presets ENGINES (hardcoded)
- Funções checkEngineHealth, getEngineHealthUrl
- Imports de kernel-adapter (não usados mais)
- Rotas de ação (start/stop/restart) - retornam 501
- Fallback para kernel-adapter

MANTIDO:
- /api/engine-room/status (apenas do Registry)
- /api/engine-room/engines (apenas do Registry)
- /api/engine-room/agents
- Rotas de agents (start/stop)

A Casa de Máquinas agora mostra APENAS serviços descobertos
pelo Registry (Docker/Coolify/XOS). Serviços não descobertos
não aparecem.

Refs: simplificacao, registry-only, casa-de-maquinas
2026-04-08 11:18:03 -03:00
Jonas Pacheco 16bb5b9bfb docs: adiciona especificação técnica do Kernel
Cria docs/KERNEL_SPEC.md com:
- Visão geral e arquitetura
- Componentes (Core, Registry, Discovery)
- Documentação dos 4 providers de discovery
- API endpoints (Core, Registry, Casa de Máquinas)
- Fluxo de integração Casa de Máquinas
- Configuração (env vars, Docker labels)
- Roadmap (Semanas 4-7)
- Histórico de mudanças

Refs: documentation, kernel, spec
2026-04-08 11:06:22 -03:00
Jonas Pacheco b3166173df feat(kernel): implementa XOS Discovery Provider
- Cria XOSDiscovery.ts para descobrir serviços XOS
- Descobre filas de atendimento ativas
- Descobre integrações (WhatsApp, Email)
- Descobre automações ativas
- Integra ao Kernel como provider de discovery

O XOS Discovery consulta o banco de dados para encontrar
serviços configurados no XOS (CRM/Atendimento/Marketing).

Refs: xos, discovery, kernel-semana-5
2026-04-08 11:00:14 -03:00
Jonas Pacheco aa83dbdbce feat(engine-room): unifica Casa de Máquinas com Registry do Kernel
- Adiciona fetchRegistryServices() para consultar /api/registry/services
- Adiciona mapRegistryToEngine() para converter formato do Registry
- Modifica /api/engine-room/status para usar Registry como fonte primária
- Evita duplicação: se Registry tem serviços, não adiciona presets duplicados
- MetaSet só é adicionado se não houver bi-engine (evita 2 Motores BI)
- Fallback para kernel-adapter se Registry não disponível

Isso unifica a visão da Casa de Máquinas com o Discovery automático.

Refs: kernel, registry, casa-de-maquinas, unificacao
2026-04-08 10:51:19 -03:00
Jonas Pacheco 015273ffdd fix(engine-room): usa valores do preset ENGINES em vez de hardcoded
- Corrige MetaSet: usa type, displayName, category, description do preset
- Corrige Plus: usa valores do preset em vez de hardcoded
- Remove 'java' hardcoded que sobrescrevia o preset correto

Isso garante que as correções feitas no preset ENGINES
(type: python, porta: 8100) sejam refletidas na API.

Refs: metaset, casa-de-maquinas, engine-room
2026-04-08 10:01:29 -03:00
Jonas Pacheco 13abdbba3b fix(engine-room): corrige preset do MetaSet para apontar para serviço novo
- Atualiza porta: 8088 → 8100 (porta correta do container metaset)
- Atualiza tipo: java → python (Superset é Python)
- Atualiza host: SUPERSET_HOST → METASET_HOST
- Adiciona METASET_HOST e METASET_PORT no serviço app
- Atualiza descrição para refletir o MetaSet (fork Arcadia)

O preset estava apontando para o Apache Superset legado (porta 8088)
que só roda com perfil [bi]. Agora aponta corretamente para o
MetaSet novo (porta 8100) que é o serviço padrão.

Refs: metaset, casa-de-maquinas
2026-04-08 09:51:01 -03:00
Jonas Pacheco 5c884d9066 feat(kernel): implementa Coolify Discovery com chamadas reais à API
- Implementa CoolifyDiscovery.discover() buscando serviços e aplicações
- Adiciona endpoints /api/v1/services e /api/v1/applications
- Suporte a filtro por label arcadia.discovery.enabled=true
- Parse de labels customizadas do Coolify
- Mapeamento de health status do Coolify para Registry
- Adiciona 'coolify' ao tipo DiscoverySource

Refs: kernel-semana-4, service-discovery
2026-04-08 09:41:09 -03:00
Jonas Pacheco 465775ec99 feat(bi): MetaSet (Apache Superset fork) com branding ArcadiaSuite
- Rebuild completo do frontend React com branding MetaSet
- Substituição de textos 'Superset' -> 'MetaSet' em todo codebase
- Traduções atualizadas (en, pt_BR)
- Security Manager com JWT validation e RLS preparado
- Dockerfile multi-stage com assets locais
- Deploy em https://bi.onboardbi.com.br
- Banco de dados PostgreSQL migrado e inicializado
- Container Docker com rede coolify + extra_hosts IPv4
- BI-API Gateway em server/bi/index.ts (proxy manual Node.js)
- FDB-Bridge skeleton em server/bi/fdb-bridge/
- Kernel adapter atualizado para Registry integration
- .gitignore atualizado para excluir superset-src (3.7GB)
2026-04-07 16:04:09 -03:00
Jonas Pacheco 1f23256032 feat(kernel): expõe rotas do Registry no Dashboard
- Adiciona ServiceRegistry no DashboardServer
- Cria rotas /api/registry/services, /stats, /:id
- Permite acessar serviços descobertos via API
- Integração completa Registry -> Dashboard
2026-04-06 17:12:55 -03:00
Jonas Pacheco 1cf73f55ba feat(kernel): adiciona CoolifyDiscovery para descoberta automática
- Cria CoolifyDiscovery.ts para integrar com API Coolify
- Adiciona token COOLIFY_API_TOKEN no docker-compose
- Integra com StaticDiscovery e DockerDiscovery
- Permite descoberta automática de novos containers
2026-04-06 16:43:55 -03:00
Jonas Pacheco c3c91ed966 feat(kernel): adiciona StaticDiscovery via DNS interno
- Cria StaticDiscovery.ts com lista dos 7 serviços Arcádia
- Descoberta via nome DNS interno (ex: arcadia-prod-contabil-1)
- Health check em cada serviço antes de registrar
- Funciona sem acesso ao Docker (mais seguro)
- Mantém DockerDiscovery como fallback
2026-04-06 16:02:26 -03:00
Jonas Pacheco 5a99236aff feat(kernel): adiciona proxy /kernel para Dashboard
- Instala http-proxy-middleware
- Configura proxy /kernel -> localhost:5001
- Permite acessar Kernel pelo mesmo domínio da aplicação
- WebSocket support habilitado
2026-04-06 15:30:32 -03:00
Jonas Pacheco 08d6820e76 fix(kernel): ativa KERNEL_ENABLED e KERNEL_AUTOSTART no docker-compose
Adiciona variáveis de ambiente necessárias para iniciar o Kernel Arcádia
com Service Discovery habilitado por padrão.

- KERNEL_ENABLED=true: Ativa o Kernel no server/index.ts
- KERNEL_AUTOSTART=true: Inicia serviços automaticamente
2026-04-06 11:15:06 -03:00
Jonas Pacheco 7651167d72 feat(kernel): implementa Service Discovery e Registry (Semana 4)
Adiciona módulos de Service Discovery ao Kernel Arcádia:

- ServiceRegistry: catálogo central de serviços com health check
- DockerDiscovery: descoberta automática via labels Docker
- API REST /api/registry/* para consulta de serviços
- Labels arcadia.* no docker-compose.yml para auto-registro
- Integração não-destrutiva (módulos novos, código antigo preservado)

Labels suportadas:
- arcadia.discovery.enabled=true
- arcadia.name, arcadia.type, arcadia.category
- arcadia.port, arcadia.capabilities
- arcadia.requires_ia, arcadia.ia_policies

Arquitetura: MODIFICAR (adicionar) ao invés de REFATORAR
2026-04-06 11:02:49 -03:00
Jonas Pacheco 2916fb04ae fix: endpoint de health correto do Superset (/health não /api/health) 2026-04-03 18:15:45 -03:00
Jonas Pacheco d971d07327 debug: log URL em runtime para diagnosticar timeout 2026-04-03 18:07:33 -03:00
Jonas Pacheco 06fe8af1fb fix(engine-room): URLs corretas para health check de containers externos
- Adiciona getEngineHealthUrl() para resolver URLs dinamicamente
- MetaSet (Superset) usa SUPERSET_HOST ou 'superset' por padrão
- Plus usa PLUS_HOST ou 'localhost' por padrão
- Resolve problema de localhost:8088 falhar para Superset
2026-04-03 17:40:01 -03:00
Jonas Pacheco 80f9352a7e fix(kernel-adapter): variáveis de ambiente em runtime não build time
- Transforma SERVICE_URLS (objeto estático) em getServiceUrl() (função)
- Garante que process.env.CONTABIL_PYTHON_URL seja lida em runtime
- Resolve problema de URL 'bakeada' no build retornar valor errado
2026-04-03 17:38:45 -03:00
Jonas Pacheco 162bc4f943 force: rebuild docker cache [1775243617] 2026-04-03 16:13:37 -03:00
Jonas Pacheco 1fdeb72492 fix(engine-room): suporte a modo Docker para consultar serviços externos
- Modifica kernel-adapter.ts para detectar DOCKER_MODE
- Em modo Docker, consulta serviços via HTTP health check direto
- Em modo normal, continua usando Kernel local (porta 5001)
- Resolve problema de apenas 2 motores aparecendo em producao
2026-04-03 12:19:58 -03:00
Jonas Pacheco 5ba2bd963d fix(build): compatibilidade CommonJS para Kernel
- Adiciona fallback para import.meta.url em builds do Docker
- Protege entry point do Kernel para não crashar em CommonJS
- DashboardServer.ts agora funciona em ESM e CommonJS
- index.ts com try-catch em torno de import.meta.url

Isso corrige o erro: ERR_INVALID_ARG_TYPE no build do Coolify

Refs: Deploy produção com Kernel
2026-04-02 18:00:10 -03:00
Jonas Pacheco 75953a8542 fix(deploy): remove miroflow submodule (broken ref)
- Remove server/modules/miroflow do .gitmodules
- Permite deploy no Coolify sem erro de submodule
- MiroFlow pode ser re-adicionado depois com ref correta

Refs: Deploy com Kernel
2026-04-02 17:55:09 -03:00
Jonas Pacheco 2e76496ff4 feat(kernel): integração Engine Room com Arcadia Kernel
MIGRAÇÃO COMPLETA: Sistema antigo → Kernel Nativo (porta 5001)

📁 Arquivos alterados:
- server/engine-room/kernel-adapter.ts (NOVO)
- server/engine-room/routes.ts
- server/kernel/config/services.json

🔧 O que mudou no Kernel (services.json):
+ Adicionado: python-fisco (porta 8002)
+ Corrigido: node-communication (8006, era 9001)
+ Adicionado: node-core-api (9002)
+ Adicionado: node-worker (9003)
- Removido: java-metaset (gerenciado externamente)

Total: 6 → 7 serviços gerenciados pelo Kernel

🔄 Engine Room - Novo comportamento:
- Todas as rotas /api/engine-room/* agora usam Kernel Adapter
- Sistema antigo (managedServices) mantido em comentário para fallback
- Verificação automática se Kernel está disponível
- Retorna erro 503 se Kernel não responde na porta 5001

📊 Mapeamento de serviços:
Engine Room          → Kernel ID
────────────────────────────────────────
contabil             → python-contabil
bi-engine            → python-bi
automation-engine    → python-automation
fisco                → python-fisco
communication        → node-communication

🚫 Serviços externos (não gerenciados pelo Kernel):
- plus (PHP/Laravel, porta 8080)
- metaset (Java, porta 8088)

 Benefícios:
- Auto-restart configurável por serviço
- Health checks automáticos
- Logs centralizados com timestamps
- WebSocket para atualizações em tempo real
- Dashboard na porta 5001

⚠️ Pré-requisito:
KERNEL_ENABLED=true npm run dev

Refs: Semana 4 - Integração Kernel com Engine Room
Breaking Change: Engine Room requer Kernel rodando
2026-04-02 16:47:28 -03:00
Jonas Pacheco 7ce8735c04 feat(kernel): adiciona dashboard HTML visual
- Adiciona interface web dark theme com cards de estatísticas
- Lista de serviços com status, health e ações (start/stop/restart)
- Console de logs em tempo real com filtro por serviço
- WebSocket para atualizações em tempo real
- Auto-refresh a cada 5 segundos

Refs: Dashboard Arcadia Kernel
2026-04-02 14:46:36 -03:00