Files
Documentos-Unicos/projetos/newwhats.clube67.com/tarefas.md
T
2026-06-28 14:53:07 +02:00

57 lines
3.2 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.
## 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.
- [ ] **Fase 3** — Validar config/conexão (`newwhats_url`, `integration_key`,
`api_token`, `webhook_secret`) do satélite → motor (dev/prod) + HMAC do webhook.
_Bloqueado: requer credenciais reais._
- [ ] **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)
- [ ] Transformar `POST /` + `POST /:id/connect` em um **trajeto guiado e idempotente**
que cria e configura a conta no motor automaticamente (instância, pair/tenant,
setor + secretária default, webhook, engine, detecção Business). Ver
[ativacao-whatsapp.md](ativacao-whatsapp.md). O satélite orquestra como braço do motor.
## 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>