# newwhats.clube67.com — Tarefas / Pendências (checklist) > Lista mestra de pendências do motor ↔ satélites. Sincronizada com a task list > da sessão. Atualizar marcando `[x]` ao concluir e mover detalhes para a doc de > estado correspondente. Última revisão: 28/jun/2026. ## Regra de ouro (registro bidirecional) - Cada **plugin satélite é único do projeto onde está instalado** (ex.: o `newwhats` do `mercado.clube67.com` ≠ o de outro projeto). - **Toda mudança no plugin deve ser registrada no motor, e toda mudança no motor que afete o contrato deve ser registrada em cada plugin.** Ver [integracao-satelites.md](integracao-satelites.md) (contrato central) e o `INTEGRACAO-MOTOR.md` dentro de cada plugin. - O **plugin é um braço inteligente do motor** — não duplica lógica; consome, alimenta e configura o motor. ## Integração satélite ↔ motor (faseado) - [x] **Fase 1** — Contrato documentado (`integracao-satelites.md`). - [x] **Fase 2** — Compatibilidade de API: alias `GET /secretaria/numbers` no ext-api. - [x] **Fase 3** — Config/conexão auditada: ext-api `x-nw-key` casa (satélite `nw_t…_001` = `apiKey` do motor, teste vivo 200); webhook HMAC casa (`secret` len 64, url `127.0.0.1:4001`, eventos ok). Topologia co-locada; live ponta-a-ponta exige satélite rodando co-locado. ⚠️ `/nw/*` usa chave diferente (`nwk_…1039`) — reconciliar se esse sentido for usado. - [ ] **Fase 4** — Rodar `sync-knowledge` end-to-end (satélite → motor) e validar RAG. _Bloqueado: requer satélite rodando + Fase 3._ - [ ] **Fase 5** — Satélite consumir `messages.transcription` do motor e **remover `media-transcribe.js`** redundante. Unificar fonte da chave Gemini (`cfg.gemini_key` vs `process.env.GEMINI_API_KEY`). ## Wasabi / mídias - [x] Upload fire-and-forget + proxy público de leitura (avatares e mídias). - [x] `StorageProvider.deletePrefix(prefix)` (delete por prefixo). - [x] **Index de mídias** — `GET /api/instances/:id/media-index` (chat/tipo/período, byType, paginado). Ver [wasabi-midias.md](wasabi-midias.md). - [x] **Delete em lote** — `POST /api/instances/:id/media-batch-delete`, coordenado **DB ↔ Wasabi**, dryRun por padrão + `deleteObjects` em lote. - [ ] Index por tamanho (bytes) — falta coluna `mediaSize`. - [ ] Reconciliação DB ↔ bucket (achar órfãos). - [ ] Política de retenção (arquivar/descartar áudio após transcrição salva). ## Ativação do WhatsApp (trajeto inteligente) - [x] `POST /api/instances/provision` — trajeto guiado e **idempotente** (instância + engine `baileys7` + setor default + webhook/connect opcionais), devolve o `trajeto[]` visível. Ver [ativacao-whatsapp.md](ativacao-whatsapp.md). - [ ] Detecção Business no connect (grava `isBusiness`). - [ ] Secretária default automática (plugin) + webhook a partir do pair. - [ ] Gatilho de `sync-knowledge` no fim do trajeto + UI de onboarding. ## Inbox / Secretária (já entregue nesta frente) - [x] Transcrição/descrição no motor (Gemini) → `messages.transcription`. - [x] Exibição da transcrição no inbox (🎤 áudio / 👁 imagem) + socket `message:transcription`. - [x] Memória de longo prazo por contato (`sec_contact_memory`). - [ ] Ritmo humano da Secretária (typing + delay + quebra em 2–3 msgs). - [ ] Resposta em áudio (TTS) — opcional. ## Validações pendentes de ambiente - [ ] Pareamento do WhatsApp dev (avatares/fixados) quando o aparelho voltar.