b52f4cff52
docs(handoff): nota sobre 5 skills NVIDIA instaladas 07/jul
2026-07-07 00:06:30 -03:00
8935d8d4b3
feat(nvidia): 5 skills NVIDIA + helper CLI para build.nvidia.com
...
Instala 5 skills baseadas no pacote NVIDIA/skills (filtradas para M5):
- nvidia-nemotron-speech (169 linhas) ASR/TTS/NMT cloud Riva NIM
- nvidia-nemo-retriever (243 linhas) RAG multi-formato com NV-Embed-v2
- nvidia-data-designer (184 linhas) Dados sinteticos para popular motor
- nvidia-aiq-deploy (194 linhas) Agente autonomo multi-step
- nvidia-policy-generator (241 linhas) Moderacao de conteudo + LGPD
Total: 1031 linhas de documentacao pratica com:
- Endpoints curl prontos
- Codigo Python helper
- Casos de uso M5 especificos (OpenWA→CRM, Saleor, Twenty, Chatwoot)
- Schema PostgreSQL (pgvector) para RAG
- YAML de configuracao para AI-Q
- Limites e custos do free tier
skills/ nao commitada (sua em ~/.hermes/skills/) — ja' instaladas e ativas.
Adiciona scripts/nvidia-apis.py (CLI wrapper):
- chat PROMPT chat completion qualquer modelo
- models lista 121 modelos free
- status verifica se NVIDIA_API_KEY funciona
Acao para amanha:
1. Obter NVIDIA_API_KEY gratis em https://build.nvidia.com/
2. echo "NVIDIA_API_KEY=nvapi-..." >> /root/ecommerce/scripts/.env
3. python3 scripts/nvidia-apis.py status
4. Habilitar pgvector: docker exec m5_postgres psql ... -c 'CREATE EXTENSION vector;'
5. Testar skill nvidia-nemotron-speech (transcrever audio WhatsApp)
2026-07-07 00:05:57 -03:00
fe648df7cc
docs(handoff): ponto de retomada para 07/jul + fase C sugerida
...
Adiciona secao "PONTO DE RETOMADA" no topo com:
- TL;DR de 30 segundos
- Comando unico para retomar (git status + crontab)
- Status dos 5 itens da sugestao B (4 completos, 1 parcial)
- 3 pendencias criticas (você, browser)
- Proxima fase sugerida (Fase C - Mercado Livre)
- Detalhes do Item 5 PARCIAL + introspection GraphQL para retomar
- 7 verificacoes rapidas para amanha (1 comando cada)
Adiciona "Proxima fase: Fase C - Mercado Livre primeiro" no fim:
- 5 itens, ~3h total
- Pre-requisito: conta de vendedor ML ativa
- 3 alternativas (D catalogar, E docs, F E2E)
- Helpers ja' prontos para a fase C
- Skills Hermes uteis (ecommerce-mercadolivre, ccops, auto-verify)
Total adicionado: ~120 linhas
2026-07-06 23:53:37 -03:00
e4be77f91b
fix(saleor-api): filtrar produtos por channel m5-digital
2026-07-06 23:49:26 -03:00
759850882c
docs(handoff): cataloga itens 3-5 da sugestao B + metricas finais
...
Item 5 (catalogar 50 SKUs) marcado como PARCIAL — escopo maior que estimado:
- Schema Saleor 3.23 mudou: campos basePrice/channelId/channels rejeitados
- 1 produto teste criado/deletado com sucesso
- PG sequences dessincronizadas (UniqueViolation product_product_pkey)
corrigidas com setval
Tabela de evolução da sessão atualizada com:
- Itens 3, 4 (commits 7ebe052 , dcca4bf )
- Item 5 (parcial, sem commit)
- Métricas finais: 8 commits, 37 arquivos, 5 cron jobs, etc
Pendências críticas finais: 3
- Twenty CRM wizard (você)
- QR sessao bussines-m5 (você)
- Catalogar produtos Saleor (precisa estudo Saleor 3.23 API)
2026-07-06 23:28:43 -03:00
dcca4bf3db
feat(n8n): helper CLI para automacao via cookie de sessao
...
Item 4 da sugestão B — substituir uso manual de UI por CLI.
scripts/n8n-api.py: cliente Python via /rest/login (cookie n8n-auth JWT)
Subcomandos:
- login — força novo login (autoexecuta antes de cada chamada)
- workflows — lista workflows (id, name, active, archived)
- executions — ultimas execucoes (status, workflowId, startedAt)
- activate — ativa workflow (precisa versionId)
- deactivate — desativa workflow
- webhook URL — dispara webhook publico (sem auth)
- raw PATH — chamada REST arbitraria (debug)
Credenciais lidas de scripts/.env:
- N8N_USER_EMAIL=admin@m5online.com.br
- N8N_LOGIN_PASSWORD=M5Online@2026
Testado:
- login: OK (role global:owner)
- workflows: 2 ativos (OpenWA → Twenty, Twenty → OpenWA)
- executions: 2 erros recentes (esperado, workspace Twenty nao criado)
- webhook openwa-incoming: HTTP 200
Nota: API key antiga N8N_USER/N8N_PASSWORD no .env e' legado
(N8N_USER=admin, N8N_PASSWORD=lKs9...) — mantida pra retrocompat.
Nova auth usa /rest/login + cookie (mais confiavel).
2026-07-06 23:21:17 -03:00
7ebe0529c5
feat(backup): backup automatico do n8n SQLite (2x/dia)
...
Item 3 da sugestão B — proteger n8n SQLite que era single-point-of-failure.
Script backup-n8n.sh:
- Roda 2x/dia (00:30 e 12:30) via cron
- Usa sqlite3 .backup (seguro com n8n rodando)
- Compacta com gzip (~1.6MB → 100KB)
- Rotacao: mantem ultimos 30 dias
- Log em scripts/logs/backup-n8n.log
Cron jobs ativos (crontab -l):
- 0 2 * * * backup-vault.sh (pausado antes)
- 30 0,12 * * * backup-n8n.sh (NOVO)
- 0 */2 * * * health-check.sh
- 0 8 * * * resumo-diario.sh
- 0 14 * * * compliance-check.sh
Teste manual validado:
- Backup criado: backup/n8n/n8n-2026-07-06_2317.db.gz (100KB)
- Log gerado em scripts/logs/backup-n8n.log
2026-07-06 23:17:31 -03:00
d1760b7daf
docs(yt-pub): documentar credenciais e status do pipeline
...
Item 2 da sugestão B — pipeline de videos yt-pub-livesx.
Doc completo em vault/ecommerce-kb/YT-PUB-LIVESX-SETUP.md (gitignored, 150 linhas)
Resumo no HANDOFF.
Descobertas:
- Dashboard funcional: senha padrao Inema2026$$$, login POST /api/login
retorna cookie 'ds' HttpOnly (30 dias)
- Publicacao YouTube NAO configurada: faltam CLIENT_ID, CLIENT_SECRET,
API_KEY, GCP_PROJECT, YOUTUBE_CHANNEL_ID, SPREADSHEET_ID
- credentials.enc esta VAZIO (bind mount virou diretorio)
- Scheduler roda sem jobs (sem credenciais Google)
- Banco SQLite lives.db tem 0 lives, 0 canais TikTok
Doc inclui:
- Comando curl para login
- Passo-a-passo para configurar OAuth Google
- Lista de variaveis necessarias e onde conseguir
- Como montar credentials.enc e .encryption_key no container
Estado do projeto:
- Pendencias criticas: 3 (Twenty wizard + QR bussines-m5 + yt-pub creds)
2026-07-06 23:16:43 -03:00
ee8c3d1fb1
feat(saleor): app token persistente + helper GraphQL
...
Item 1 da sugestão — vincular API token Saleor para uso programático.
Mudancas:
- docker-compose.m5.yml: env RSA_PRIVATE_KEY agora recebe ${RSA_PRIVATE_KEY_CONTENT}
(conteudo da chave, nao path) — corrige bug MalformedFraming do jwt_manager
- scripts/.env: adicionado RSA_PRIVATE_KEY_CONTENT (PKCS#1) e SALEOR_APP_TOKEN
- scripts/saleor-media/RSA_PRIVATE_KEY.pem: convertida PKCS#8 → PKCS#1
(Saleor 3.23 jwt_manager so' aceita PKCS#1)
- scripts/saleor-api.py: helper CLI para queries GraphQL (count/products/me/query)
- App 'M5 API Service' criado via appCreate (id QXBwOjE=)
- permissoes: MANAGE_ORDERS, PRODUCTS, CHANNELS, SHIPPING, TAXES, CHECKOUTS,
USERS, STAFF, HANDLE_PAYMENTS, APPS
- token: NPXnQSAcwTH40BGlqV010baewTSUzR (persistente, sem expiracao)
Bug colateral corrigido: pem MalformedFraming impedia Django setup e login.
Validacao:
- python3 scripts/saleor-api.py count: 4 products, 0 orders, 2 channels
- Token persistente funciona via Authorization: Bearer
2026-07-06 23:12:48 -03:00
3c896a0482
docs(handoff): adicionar evolução da sessão + métricas finais
...
- Nova seção "EVOLUÇÃO DA SESSÃO (06/jul/2026)" com cronologia hora-a-hora
- Métricas finais: 6 commits, 35 arquivos versionados, 5 dirs legados removidos
- Árvore de commits no Gitea (0a0061a → 9c2f7ff )
- Atualizado timeline 21:30 → 22:00 com etapas da triagem
- Credenciais: corrigido usuário Gitea (Matm → irisflorencio), nota sobre
prefixo GITEA_TOKEN removido e email padrão admin@m5online.com.br
- Upstream master → gitea/master documentado
- Opção C marcada como concluída
2026-07-06 22:54:17 -03:00
9c2f7ff7b4
chore: triagem de arquivos untracked (60+ → 0)
...
Adiciona ao repo os scripts e configs reais do motor que estavam fora do git,
e remove arquivos legados/abandonados.
Adicionados (30):
- scripts/docker-compose.m5.yml, openwa-compose.yml, minio-compose.yml
- scripts/openwa.env (sem secrets)
- scripts/{entrypoint,saleor-entrypoint,saleor-start}.sh
- scripts/{chatwoot-setup,compliance-check,health-check,resumo-diario}.sh
- scripts/{insert_workflow,telegram_user_login,telegram_user_monitor}.py
- scripts/requirements.txt
- scripts/traefik-conf/{traefik.yml,dynamic-config.yml}
- scripts/compliance/, scripts/calculators/, scripts/backups/
- scripts/{README.md,README-INSTALL.md,WHATSAPP-SETUP.md,.gitignore}
- .gitignore (atualizado)
Removidos (ja' em backup/untracked-lixo-2026-07-06/):
- agents/, crm/, hermes_skills_backup/, api-complive/, docs/ (legados)
- scripts/{wrapper.py,wrapper.sh}
- scripts/docker-compose.m5.yml.backup, traefik-conf/routes.yml.bak2
- scripts/saleor-media/RSA_*.{bak,old_*}
- scripts/n8n-workflows/webhook-saleor.json.bak2
- scripts/backups/20260622_0300/saleor_db.sql
- integracao_completa.sh, monitoramento_vps.sh
- ruvector.db (vazio)
Ignorados via .gitignore:
- vault/ (Obsidian KB)
- skills/ (duplicado de ~/.hermes/skills/)
- scripts/{saleor-media,traefik-acme,yt-pub-livesx,minio,n8n-workflows,skills}/
- scripts/backups/2026*_*/
2026-07-06 18:50:26 -03:00
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
e30c07c9da
chore: post-higienizacao — remover stubs legados, atualizar docs
...
- workflows/n8n-current/: remover 3 stubs (chatwoot/saleor/twenty)
movidos para backup local (workflows-stubs-2026-07-06/)
- .gitignore: incluir .gitea_token (segredo) e *.bak (backups antigos)
- CLAUDE.md: atualizado para 06/jul/2026 (substituicao Hermes→Twenty,
20 containers ativos, 9 subdomínios validados, pendências críticas)
Higienizacao previa nesta sessao (commit a parte nao aplicavel):
- 14 volumes Docker orfaos removidos (~2.4GB)
- 14 imagens Docker sem uso removidas (~5GB)
- 2 networks orfas removidas
- Traefik limpo (IPs hardcoded → service names)
- Hermes CRM backups compactados (271KB → 84KB)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-06 17:33:27 -03:00
Iris Florencio
d8d68df884
docs: HANDOFF completo do estado M5 em 06/jul/2026
...
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>
2026-07-06 17:08:33 -03:00
Iris Florencio
492fed66b9
chore: incluir ecom-store completo (m5log + workflows + CRM reorganization)
...
Adiciona o conteudo de /root/ecommerce/ecom-store/ que estava em commit
anterior no Gitea (33fb270 ) mas foi perdido no force-push:
- utils/m5log.py — logger centralizado wrapper do loguru
- utils/example_usage.py — 4 cenarios de uso real
- utils/__init__.py — package marker
- .gitignore para ecom-store
Tambem mantem os workflows/ e scripts/traefik-conf/routes.yml adicionados
no commit anterior (Fase 5).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-06 17:04:14 -03:00
Iris Florencio
0a0061a914
feat(workflows): fase 5 — integração WhatsApp (OpenWA) ↔ Twenty CRM
...
Work feito nesta sessão:
- Traefik routes.yml: crm.m5digital.net.br → twenty-crm (Twenty substitui Hermes CRM)
- Backup pre-fase3 salvo em /root/backups/2026-07-06_pre-crm-reorg/
- 3 IPs hardcoded substituídos por container names (video, chatwoot, twenty)
- API key OpenWA recuperada do .api-key (regenerada em 29/jun/2026)
- Workflows n8n JSON prontos para WhatsApp → CRM e CRM → WhatsApp
- Documentação completa em workflows/README-FASE5-OPENWA-TWENTY.md
Pendência: import manual dos workflows via n8n UI após login wizard.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-06 16:49:26 -03:00