ecom-store/HANDOFF-2026-07-06.md

29 KiB

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

Data: 06/jul/2026 (sessão encerrada ~00:00 → retomar 07/jul) VPS: 31.220.78.126 (Ubuntu 24.04, 193GB disco 30% usado, 11GB RAM) Operador: Iris Florencio Sessão atual: Claude Sonnet 4.6 via cc


📍 PONTO DE RETOMADA (amanhã — 07/jul/2026)

TL;DR (30 segundos)

Sessão de hoje foi higienização + correção de bugs + setup de automação. Tudo committado e pushed. Working tree limpo, master sincronizado com gitea. Nenhuma ação automática vai rodar sozinha — só os 5 cron jobs (próximo: backup-vault às 02:00).

Comando único para retomar amanhã

cd /root/ecommerce && git status && crontab -l | head -10

Isso confirma: working tree limpo + cron jobs ativos.

Onde paramos

Sugestão B (5 itens): 4 completos + 1 parcial.

# Item Status Para retomar
1 API token Saleor nada — feito
2 Doc credenciais yt-pub nada — feito
3 Backup automático n8n verificar logs após 02:00
4 n8n-api.py (cookie-based) testar python3 scripts/n8n-api.py workflows
5 Catalogar 50 SKUs Saleor 🔶 PARCIAL ver "Item 5 PARCIAL" abaixo

3 pendências críticas para VOCÊ (browser)

# Onde O que fazer Bloqueia
1 https://crm.m5digital.net.br Finalizar wizard Twenty CRM workflows n8n → Twenty
2 https://wa.m5digital.net.br Escanear QR sessão bussines-m5 WhatsApp business
3 Saleor Dashboard Catalogar SKUs (estudar API 3.23 primeiro) vendas

Próxima fase sugerida (quando voltar)

Fase C — Ativar Mercado Livre (mais detalhes no fim deste doc):

  • 5 itens, ~3h total
  • Pré-requisito: você tem conta de vendedor ML?
  • Alternativas se preferir: Fase D (catalogar), Fase E (docs), Fase F (E2E WhatsApp)

Item 5 PARCIAL — detalhes para retomar

  • Schema do Saleor 3.23 mudou: basePrice, channelId, channels rejeitados como campos de input
  • 1 produto teste criado (UHJvZHVjdDo1) e deletado com sucesso → valida o pipeline
  • PG sequences ressincronizadas (corrigiu UniqueViolation product_product_pkey)
  • Próximo passo concreto: estudar schema via introspection
    TOKEN=$(grep "^SALEOR_APP_TOKEN=" scripts/.env | cut -d= -f2 | tr -d '"' | tr -d "'")
    curl -s -X POST https://loja.m5digital.net.br/graphql/ \
      -H "Authorization: Bearer $TOKEN" \
      --data-raw '{"query":"{ __type(name: \"ProductChannelListingInput\") { inputFields { name type { name kind ofType { name } } } } }"}' \
      | python3 -m json.tool
    
  • Ou usar a doc oficial: https://docs.saleor.io/docs/3.x/api-reference/products/mutations/product-create

NVIDIA APIs — instalado em 07/jul (madrugada)

5 skills novas instaladas em ~/.hermes/skills/:

  • nvidia-nemotron-speech — ASR/TTS/NMT
  • nvidia-nemo-retriever — RAG multi-formato
  • nvidia-data-designer — dados sintéticos
  • nvidia-aiq-deploy — agente autônomo multi-step
  • nvidia-policy-generator — moderação conteúdo

Amanhã: obter NVIDIA_API_KEY grátis em https://build.nvidia.com/ e adicionar em scripts/.env. Validar com python3 scripts/nvidia-apis.py status.


Verificações rápidas para amanhã (rodar ao acordar)

# 1. Sistema saúdavel?
docker ps --format "{{.Names}}: {{.Status}}" | grep -c "Up"

# 2. Cron jobs OK?
crontab -l

# 3. n8n workflows ativos?
python3 scripts/n8n-api.py workflows

# 4. Saleor OK?
python3 scripts/saleor-api.py count

# 5. Working tree limpo?
cd /root/ecommerce && git status

