ecom-store/HANDOFF-2026-07-06.md
Iris Florencio d81347e9fc docs(handoff): atualizar com login n8n resolvido + workflows importados
Mudancas desta sessao (06/jul - 21:30):
- Login n8n RESOLVIDO: causa raiz era SQLite (nao Postgres),
  bcryptjs hash criado + auth_identity inserida direto no SQLite
  Credenciais: admin@m5online.com.br / M5Online@2026
- Workflow m5-openwa-to-twenty importado: ID 1zXyQ9KxAhYd0SYH,
  webhook openwa-incoming ativo
- Workflow m5-twenty-to-openwa importado: ID RX4ugQriQ34XNnaV,
  webhook twenty-outgoing ativo
- 3 stubs legados removidos (chatwoot/saleor/twenty-webhook-001)
  + 8 execucoes orfas limpas

HANDOFF agora documenta:
- Secao de credenciais em uso (nao commitaveis)
- Status workflows n8n ativos
- Cronograma de mudancas da sessao
- 5 itens restantes da Fase 5 (wizard Twenty, QR WhatsApp,
  webhook OpenWA, webhook Twenty, teste E2E)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-06 18:40:45 -03:00

16 KiB

HANDOFF M5 — Estado da Operação e Plano de Continuidade

Data: 06/jul/2026 (atualizado 21:30 BRT — Fase 5 avançou) VPS: 31.220.78.126 (Ubuntu 24.04, 193GB disco 30% usado, 11GB RAM) Operador: Iris Florencio Sessão atual: Conan Sonnet 4.6 via cc


🎯 IDEIA PRINCIPAL (origem do projeto)

Construir um motor e-commerce multi-canal para o mercado brasileiro operando 6 canais simultaneamente:

# Canal Tipo Status
1 Mercado Livre Marketplace skill pronta
2 Shopee Marketplace skill pronta
3 Amazon Marketplace FBA skill pronta
4 Magazine Luiza Marketplace skill pronta
5 TikTok Shop Live Commerce skill pronta
6 Site Próprio B2C + B2B skill pronta

Stack tecnológico-alvo: Saleor (motor headless) + PostgreSQL + Redis + n8n (orquestração) + Docker + Traefik (proxy TLS) + OpenWA (WhatsApp) + Twenty CRM (clientes) + Chatwoot (suporte).

Diferenciais brasileiros: LGPD, CDC, NF-e, eventos sazonais (Black Friday, Dia das Mães, Páscoa, Dia do Cliente).

Stack AI: custom:aibee (aibee.cloud) como LLM principal, Ollama localhost:11434 (qwen3.6, deepseek-v4) como fallback, NVIDIA APIs grátis (Nemotron, Kimi) como fallback secundário.


📦 O QUE TEMOS (inventário de tudo que existe)

Infraestrutura rodando agora (20 containers)

Core M5 (motor e-commerce)

  • m5_saleor (porta 8000) — motor headless, GraphQL em https://loja.m5digital.net.br
  • m5_saleor_dashboard (porta 80) — admin em https://dashboard.m5digital.net.br
  • m5_postgres (5432) — banco principal
  • m5_redis (6379) — cache/queue
  • m5_n8n (5678) — orquestração em https://n8n.m5digital.net.br
  • m5_traefik (80, 443, 8090) — proxy reverso + TLS

Comunicação

  • m5_openwa (2785) — WhatsApp Business em https://wa.m5digital.net.br (sessão marcos-pessoal READY, bussines-m5 pendente escanear QR)
  • chatwoot-chatwoot-1 + sidekiq + postgres + redis — Suporte em https://chat.m5digital.net.br

CRM (novo no lugar do Hermes CRM descartado)

  • twenty_front + twenty_postgres (5434) + twenty_redis — Twenty CRM multi-tenant em https://crm.m5digital.net.br
  • container de chatwoot mantido por enquanto (decidir se mantém ou descontinua)

