SmartHub AppsMáquina de aquisição

P1.1 · Conector Nuvemshop

Depende de P0.3. App `conectores` no repo `radar`.

O prompt

Implemente o primeiro conector de plataforma. Ele é a porta de entrada de todo lead e a fonte do faturamento real que qualifica a venda — precisa ser confiável.

1. Base abstrata

class ConectorBase(ABC):
    plataforma: str
    def url_autorizacao(self, state: str) -> str: ...
    def trocar_codigo(self, code: str) -> CredenciaisLoja: ...
    def sync_produtos(self, desde: datetime | None) -> Iterator[ProdutoCanonico]: ...
    def sync_pedidos(self, desde: datetime | None) -> Iterator[PedidoCanonico]: ...
    def sync_clientes(self, desde: datetime | None) -> Iterator[ClienteCanonico]: ...
    def registrar_webhooks(self) -> None: ...
    def tratar_webhook(self, payload: dict, headers: dict) -> None: ...

2. Modelo canônico — não negocie isto

Todo módulo lê o canônico. Nenhum código fora de conectores/ conhece o formato da Nuvemshop.

Índices em (loja, criado_em), (loja, cliente) e (loja, sku). Vai haver milhões de linhas.

3. OAuth

4. Sincronização

5. Robustez

Critérios de aceite

  1. Testes com fixtures reais anonimizadas em tests/fixtures/, cobrindo paginação e rate limit
  2. Rodar sync_inicial duas vezes gera exatamente os mesmos registros
  3. Pedidos da loja A nunca aparecem em query escopada na loja B
  4. Conexão real ponta a ponta com loja de teste, mostrando SyncJob completo e as contagens
  5. sync_inicial de 5.000 pedidos em menos de 3 minutos

Shopify e Tray seguem a mesma interface depois. Não os implemente agora.

© 2026 EcomSmart · Uso interno · pt-BR