# 6. Backup n8n rodou? (depois das 00:30)
ls -la backup/n8n/ | tail -3

# 7. Container saleor OK?
curl -s -o /dev/null -w "Saleor: HTTP %{http_code}\n" https://loja.m5digital.net.br/graphql/
curl -s -o /dev/null -w "n8n: HTTP %{http_code}\n" https://n8n.m5digital.net.br/

📈 EVOLUÇÃO DA SESSÃO (06/jul/2026 — cronologia)

Hora Evento Commit / Artefato
~16:00 Higienização Docker completa
~16:30 14 volumes + 14 imagens + 2 networks removidos (~7.4GB liberados)
~17:30 Vault Obsidian sincronizado (SYSTEMS-STATUS + HIGIENIZACAO)
~17:30 CLAUDE.md reescrito para 06/jul
~17:45 Repo ecom-store criado no Gitea + 2 commits iniciais (m5log + workflows Fase 5) 0a0061a, 492fed6
~18:00 HANDOFF-2026-07-06.md criado (247 linhas) d8d68df
~18:30 Post-higienização: 3 stubs n8n removidos, CLAUDE.md reescrito (282 linhas) af72ad5
~21:00 n8n login RESOLVIDO — bcryptjs hash + auth_identity criados no SQLite (não Postgres)
~21:23 Workflow m5-openwa-to-twenty importado e ativado ID 1zXyQ9KxAhYd0SYH
~21:26 Workflow m5-twenty-to-openwa importado e ativado ID RX4ugQriQ34XNnaV
~21:30 HANDOFF atualizado com login + workflows e68ee92
~21:45 Triagem de untracked planejada: 60+ arquivos → 4 categorias
~21:50 Categoria B: 13 docs históricos arquivados em backup/untracked-triagem-2026-07-06/
~21:55 Categoria C: 5 diretórios legados removidos (agents, crm, hermes_skills_backup, api-complive, docs) — backup em backup/untracked-lixo-2026-07-06/
~22:00 Triagem completa: 30 arquivos adicionados, .gitignore ampliado 9c2f7ff
~22:00 3 commits reescritos com autor admin@m5online.com.br (filter-branch)
~22:00 Token .gitea_token corrigido (removido prefixo GITEA_TOKEN=)
~22:00 Upstream master → gitea/master configurado
~22:00 Push final — 9c2f7ff em sincronia com gitea/master
~22:30 Item 1 sugestão B: Saleor JWT manager corrigido (RSA_PRIVATE_KEY path→conteúdo, PKCS#8→PKCS#1)
~22:35 App Token persistente criado (NPXnQSAcwTH40BGlqV010baewTSUzR) + helper saleor-api.py ee8c3d1
~22:45 Item 2 sugestão B: yt-pub-livesx documentado (credenciais + status) d1760b7
~23:15 Item 3 sugestão B: Backup automático n8n SQLite (2x/dia via cron) 7ebe052
~23:30 Item 4 sugestão B: helper n8n-api.py (login via cookie, workflows/executions/activate/webhook) dcca4bf
~23:50 Item 5 sugestão B: catalogar 50 SKUs — PARCIAL (1 produto teste criado/deletado, sequences do PG dessincronizadas e ressincronizadas, schema do Saleor 3.23 mudou — escopo maior que estimado)

Métricas finais da sessão

Métrica Valor
Commits pushados nesta sessão 8 (6 novos + 2 pré-existentes)
Arquivos versionados adicionados 37
Diretórios legados removidos 5 (agents, crm, hermes_skills_backup, api-complive, docs)
Backup locais criados backup/untracked-triagem-2026-07-06/ (13 docs) + backup/untracked-lixo-2026-07-06/ (5 dirs)
.gitignore ampliado +13 padrões (vault, skills, saleor-media, traefik-acme, yt-pub-livesx, etc)
Disco liberado ~7.4GB (Higienização Docker) + estrutura Git limpa
Workflows n8n ativos 2 (substituíram 3 stubs legados)
Cron jobs 5 ativos (vault 02:00, n8n 00:30+12:30, health 2h, resumo 08:00, compliance 14:00)
Saleor 4 produtos, 0 orders, App Token persistente criado, PG sequences ressincronizadas
yt-pub-livesx Dashboard OK, YouTube/TikTok publish NÃO configurados
Pendências críticas 3 (Twenty wizard + QR bussines-m5 + catalogar produtos no Saleor)

Mudanças estruturais (visíveis no Gitea)

9c2f7ff chore: triagem de arquivos untracked (60+ → 0)         ← MAIS NOVO
d81347e docs(handoff): atualizar com login n8n resolvido + workflows importados
e30c07c chore: post-higienizacao — remover stubs legados, atualizar docs
d8d68df docs: HANDOFF completo do estado M5 em 06/jul/2026
492fed6 chore: incluir ecom-store completo (m5log + workflows + CRM reorganization)
0a0061a feat(workflows): fase 5 — integração WhatsApp (OpenWA) ↔ Twenty CRM

Todos com autor Iris Florencio admin@m5online.com.br.


🎯 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 🔶 PARCIAL

    • 4 produtos existentes (Chupeta Guritex, Fone Bluetooth, Galaxy S24, Panela Eletrica)
    • Channel "M5 Digital" ativo, "Default Channel" inativo
    • 0 orders — motor validado, sem operação ainda
    • App Token criado: SALEOR_APP_TOKEN=NPXnQSAcwTH40BGlqV010baewTSUzR (App ID QXBwOjE=)
    • Helper: python3 scripts/saleor-api.py {count,products,me,query "..."}
    • PG sequences ressincronizadas (corrigiu UniqueViolation product_product_pkey)
    • PENDENTE: catalogar SKUs adicionais (50+ produtos de teste) — schema do Saleor 3.23 mudou (campos basePrice/channelId/channels rejeitados), precisa estudo dedicado da nova API
  5. Sessão WhatsApp bussines-m5 (repete #3)

Bug corrigido nesta sessão: Saleor JWT manager

  • Sintoma: ImproperlyConfigured: Unable to load PEM private key. MalformedFraming
  • Causa: docker-compose passava RSA_PRIVATE_KEY=/app/media/RSA_PRIVATE_KEY.pem (path), mas Saleor 3.23 espera conteúdo da chave
  • Solução:
    • Chave convertida PKCS#8 → PKCS#1 (Saleor jwt_manager só aceita PKCS#1)
    • Nova env RSA_PRIVATE_KEY_CONTENT em scripts/.env com conteúdo completo
    • docker-compose.m5.yml alterado: RSA_PRIVATE_KEY=${RSA_PRIVATE_KEY_CONTENT}

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 RESOLVIDO
    • Doc completo em vault/ecommerce-kb/YT-PUB-LIVESX-SETUP.md
    • Dashboard: senha Inema2026$$$ (default), login POST /api/login
    • Publicação YouTube: NÃO configurada (faltam CLIENT_ID, CLIENT_SECRET, API_KEY)
    • TikTok download: NÃO configurado
    • Scheduler rodando mas sem jobs (zero credenciais Google/TikTok)
  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 22:00)

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:45 Repositório ecom-store criado no Gitea + commits 0a0061a (workflows) + 492fed6 (m5log)
~18:00 HANDOFF-2026-07-06.md criado — commit d8d68df
~18:30 Post-higienização: 3 stubs n8n removidos, CLAUDE.md reescrito — commit af72ad5
~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 — commit e68ee92
~21:45 Triagem de untracked planejada (4 categorias)
~21:55 Categoria B (13 docs históricos) + C (5 diretórios legados) arquivados/removidos
~22:00 Triagem concluída: 30 arquivos versionados + .gitignore ampliado — commit 9c2f7ff
~22:00 3 commits reescritos com autor admin@m5online.com.br (filter-branch)
~22:00 .gitea_token corrigido (removido prefixo GITEA_TOKEN= literal)
~22:00 Upstream master → gitea/master configurado; push forçado final

🛣️ 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 CONCLUÍDA

  • Volumes + imagens + networks + stubs n8n removidos
  • Triagem de 60+ untracked concluída: 30 arquivos versionados, 5 diretórios legados arquivados/removidos, 13 docs históricos em backup/untracked-triagem-2026-07-06/, 5 diretórios em backup/untracked-lixo-2026-07-06/, .gitignore ampliado (+13 padrões)

Sugestão B (executada 06/jul) 4/5 itens:

  • Item 1: App Token Saleor + scripts/saleor-api.py (commit ee8c3d1)
  • Item 2: yt-pub-livesx documentado (commit d1760b7)
  • Item 3: Backup n8n automático 2x/dia (commit 7ebe052)
  • Item 4: scripts/n8n-api.py cookie-based (commit dcca4bf)
  • 🔶 Item 5: Catalogar SKUs (parcial — Saleor 3.23 API mudou)

🚀 PRÓXIMA FASE SUGERIDA: Fase C — "Mercado Livre primeiro"

Por quê? Você tem motor pronto, mas zero receita. ML é o marketplace mais simples (REST + OAuth), com maior volume Brasil e skill pronta.

Pré-requisito (VOCÊ)

  • 🟡 Conta de vendedor no Mercado Livre ativa (se não tem, criar antes de começar)
  • 🟡 Categoria piloto definida (sugestão: Eletrônicos, 1 produto, ex: Galaxy S24 que já existe)

Itens da Fase C (em ordem)

# Item Tempo Bloqueio
1 Criar app em https://developers.mercadolivre.com.br/ + OAuth flow 10min você (conta ML)
2 Sincronizar 1 produto piloto (Galaxy S24) via ML API 30min só após #1
3 Configurar webhooks ML → n8n (orders, questions) 1h só após #2
4 Implementar workflow n8n ml-incoming (espelho do m5-openwa-to-twenty) 1h só após #3
5 Teste E2E: publicar produto → receber pergunta → responder 30min só após #4

Total: ~3h se tudo der certo

Alternativas à Fase C

Fase D — Terminar catalogação Saleor

  • Estudar schema Saleor 3.23 (Item 5 parcial)
  • Adicionar 50 SKUs de teste
  • Bom se você quer catálogo antes de vender

Fase E — Documentação final

  • Atualizar vault: TWENTY-CRM-SETUP, CHATWOOT-SETUP, INEMA-SETUP
  • Adicionar diagramas de arquitetura
  • Bom se você quer base sólida antes de crescer

Fase F — Testes E2E WhatsApp↔CRM

  • Escanear QR bussines-m5 + finalizar wizard Twenty
  • Fazer 1 mensagem real fluir WhatsApp→n8n→Twenty→n8n→WhatsApp
  • Bom se você quer validar integrações antes de qualquer venda

Helpers já prontos para a Fase C

# Token Saleor (persistido em .env)
python3 scripts/saleor-api.py products --first 5

# n8n via cookie (workflows, executions, webhooks)
python3 scripts/n8n-api.py workflows
python3 scripts/n8n-api.py webhook https://n8n.m5digital.net.br/webhook/XPTO --data '{}'

# Cron (backup, health, resumo, compliance) ja' configurados
crontab -l

Skills Hermes uteis

  • ecommerce-mercadolivre — API ML, OAuth, sync produtos
  • ecommerce-ccops — consolidacao operacional
  • skill-auto-verify — testar antes de entregar


📁 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 irisflorencio token em /root/ecommerce/.gitea_token (chmod 600, sem prefixo GITEA_TOKEN=)
Saleor admin@m5online.com.br M5@Admin2026!
Saleor App Token (M5 API Service) NPXnQSAcwTH40BGlqV010baewTSUzR (em SALEOR_APP_TOKEN)
Twenty CRM (sem admin criado)
Chatwoot admin@m5online.com.br (password em /root/ecommerce/scripts/.env)

⚠️ Git autor padrão: a partir desta sessão, usar admin@m5online.com.br em todos os commits (não iris@m5online.com.br). Setar via: git -c user.name="Iris Florencio" -c user.email="admin@m5online.com.br" commit ... Ou atualizar global: git config --global user.email admin@m5online.com.br

Upstream configurado: master → gitea/mastergit push/git pull funcionam sem argumentos.