Commit Graph

178 Commits

Author SHA1 Message Date
Claude d1b1b2f0a5
feat: Fase 2 — Supervisor Monitor, CSAT, Protocolos, Business Hours, SLA, Reports
Schema (shared/schema.ts):
- xos_protocols: protocolo numerado por atendimento com SLA deadline, breach flag e CSAT
- xos_sla_policies: políticas de SLA por fila (first_response + resolution em minutos)
- Export dos novos types: XosProtocol, XosSlaPolicy

XOS Routes (server/xos/routes.ts) — 40 novos endpoints:

Supervisor Monitor:
  GET /supervisor/overview     → KPIs globais em tempo real (conversas, tickets, agentes)
  GET /supervisor/queues       → Filas com ativos, aguardando, TMA, agentes
  GET /supervisor/agents       → Agentes com conversas ativas, CSAT, TMA por período
  GET /supervisor/conversations/live → Conversas ao vivo por fila/agente/status

CSAT:
  POST /conversations/:id/csat → Registra nota 1-5 + comentário (conversa)
  POST /tickets/:id/csat       → Registra nota 1-5 + comentário (ticket)
  GET  /csat/summary           → Distribuição de notas + satisfaction_rate_pct por período

Protocolos:
  GET   /protocols             → Lista protocolos com filtros (status, contato, busca)
  POST  /protocols             → Cria protocolo com número YYYYMMDD-XXXXXX + SLA
  PATCH /protocols/:id         → Atualiza status/assignee do protocolo
  POST  /conversations/:id/protocol → Auto-gera protocolo para conversa + herda SLA da fila

Business Hours:
  GET /queues/:id/business-hours   → Retorna horários configurados
  PUT /queues/:id/business-hours   → Atualiza schedules [{dayOfWeek, startTime, endTime}]
  GET /queues/:id/is-open          → Verifica se a fila está aberta agora + mensagem fora de hora

SLA Policies:
  GET   /sla-policies          → Lista políticas ativas por fila
  POST  /sla-policies          → Cria política (first_response + resolution em minutos)
  PATCH /sla-policies/:id      → Atualiza política
  POST  /sla-policies/check-breaches → Marca violações de SLA + emite crm.sla.breached

Reports/Analytics:
  GET /reports/overview        → Visão geral: conversas, tickets, contatos, deals por período
  GET /reports/agents          → Performance por agente: conversas, CSAT, TMA, tickets
  GET /reports/sla             → Compliance de SLA por protocolo + tickets por prioridade

Automation Engine (automation_engine.py):
  Novos event types: crm.csat.received, crm.sla.breached, crm.protocol.created

https://claude.ai/code/session_01DinH3VcgbAv1d9MqnNxzdb
2026-03-16 23:14:53 +00:00
Claude e82279d9eb
feat: Fase 1 — Motor de Automações + Manus + XOS CRM integrados
Automation Engine (Python FastAPI v2.0.0):
- Novos step types: sub_workflow, split_batch, loop, retry, error_branch,
  send_email, send_whatsapp, update_record, create_record, manus_task
- Retry com backoff por step (retry_count + retry_delay_seconds)
- Branching condicional (on_success/on_failure/error_branch)
- Interpolação de variáveis {{campo}} em todos os steps
- Novos tipos de evento CRM: crm.contact.created, crm.deal.stage_changed,
  crm.deal.won, crm.deal.lost, crm.ticket.created, crm.message.received, etc.
- Endpoint POST /xos/trigger: recebe eventos CRM e repassa ao Node.js
- Forward bidirecional: engine Python ↔ Node.js XOS webhook

Manus IA — 3 novos tools:
- automation_trigger: dispara automações por ID ou evento do barramento
- xos_action: cria/atualiza contacts, deals, tickets, tarefas via IA
  (create_contact, update_contact, create_deal, move_deal_stage,
   create_ticket, assign_agent, create_task, create_activity, create_note)
- inbox_action: age na Central de Atendimento via IA
  (close_conversation, transfer_conversation, send_message,
   add_label, resolve_ticket, escalate_ticket)

