Documento de continuidade que captura: - Ideia principal do projeto (motor e-commerce multi-canal BR) - Inventário completo do que está rodando (20 containers, 18 skills ecom) - Validação do que funciona (8 subdomínios HTTP 200) - Pendências priorizadas (3 criticas, 5 importantes) - Avaliação honesta (skill-quality: o que está otimo e o que precisa melhorar) - 3 opções de proximo passo (A: Fase 5, B: motor, C: higienizar) Decisao de qual seguir fica com a Iris. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
248 lines
12 KiB
Markdown
248 lines
12 KiB
Markdown
# HANDOFF M5 — Estado da Operação e Plano de Continuidade
|
|
|
|
**Data**: 06/jul/2026
|
|
**VPS**: 31.220.78.126 (Ubuntu 24.04, 193GB disco 36% usado, 11GB RAM 5.3GB usado)
|
|
**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 (commit 492fed6) |
|
|
| `n8n.m5digital.net.br` | HTTP 200, 3 webhooks ativos respondendo |
|
|
| `wa.m5digital.net.br` (OpenWA) | HTTP 200, API key funciona, sessão `marcos-pessoal` READY |
|
|
| `crm.m5digital.net.br` (Twenty CRM) | HTTP 200 |
|
|
| `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 |
|
|
|
|
### 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
|
|
|
|
2. **Setup manual do n8n via wizard de login** (`https://n8n.m5digital.net.br`)
|
|
- DB resetado via `user-management:reset`, precisa definir nova senha
|
|
- Login web está rejeitando qualquer senha (problema de auth auth—investigar separadamente)
|
|
- **3 webhooks legados ativos** mas são apenas stubs sem lógica
|
|
|
|
3. **Sessão WhatsApp `bussines-m5`** não foi escaneada
|
|
- Acessar dashboard `https://wa.m5digital.net.br`, escanear QR
|
|
- Bloqueia testes WhatsApp → Twenty CRM
|
|
|
|
### Importante
|
|
|
|
4. **Workflows n8n precisam ser importados via UI**
|
|
- `m5-openwa-to-twenty.json` (WhatsApp → CRM)
|
|
- `m5-twenty-to-openwa.json` (CRM → WhatsApp)
|
|
- README com passo-a-passo: `/root/ecommerce/workflows/README-FASE5-OPENWA-TWENTY.md`
|
|
|
|
5. **Registrar webhook OpenWA** → n8n
|
|
- curl pronto no README, depende da sessão ativa
|
|
|
|
6. **Webhook Twenty → n8n** (configurar via Settings do Twenty)
|
|
|
|
7. **Saleor sem produtos** (zerado em 21/jun/2026)
|
|
- Pendência desde 22/jun (vide PONTO-DE-PARTIDA-22jun2026.md)
|
|
- Criar admin + catalogar produtos
|
|
|
|
8. **Sessão WhatsApp `bussines-m5`** (repete #3, está aqui também)
|
|
|
|
### Melhorias
|
|
|
|
9. **n8n warning `X-Forwarded-For`** — `N8N_TRUST_PROXY=true` já está setado mas o warning persiste
|
|
10. **Gitea está usando HTTP interno** (porta 3000), precisa fix se quiser parar de usar Traefik
|
|
11. **Multi-tenant workspace Twenty** — configurar quando finalizar setup inicial
|
|
12. **INEMA materials** instalados mas parcialmente explorados (yt-pub rodando, viralads parado)
|
|
13. **Chave do gateway.digitalavello.shop** (omniroute) — token OK mas config de sticky sessions precisa ser afinada
|
|
14. **Pipeline de vídeos** (yt-pub-livesx) tem auth interna, documentar credenciais para a Iris
|
|
|
|
### 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ã (só tem `m5_traefik` conectado, pode ser removida se quiser limpar)
|
|
|
|
---
|
|
|
|
## 💡 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
|
|
|
|
### O que precisa melhorar
|
|
- **Zero automação rodando de verdade** — workflows são stubs ou JSON não-importados
|
|
- **Falta E2E test** — nenhum teste validou WhatsApp→CRM→WhatsApp ponta-a-ponta
|
|
- **Investimento em "como fazer"** ainda alto — cada fase precisa decisão sua (Twenty wizard, n8n wizard, escanear QR, importar workflows manualmente)
|
|
- **Vault Obsidian não foi atualizado** nesta sessão (fonte de verdade está dessincronizada)
|
|
- **Integração com 6 marketplaces** (Mercado Livre, Shopee, etc) tem skills prontas mas 0 código de integração feito
|
|
|
|
### Riscos identificados
|
|
|
|
1. **Login n8n quebrado** — o `user-management:reset` recriou o user mas a senha nunca pega. Pode ser cache de cookie/IP rate-limited (HTTP 429 visto). Solução temporária: `n8n import:entities --truncateTables` no DB limpo + re-import dos JSON. Solução definitiva: investigar JWT secret vs encryptionKey
|
|
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. **Hermes CRM backups em /disk** — arquivos pequenos (5KB DB, 42KB source) — pode ser CRM vazio mesmo. Verificar se vale manter 30d ou apagar logo
|
|
|
|
---
|
|
|
|
## 🛣️ PRÓXIMOS PASSOS SUGERIDOS (sem começar nada ainda)
|
|
|
|
Você disse "antes de prosseguir" — sugiro a Iris decidir entre:
|
|
|
|
**Opção A — Continuar Fase 5 (integração WhatsApp ↔ Twenty)**
|
|
- Você finaliza wizard Twenty + wizard n8n (browser)
|
|
- Eu importo os 2 workflows via n8n CLI (sem precisar de auth web)
|
|
- Crio sessão `bussines-m5` (escaneando QR com você)
|
|
- Teste end-to-end com 1 mensagem real
|
|
|
|
**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 — Higienizar instância**
|
|
- Apaga arquivos do Hermes CRM (já tem backup)
|
|
- Limpa `hermes_crm_network` órfã
|
|
- Remove stubs do n8n
|
|
- Cria README operacional atualizado (esse doc)
|
|
- Commita tudo no Gitea
|
|
|
|
Eu sugiro **A** (continuar o que começamos), mas decisão é sua. Posso seguir A direto, ou aguardar seu OK.
|
|
|
|
---
|
|
|
|
## 📁 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 (última atualização 22/jun) |
|
|
| `/root/ecommerce/PONTO-DE-PARTIDA-22jun2026.md` | Status detalhado do dia 22/jun |
|
|
| `/root/ecommerce/workflows/README-FASE5-OPENWA-TWENTY.md` | Passo-a-passo pra finalizar Fase 5 |
|
|
| `/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) |
|
|
| `/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 |
|