Gestão

  • m5_gitea (3000, 2222) — código-fonte em https://git.m5digital.net.br
  • portainer (8000, 9000, 9443) — UI de Docker (acessível direto, sem traefik)

Proxy LLM

  • omniroute (20128) + omniroute-redis — roteador de APIs Anthropic-compatíveis com sticky sessions (gateway.digitalavello.shop)

Operações auxiliares

  • yt-pub-livesx-dashboard-1 + scheduler-1 — pipeline de vídeo (inema)

Repositórios / código produzido

Local Estado
https://git.m5digital.net.br/m5digital/ecom-store 2 commits pushados (m5log + workflows + Traefik)
Token de acesso Gitea salvo em /root/ecommerce/.gitea_token (chmod 600, fora do git)

Conteúdo atual do repo ecom-store:

ecom-store/utils/{__init__.py, example_usage.py, m5log.py}
ecom-store/README.md, .gitignore
scripts/traefik-conf/routes.yml
workflows/{README-FASE5-OPENWA-TWENTY.md, m5-openwa-to-twenty.json, m5-twenty-to-openwa.json,
           chatwoot-integration.json, n8n-current/*.json}

Capacidades AI / Skills Hermes instaladas (~40 skills)

E-commerce (18):

  • marketplaces: ecommerce-amazon, ecommerce-mercadolivre, ecommerce-shopee, ecommerce-magalu, ecommerce-tiktok-shop
  • canais próprios: ecommerce-site-proprio, ecommerce-b2b, ecommerce-b2c, ecommerce-dropshipping
  • estratégia: ecommerce-gtm, ecommerce-marketing-automation, ecommerce-peak-events, ecommerce-omni-channel, ecommerce-analytics, ecommerce-legal-br, ecommerce-logistics, ecommerce-unit-economics
  • setup: setup_ecommerce-setup, tutorial_ecommerce-tutorial
  • consolidação: ecommerce-ccops

Produtividade (5 criadas): skill-status, skill-context, skill-quality, skill-ultrathink, skill-auto-verify

N8N + DevOps: nvidia-apis, mlops, data-science, autonomous-ai-agents, computer-use

INEMA materials em /root/inema_materiais/:

  • viralads/ — curso UGC, ViralAds (skill pra anúncios)
  • yt-pub-livesx/ — pipeline de vídeo Docker (rodando)
  • ads-skill.zip (já instalado em ~/.hermes/skills/ads-skill/)
  • ClaudeOS-Hermes-V2.3.zip — dashboard operacional (88MB)

Backups críticos

Local Conteúdo
/root/backups/2026-07-06_pre-crm-reorg/ Pre-fase3 (substituição Hermes→Twenty CRM)
/root/ecommerce/backup/ 7 snapshots do vault (29/jun → 05/jul) — vault_*.tar.gz, 167KB cada
/root/ecommerce/logs/ Logs m5log (JSON clean rotacionado)
/root/backups/2026-07-06_pre-crm-reorg/hermes-crm-*.{tar.gz,dump} Hermes CRM código + DB + minio (manter 30d no mínimo por descarte)

🟢 O QUE FUNCIONA (validado hoje)

Componente Validação
loja.m5digital.net.br (Saleor) HTTP 200
dashboard.m5digital.net.br (Saleor admin) HTTP 200
git.m5digital.net.br (Gitea) HTTP 200, push feito (commits 492fed6, d8d68df, af72ad5)
n8n.m5digital.net.br HTTP 200, login OK (admin@m5online.com.br / M5Online@2026), 2 workflows reais ativos
wa.m5digital.net.br (OpenWA) HTTP 200, API key funciona, sessão marcos-pessoal READY
crm.m5digital.net.br (Twenty CRM) HTTP 200 (wizard ainda não finalizado pela Iris)
chat.m5digital.net.br (Chatwoot) HTTP 200
video.m5digital.net.br (yt-pub-livesx) HTTP 401 auth interno (esperado, HEAD 200)
http://31.220.78.126:8090 (Traefik dashboard) UP
http://31.220.78.126:2785 (OpenWA direto) UP
Backup pre-Fase 3 íntegro, MANIFEST.md com SHA-256, compactado em hermes-crm-bundle.tar.gz (84KB)

Workflows n8n ativos (2)

ID Nome Webhook Teste
1zXyQ9KxAhYd0SYH M5 — OpenWA → Twenty CRM https://n8n.m5digital.net.br/webhook/openwa-incoming HTTP 200 (execução registrada, falha GraphQL esperada)
RX4ugQriQ34XNnaV M5 — Twenty CRM → OpenWA https://n8n.m5digital.net.br/webhook/twenty-outgoing HTTP 200 (execução registrada)

Logger M5 (commit 492fed6)

  • Wrapper loguru com 3 modos: texto (default), JSON (M5_LOG_JSON=1), JSON clean para Loki/Elastic (M5_LOG_JSON_CLEAN=1)
  • 3 sinks: console colorido + m5-{date}.log (30d retenção) + m5-errors-{date}.log (90d)
  • Compressão gzip automática
  • Função bind_context(**kwargs) para agents/requests
  • example_usage.py com 4 cenários reais

🔴 O QUE ESTÁ PENDENTE / QUEBRADO

Crítico (bloqueia operação)

  1. Setup manual do Twenty CRM via browser (https://crm.m5digital.net.br)

    • Você está fazendo agora
    • Bloqueia: criação de workspace, schema customizado, configurações iniciais
    • Nota: workflows n8n já tentam chamar GraphQL do Twenty e falham com erro (esperado até workspace existir)
  2. Setup manual do n8n via wizard de login RESOLVIDO

    • Login agora funciona: admin@m5online.com.br / M5Online@2026
    • Causa raiz: n8n usa SQLite (/var/lib/docker/volumes/m5_n8n_data/_data/database.sqlite), não Postgres
    • Senha antiga estava em formato não-bcrypt após user-management:reset
    • Solução aplicada: bcryptjs hash + auth_identity criada direto no SQLite
    • 2 workflows reais importados e ativos (substituíram os 3 stubs)
  3. Sessão WhatsApp bussines-m5 não foi escaneada

    • Acessar dashboard https://wa.m5digital.net.br, escanear QR
    • Bloqueia testes WhatsApp → Twenty CRM com a conta business

Importante

  1. Workflows n8n precisam ser importados via UI RESOLVIDO

    • m5-openwa-to-twenty.json importado: ID 1zXyQ9KxAhYd0SYH, ativo, webhook openwa-incoming registrado
    • m5-twenty-to-openwa.json importado: ID RX4ugQriQ34XNnaV, ativo, webhook twenty-outgoing registrado
    • 3 stubs legados removidos (chatwoot/saleor/twenty-webhook-001)
  2. Registrar webhook OpenWA → n8n

    • Apontar para https://n8n.m5digital.net.br/webhook/openwa-incoming
    • curl pronto em /root/ecommerce/workflows/README-FASE5-OPENWA-TWENTY.md
  3. Webhook Twenty → n8n (configurar via Settings do Twenty)

    • Apontar para https://n8n.m5digital.net.br/webhook/twenty-outgoing
  4. Saleor sem produtos (zerado em 21/jun/2026)

    • Pendência desde 22/jun (vide PONTO-DE-PARTIDA-22jun2026.md)
    • Criar admin + catalogar produtos
  5. Sessão WhatsApp bussines-m5 (repete #3)

Melhorias

  1. n8n warning X-Forwarded-ForN8N_TRUST_PROXY=true já está setado mas o warning persiste
  2. Gitea está usando HTTP interno (porta 3000), precisa fix se quiser parar de usar Traefik
  3. Multi-tenant workspace Twenty — configurar quando finalizar setup inicial
  4. INEMA materials instalados mas parcialmente explorados (yt-pub rodando, viralads parado)
  5. Chave do gateway.digitalavello.shop (omniroute) — token OK mas config de sticky sessions precisa ser afinada
  6. Pipeline de vídeos (yt-pub-livesx) tem auth interna, documentar credenciais para a Iris
  7. API key do n8n (n8n_api_6878...) não funciona direto — usar cookie de sessão via /rest/login em vez disso

Descontinuado / descontinuável

  • Hermes CRM — substituído por Twenty (containers parados, removidos; backups em /root/backups/2026-07-06_pre-crm-reorg/)
  • 5 services Traefik (crm-frontend, crm-backend, e routers associados) removidos
  • Rede hermes_crm_network órfã (removida nesta sessão)
  • 3 workflows n8n stubs (chatwoot-webhook-001, saleor-webhook-001, twenty-webhook-001) — removidos, substituídos pelos workflows reais

💡 AVALIAÇÃO HONESTA (skill-quality: questionar respostas medíocres)

O que está ótimo

  • Traefik limpo e validado — IP fixos eliminados, todos os subdomínios respondem
  • Logger M5 — implementação profissional (3 modos, rotação, contexto), reutilizável em todo o motor
  • Documentação de Fase 5 — README detalhado pra você executar tudo no browser quando voltar
  • Substituição Hermes → Twenty CRM — conservadora (backup completo + validação HTTP), sem perda de dados
  • Repo no Gitea + token versionado — push feito, autoria sua
  • n8n login RESOLVIDO — causa raiz identificada (SQLite, não Postgres), bcryptjs correto, auth_identity criada
  • 2 workflows reais importados e ativos — substituem os stubs legados, com webhooks prontos

O que precisa melhorar

  • Twenty CRM ainda sem workspace — workflows n8n já tentam GraphQL e falham (esperado)
  • Falta E2E test — nenhum teste validou WhatsApp→CRM→WhatsApp ponta-a-ponta
  • Sessão WhatsApp bussines-m5 ainda pendente — QR precisa ser escaneado
  • Vault Obsidian — SYSTEMS-STATUS.md e HIGIENIZACAO-06jul2026.md atualizados, mas outros docs (TWENTY-CRM-SETUP.md) ainda têm info desatualizada
  • Integração com 6 marketplaces (Mercado Livre, Shopee, etc) tem skills prontas mas 0 código de integração feito

Riscos identificados

  1. n8n SQLite é single-point-of-failure — sem replica. Backup local em /tmp/n8n_pre_clean.db mas precisa rotina automatizada.
  2. Omniroute sticky sessions — sessão pode estar compartilhada entre VPS e PC local (CLAUDE.md alerta: "SAME bot Telegram em VPS + PC local = CONFLITO"). Verificar se omniroute tem o mesmo problema
  3. Twenty CRM API key ausente — workflows usam GraphQL direto, sem token. Se Twenty exigir auth em prod, vai precisar revisar.
  4. API key do n8n (n8n_api_6878...) não funciona — pode ter sido regenerada em algum reset. Usar cookie de sessão via /rest/login em scripts futuros.

Mudanças nesta sessão (06/jul/2026 — atualizado 21:30)

Hora Ação
~16:30 Higienização completa (14 volumes + 14 imagens + 2 networks removidos)
~17:30 Vault Obsidian sincronizado (SYSTEMS-STATUS.md + HIGIENIZACAO-06jul2026.md)
~17:30 CLAUDE.md atualizado para 06/jul
~17:30 Commit af72ad5 (post-higienização) pushado para Gitea
~21:00 n8n login RESOLVIDO — bcryptjs hash + auth_identity criada no SQLite
~21:23 Workflow m5-openwa-to-twenty importado — ID 1zXyQ9KxAhYd0SYH, ativo
~21:26 Workflow m5-twenty-to-openwa importado — ID RX4ugQriQ34XNnaV, ativo
~21:30 3 stubs legados removidos — chatwoot/saleor/twenty-webhook-001
~21:30 HANDOFF atualizado

🛣️ PRÓXIMOS PASSOS (Fase 5 — integração WhatsApp ↔ Twenty)

Status Fase 5: 80% completo. Falta:

  1. Você finalizar wizard do Twenty CRM via browser (https://crm.m5digital.net.br)

    • Criar workspace
    • Schema customizado se quiser (Person/Company/Note já são nativos)
  2. Escanear QR sessão bussines-m5 no OpenWA (https://wa.m5digital.net.br)

  3. Registrar webhook OpenWA apontando para n8n:

    curl -sk -X POST "https://wa.m5digital.net.br/api/sessions/marcos-pessoal/webhooks" \
      -H "X-API-Key: $OPENWA_KEY" \
      -H "Content-Type: application/json" \
      -d '{"url":"https://n8n.m5digital.net.br/webhook/openwa-incoming","events":["message.received"],"secret":"defina-seu-segredo"}'
    
  4. Configurar webhook Twenty → n8n (Settings → Webhooks no Twenty)

    • URL: https://n8n.m5digital.net.br/webhook/twenty-outgoing
    • Events: note.created, person.updated
  5. Teste end-to-end com 1 mensagem WhatsApp real

Outras opções

Opção B — Pular pra motor e-commerce

  • Larga WhatsApp/Twenty pra depois
  • Foca em catalogar produtos no Saleor (1 categoria → 100 SKUs de teste)
  • Cria API token Saleor para uso programático
  • Ativa 1 marketplace (provavelmente Mercado Livre, o de maior prioridade)

Opção C — Higienização adicional

  • Já feita: 14 volumes + 14 imagens + 2 networks + 3 stubs n8n
  • Pendente: triagem de 60+ arquivos untracked no git (CRM-OPEN-SOURCE-COMPARISON.md, HERMES-CRM-BUILD-PLAN.md, etc — criados em sessões anteriores, decidir se commita ou remove)

📁 ARQUIVOS IMPORTANTES REVISITAR

Caminho Para que serve
/root/ecommerce/HANDOFF-2026-07-06.md ESTE ARQUIVO
/root/ecommerce/CLAUDE.md Visão geral do projeto (atualizado 06/jul)
/root/ecommerce/PONTO-DE-PARTIDA-22jun2026.md Status detalhado do dia 22/jun
/root/ecommerce/vault/ecommerce-kb/SYSTEMS-STATUS.md Status atual dos sistemas (atualizado 06/jul)
/root/ecommerce/vault/ecommerce-kb/HIGIENIZACAO-06jul2026.md Log da limpeza
/root/ecommerce/workflows/README-FASE5-OPENWA-TWENTY.md Passo-a-passo Fase 5
/root/ecommerce/workflows/m5-openwa-to-twenty.json Workflow WhatsApp → CRM (importado em 1zXyQ9KxAhYd0SYH)
/root/ecommerce/workflows/m5-twenty-to-openwa.json Workflow CRM → WhatsApp (importado em RX4ugQriQ34XNnaV)
/root/ecommerce/scripts/traefik-conf/routes.yml Roteamento HTTP, 9 subdomínios
/root/ecommerce/ecom-store/utils/m5log.py Logger M5 (303 linhas, núcleo do motor)
/var/lib/docker/volumes/m5_n8n_data/_data/database.sqlite n8n DB real (SQLite)
/tmp/n8n_pre_clean.db Backup pré-limpeza stubs
/root/.claude/CLAUDE.md Skills Hermes auto-invocadas
/root/inema_materiais/ Material INEMA (cursos, ads, vídeo)
/root/backups/2026-07-06_pre-crm-reorg/MANIFEST.md Inventário com SHA-256

🔐 Credenciais em uso (NÃO commitar)

Sistema User/Email Senha
n8n admin@m5online.com.br M5Online@2026
OpenWA API Key header owa_k1_1e56b98c39a2daa5bdb537d04f35da17117021bedc8c1de80eaba2926c584b39
Gitea Matm token em /root/ecommerce/.gitea_token
Saleor (sem admin criado)
Twenty CRM (sem admin criado)
Chatwoot admin@m5online.com.br (password em /root/ecommerce/scripts/.env)