XOS CRM Routes — Event Bus wiring:
- POST /contacts emite crm.contact.created
- POST /deals emite crm.deal.created
- PUT /deals/:id/stage emite crm.deal.stage_changed / crm.deal.won / crm.deal.lost
- POST /tickets emite crm.ticket.created
- CRUD completo para xos_automations (GET/POST/PATCH/DELETE)
- POST /automations/:id/execute — execução manual
- POST /automations/webhook/crm-event — recebe eventos do engine Python
- Executor de xos_automations: avalia conditions + executa actions
  (send_email, send_whatsapp, create_task, assign_agent, update_field,
   move_deal_stage, notify_team, webhook, agent_task)

https://claude.ai/code/session_01DinH3VcgbAv1d9MqnNxzdb
2026-03-16 22:07:22 +00:00
jonaspachecoometas 171dd91a69
Merge pull request #7 from jonaspachecoometas/claude/analyze-project-0mXjP
Claude/analyze project 0m xj p
2026-03-16 17:03:27 -03:00
Claude fc20a0e8b2
feat(prod): adiciona Plus, Superset e ERPNext ao docker-compose.prod.yml
Serviços adicionados com profiles opcionais:
- plus-db (MySQL 8.0) + plus (PHP/Laravel) → profile: plus
- superset (Apache Superset 4.1.0) → profile: bi
- erpnext-db (MariaDB 10.6) + erpnext (Frappe v15) → profile: erpnext

App principal recebe novas env vars:
  PLUS_HOST, PLUS_AUTO_START=false, SSO_PLUS_BASE_URL
  SUPERSET_HOST, SUPERSET_ADMIN_*
  ERPNEXT_PROXY_ENABLED, ERPNEXT_URL, ERPNEXT_API_KEY/SECRET

Volumes adicionados: plus_db, plus_storage, superset_home,
  erpnext_db, erpnext_sites, erpnext_logs

https://claude.ai/code/session_01DinH3VcgbAv1d9MqnNxzdb
2026-03-16 19:59:38 +00:00
Claude eb0926704a
feat: ERPNext em container Docker + SOE Rule Importer
- docker-compose.yml: adiciona serviços `erpnext` (frappe/erpnext:version-15)
  e `erpnext-db` (MariaDB 10.6) no perfil `erpnext`
  Volumes: erpnext_db, erpnext_sites, erpnext_logs
  Porta exposta: 8090 (→ :8080 interno)

- docker/erpnext/init.sh: script de inicialização que aguarda MariaDB,
  cria o site `erpnext.local` com bench new-site, instala app erpnext
  e sobe o servidor na porta 8080

