Files
Documentos-Unicos/projetos/newwhats.clube67.com/tarefas.md
T
VPS 4 Builder 974d825fd9 docs(tarefas): resumo 'A fazer' com sub-itens abertos
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 17:06:26 +02:00

93 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.
## A fazer (sub-itens abertos — resumo)
> Detalhes/seções abaixo. Itens de billing/decisão dependem do usuário.
**Provisionamento / onboarding (puro motor, exceto onde indicado):**
- [ ] Secretária default automática ao provisionar _(plugin secretaria)_
- [ ] Registro automático do webhook a partir do pair _(ext_webhooks + Instance.webhookUrl)_
- [ ] Gatilho de `sync-knowledge` no fim do trajeto _(satélite)_
- [ ] UI de onboarding consumindo `POST /provision` (exibe o `trajeto[]`)
- [ ] Live update de `isBusiness` no SettingsPanel (evento `instance:business`)
**Secretária — humanização:**
- [ ] Ritmo humano (typing + delay + quebra em 2-3 msgs)
- [ ] Resposta em áudio (TTS) _(opcional)_
**Wasabi / mídias:**
- [ ] Index por tamanho (coluna `mediaSize`)
- [ ] Reconciliação DB ↔ bucket (achar órfãos)
- [ ] Política de retenção (descartar áudio pós-transcrição)
**Integração satélite:**
- [ ] **Fase 5** _(ADIADA)_ — satélite consumir `messages.transcription` + remover `media-transcribe.js`
- [ ] Reconciliar chave `/nw/*` (PluginPair `nwk_…` ≠ satélite `nw_t…`) _se esse sentido for usado_
**Dependem do usuário (billing / decisão):**
- [ ] Billing OpenAI (sem quota) e quota Gemini (429) — destrava geração LLM da Secretária
- [ ] Confirmar domínio real da PROD do newwhats (`.env.production.local` aponta p/ `clube67.com`)
- [ ] Revogar/rotacionar as chaves OpenAI/Gemini coladas no chat
## 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.
- [x] **Fase 4**`sync-knowledge` rodado end-to-end (driver com `buildKnowledgeText`
real do satélite `mercado`@VPS3 → motor dev). Nó `knowledge` atualizado; RAG
indexou 4 chunks com embedding Gemini 768d. ⚠️ geração LLM em 429 quota
(billing). Fix de brinde: `/secretaria/ask` `remoteJid``jid`.
- [ ] **Fase 5**_**ADIADA** (a fazer depois, decisão 28/jun/2026)._ 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 23 msgs).
- [ ] Resposta em áudio (TTS) — opcional.
## Validações pendentes de ambiente
- [ ] Pareamento do WhatsApp dev (avatares/fixados) quando o aparelho voltar.
</content>
</invoke>