- server/erpnext/proxy.ts: proxy transparente /erpnext-app/* → container
  (ativo em DOCKER_MODE=true ou ERPNEXT_PROXY_ENABLED=true)
  Reescreve Location headers, forward X-Forwarded-* e X-Site-Name
  Endpoint: GET /api/erpnext/container-status

- server/soe/erpnext-rule-importer.ts: importa regras de negócio do ERPNext
  (campos obrigatórios por DocType + Workflows ativos) e salva em soe_regras
  13 DocTypes mapeados para triggers SOE correspondentes
  Endpoint: POST /api/soe/erpnext/import-rules

- server/routes.ts: registra setupErpNextProxy e endpoint de import-rules
- .env.example: documenta variáveis para modo container e modo externo

Uso: docker compose --profile erpnext up

https://claude.ai/code/session_01DinH3VcgbAv1d9MqnNxzdb
2026-03-16 19:27:26 +00:00
Claude f0c3ce483e
feat: implementa SOE Rule Engine + Apache Superset (Arcádia Insights)
## SOE — Sistema Operacional Empresarial
- Adiciona 3 tabelas ao schema: soe_regras, soe_eventos, soe_lancamentos
- Cria server/soe/rule-engine/ com motor de regras configuráveis
  - Regras fiscais padrão: CFOP, tributação por regime, validações NCM
  - Regras de negócio: aprovação auto, reserva estoque, alertas
- Cria server/soe/event-bus.ts — dispara automações pós-execução
- Cria handlers: contabil-handler.ts (lançamentos automáticos) e
  financial-handler.ts (contas a P/R automáticas)
- Plugar Rule Engine em 3 rotas críticas do server/erp/routes.ts:
  POST /sales-orders, POST /confirm, POST /generate-nfe
- Redireciona /plus → /soe no frontend (Plus fica invisível)

## Apache Superset (Arcádia Insights)
- Expande docker-compose.yml: volumes, init script, config file
- Cria docker/superset/superset_config.py (embedding + CORS + feature flags)
- Cria docker/superset/init.sh (migração DB + admin + registro banco Arcádia)
- Substitui server/metabase/proxy.ts por server/superset/proxy.ts
- Substitui server/metaset/routes.ts por server/superset/routes.ts
  com Guest Token JWT para embedding nativo em qualquer tela
- Instala @superset-ui/embedded-sdk
- Cria client/src/components/SupersetDashboard.tsx — componente
  reutilizável via Guest Token, fallback para iframe
- Atualiza BiWorkspace.tsx: tab MetaSet → Insights (com seletor de dashboards)
- Atualiza .env.example com variáveis Superset completas

https://claude.ai/code/session_01DinH3VcgbAv1d9MqnNxzdb
2026-03-16 18:45:22 +00:00
jonaspachecoometas bcc0e21fe0
Merge pull request #6 from jonaspachecoometas/claude/analyze-project-0mXjP
Claude/analyze project 0m xj p
2026-03-16 15:29:22 -03:00
Claude 5a39fb66c4
docs: adiciona PLANO_BI_SUPERSET.md — migração Metabase → Apache Superset
Análise do código real revelou que:
- Superset já está no docker-compose.yml (profile: bi)
- MetaSet = Metabase com nome customizado (server/metaset/*)
- Falta apenas a integração gateway + guest token + componente React

Plano cobre:
- docker/superset/superset_config.py + init.sh
- server/superset/proxy.ts + routes.ts (guest token para embedding)
- SupersetDashboard.tsx (componente React reutilizável em qualquer tela)
- @superset-ui/embedded-sdk para embedding nativo
- Roadmap em 5 fases (1-2 dias de implementação real)

https://claude.ai/code/session_01DinH3VcgbAv1d9MqnNxzdb
2026-03-16 18:24:21 +00:00
Claude 353af841dd
docs: adiciona PLANO_SOE_CENTRAL_v2.md — plano revisado baseado no Replit
Análise profunda do MAPA_SOE_ARCADIA.md revelou que o SOE já tem:
- SOE.tsx com 2.414 linhas funcionando
- 60+ endpoints /api/soe/* já existindo
- ArcadiaPlusClient e ArcadiaNextClient já implementados
- Padrão motor/adaptador já operacional

O plano v2 foca no que realmente falta:
- SOE Rule Engine (middleware entre rota e adaptador)
- Event Bus (lançamentos contábeis automáticos)
- Ocultação de Plus/ERPNext do usuário final
- Regras fiscais centralizadas no SOE

https://claude.ai/code/session_01DinH3VcgbAv1d9MqnNxzdb
2026-03-16 18:09:00 +00:00
jonaspachecoometas 791a024635
Merge pull request #5 from jonaspachecoometas/claude/analyze-project-0mXjP
Claude/analyze project 0m xj p
2026-03-16 14:24:40 -03:00
Claude 7a1fb61d15
docs: adiciona PLANO_SOE_CENTRAL.md — planejamento da Central SOE
Documenta a arquitetura e roadmap para transformar o Arcádia em um
SOE Central que orquestra Plus (Laravel) e ERPNext de forma invisível,
com regras fiscais, contábeis e financeiras centralizadas.

https://claude.ai/code/session_01DinH3VcgbAv1d9MqnNxzdb
2026-03-16 17:11:27 +00:00
Claude 4900886d90
docs: guia de integração Ollama + LLMFit no servidor de produção
Cobre os dois cenários (Ollama no host vs. container), configuração
do LLMFit como TIER 1, variáveis de ambiente, ordem de inicialização
e troubleshooting.

https://claude.ai/code/session_01DinH3VcgbAv1d9MqnNxzdb
2026-03-16 14:28:44 +00:00
jonaspachecoometas 9449b3614c
Merge pull request #3 from jonaspachecoometas/claude/analyze-project-0mXjP
Claude/analyze project 0m xj p
2026-03-13 15:10:47 -03:00
Claude 5bf2254bc1
chore: adiciona CLAUDE.md com contexto do projeto para sessões Claude
Arquivo de contexto compacto para economizar tokens em novas sessões.
Inclui: stack, estrutura, arquitetura de IA, branch de dev, status de implementação.

https://claude.ai/code/session_01DinH3VcgbAv1d9MqnNxzdb
2026-03-13 17:37:42 +00:00
Claude 5816c14d00
feat: integração Manus→LiteLLM gateway + slot LLMFit + soberania de dados
- Conecta Manus ao LiteLLM via AI_INTEGRATIONS_OPENAI_BASE_URL (era hardcoded para OpenAI)
- Adiciona OLLAMA_BASE_URL ao serviço litellm no docker-compose.prod.yml (fix crítico: sem isso o fallback para Ollama não funcionava)
- Adiciona DATABASE_URL ao litellm para logging/auditoria de chamadas LLM
- Open WebUI agora também aponta para LiteLLM (acesso a todos os modelos na interface)
- litellm-config.yaml: slot comentado para LLMFit (TIER 1), Ollama como padrão soberano (TIER 2), externos como opt-in (TIER 3)
- Adiciona modelo nomic-embed-text para embeddings locais via Ollama
- .env.example: documenta AI_INTEGRATIONS_*, LLMFIT_BASE_URL, providers externos opcionais
- arcadia-default agora aponta para llama3.3 (Ollama) por padrão — soberania total sem configuração adicional

Estratégia de soberania:
  Dados NUNCA saem sem configuração explícita de API key externa.
  LLMFit turbocharge: quando ativado, modelos fine-tuned têm prioridade sobre Ollama.

https://claude.ai/code/session_01DinH3VcgbAv1d9MqnNxzdb
2026-03-13 17:07:41 +00:00
jonaspachecoometas 76c1dd7090
Merge pull request #2 from jonaspachecoometas/claude/analyze-project-0mXjP
Correções de segurança e implementações.
2026-03-13 14:06:38 -03:00
Claude 0c006da8a5
feat: rate limiting, logging estruturado, tenant isolation, Compass AI, paginacao
QUALIDADE:
- Rate limiting: 500 req/15min em /api; 20 req/15min em login/register
- Winston logger: JSON em prod, colorido em dev; HTTP middleware com user_id/tenant_id
- Paginacao: XOS (conversations, tickets, activities) e Quality (9 endpoints) recebem offset

MULTI-TENANCY:
- tenantId adicionado a 7 tabelas criticas: workspace_pages, quick_notes,
  activity_feed, conversations, knowledge_base, chat_threads, manus_runs
- Migration 0002_tenant_isolation.sql com indices de performance

PROCESS COMPASS COM IA:
- POST /api/compass/projects/:id/ai-brief
  Gera briefing executivo via GPT-4o-mini: situação, riscos, ações prioritárias,
  health score — baseado em tasks, PDCA e status do projeto
- GET  /api/compass/projects/:id/health
  Score 0-100 calculado: 40% completude de tasks + 30% pontualidade + 30% PDCA

https://claude.ai/code/session_01DinH3VcgbAv1d9MqnNxzdb
2026-03-13 16:13:10 +00:00
Claude 1601ad0c12
feat: Manus approval guard, Marketplace→AppCenter connection, endpoint my-apps
SEGURANÇA:
- Manus: ferramentas perigosas (shell, write_file, python_execute) agora
  retornam requires_approval na primeira chamada e exigem confirmação via
  ask_human antes de executar

MARKETPLACE → APPCENTER:
- Novo endpoint GET /api/marketplace/my-apps (autenticado):
  retorna códigos de módulos ativos do tenant (core sempre incluídos)
- AppCenter consome o endpoint via useQuery
- Apps com subscriptionCode não contratados aparecem com:
  - Overlay de cadeado no ícone
  - Badge "Não contratado"
  - Clique redireciona ao Marketplace em vez de abrir o app

CORREÇÃO DO AUDIT:
- Agent.tsx, CentralApis.tsx, ApiHub.tsx, ArcadiaNext.tsx verificados:
  todos já têm implementação real (26k+ tokens) — classificação como
  "placeholder" no audit estava incorreta

https://claude.ai/code/session_01DinH3VcgbAv1d9MqnNxzdb
2026-03-13 15:17:08 +00:00
Claude 1ab50d456b
security: correções críticas de segurança e estabilidade
SEGURANÇA:
- auth: XOS, LMS, Quality e /api/tenants agora exigem autenticação (102+ rotas)
- CORS: 7 serviços Python trocam allow_origins=["*"] por APP_URL env var
- credentials: removidas senhas hardcoded de metaset/routes.ts; SESSION_SECRET com warning se ausente
- uvicorn: criados server/__init__.py e server/python/__init__.py para module-style correto
- docker: embeddings_service usa uvicorn module-style como os demais

ESTABILIDADE:
- OpenAI: timeout=30s e maxRetries=3 no cliente Manus
- Frappe: AbortSignal.timeout(30s) em todos os fetches
- PipelineOrchestrator: guard processingMonitors evita execuções sobrepostas no setInterval

DADOS:
- WhatsApp auto-reply config agora persiste no banco (coluna auto_reply_config jsonb)
- Migration 0001_whatsapp_auto_reply_config.sql adicionada

https://claude.ai/code/session_01DinH3VcgbAv1d9MqnNxzdb
2026-03-13 14:34:51 +00:00
Claude b80bd22c83
chore: ignore .claude/ worktrees directory 2026-03-13 14:20:38 +00:00
jonaspachecoometas 8ed4863685
Merge pull request #1 from jonaspachecoometas/claude/analyze-project-0mXjP
Contenização do Suite
2026-03-13 10:27:44 -03:00
Claude 7c1ca8efce
docs: auditoria completa A-Z do Arcádia Suite com plano de execução
Cobertura da auditoria (4 agentes paralelos):
- 25 módulos backend / 400+ endpoints
- 64 páginas frontend
- 337 tabelas de schema
- Segurança, integrações e infraestrutura

Score geral: 4.5/10 — excelente para MVP, fundação necessária antes de escalar

Críticos identificados:
- 102+ rotas sem autenticação (XOS, LMS, Quality)
- CORS aberto com credentials em 6 serviços Python
- 190/337 tabelas sem tenantId (56%)
- 3 credenciais hardcoded
- Ciclo de embeddings quebrado (Knowledge Graph vazio)
- AppCenter desconectado do Marketplace

7 sprints planejados: Segurança → Deploy → IA → App Store →
Process Compass → ERP real → Soberania IA → Qualidade → ERPNext

https://claude.ai/code/session_01DinH3VcgbAv1d9MqnNxzdb
2026-03-13 13:06:57 +00:00
Claude 9322bf570f
feat: containerização completa + Knowledge Graph API + embeddings pgvector
Infraestrutura Docker:
- Dockerfile multi-stage para app Node.js
- Dockerfile.python genérico para todos os microserviços Python
- docker-compose.yml para desenvolvimento local (com perfis: bi, ai)
- docker-compose.prod.yml para deploy no Coolify com Traefik
- docker/init-pgvector.sql — instala extensão vector no PostgreSQL
- docker/python-entrypoint.sh — seleciona serviço pelo SERVICE_NAME
- docker/litellm-config.yaml — proxy LLM com fallback OpenAI → Ollama
- .env.example com todas as variáveis documentadas

Soberania de IA:
- Ollama + Open WebUI como perfil 'ai' no docker-compose
- LiteLLM como proxy unificado (OpenAI ↔ Ollama com fallback automático)

Knowledge Graph (rotas faltantes implementadas):
- server/graph/routes.ts — CRUD completo de nodes, edges, knowledge base + busca semântica
- server/graph/service.ts — camada de serviço com indexação automática de embeddings
- server/python/embeddings_service.py — FastAPI com pgvector para busca vetorial

Correções de infraestrutura:
- server/index.ts — DOCKER_MODE=true desativa spawn de processos filhos
- server/routes.ts — registra /api/graph/* no Express

https://claude.ai/code/session_01DinH3VcgbAv1d9MqnNxzdb
2026-03-13 10:14:33 +00:00
jonaspachecoometas 44dacedd90 feat(valuation): Módulo Consultivo de Valuation completo - Motor DCF/Múltiplos/Ativos, Governança 20 critérios, SWOT, Canvas Dual, PDCA, BI Dashboard, Relatórios, Agente IA 2026-03-10 18:28:14 -03:00
jonaspachecoometas f36238215a docs: Mapa completo do Plus dentro do Arcádia Suite 2026-02-28 22:10:41 -03:00
jonaspachecoometas ec173da844 feat: Arcádia Suite v2.0 - Sistema completo com 66 páginas, 6 motores, módulo Retail 2026-02-26 11:38:24 -03:00
jonaspachecoometas 065ab19a17 Arcadia Suite - Projeto completo 2026-02-09 17:46:40 -03:00
jonaspachecoometas 0812f4ab18 Inicializando repositorio Arcadia Suite 2026-02-09 17:31:10 -03:00