API Reference: Loja

Base URL: /api/loja. Todos requerem autenticacao.

Produtos

MetodoEndpointPermissaoDescricao
POST/api/loja/produtosCoord/AdminCriar produto (preco em moeda do nucleo e R$)
GET/api/loja/produtosAutenticadoListar produtos ativos (vitrine)
GET/api/loja/produtos/:idAutenticadoDetalhe do produto
PATCH/api/loja/produtos/:idCoord/AdminAtualizar produto

Compra (Split Payment)

MetodoEndpointDescricao
POST/api/loja/comprarComprar com moeda do nucleo, R$ ou mix (split payment)

Body

{
  "produtoId": "uuid",
  "quantidade": 2,
  "valorCC": 3000,
  "metodo": "PIX"
}

Fluxo

  • 100% moeda do nucleo: Debita instantaneamente, pedido vai para PENDENTE
  • Mix moeda+R$: Calcula proporcao, gera cobranca Asaas pelo restante, pedido fica AGUARDANDO_PAGAMENTO
  • 100% R$: valorCC=0, gera cobranca Asaas pelo total
  • Webhook Asaas confirma → debita moedas parciais → pedido avanca para PENDENTE

Pedidos

MetodoEndpointPermissaoDescricao
GET/api/loja/meus-pedidosAutenticadoHistorico de compras
GET/api/loja/pedidosCoord/AdminTodos os pedidos (filtro status)
PATCH/api/loja/pedidos/:id/statusCoord/AdminAtualizar status (PENDENTE→SEPARADO→ENTREGUE)
POST/api/loja/pedidos/:id/cancelarCoord/AdminCancelar (estorna moeda do nucleo + devolve estoque)

Multi-imagem (produto_imagens)

Produtos suportam galeria de imagens via tabela produto_imagens:

ColunaTipoDescricao
iduuidPK
produto_iduuidFK para produtos
urltextURL da imagem no Supabase Storage
ordemintegerOrdem de exibicao na galeria
  • Na pagina de detalhe do produto, as imagens sao exibidas como galeria navegavel com thumbnails
  • No admin, e possivel fazer upload de ate 5 imagens por produto com drag-and-drop para reordenar
  • A primeira imagem (ordem 0) e usada como imagem principal nos cards da vitrine

Promocoes

Produtos podem ter precos promocionais com periodo definido:

CampoTipoDescricao
preco_promocional_moedasintegerPreco promocional em moeda do nucleo
preco_promocional_realdecimalPreco promocional em R$
data_inicio_promotimestamptzInicio do periodo promocional
data_fim_promotimestamptzFim do periodo promocional
  • Helper isPromoAtiva() verifica se a data atual esta dentro do periodo promocional
  • Quando ativa, o preco original e exibido riscado e o preco promocional em destaque
  • O percentual de desconto e calculado automaticamente e exibido como badge

CRO Badges

Badges visuais nos cards de produto para aumentar conversao:

BadgeCriterioVisual
NovoProduto criado ha menos de 7 diasBadge verde
TopProduto com 10 ou mais vendas (total_vendas >= 10)Badge laranja
DestaqueProduto marcado como is_destaque = trueBadge estrela
Desconto %Percentual de desconto quando promocao esta ativaBadge vermelho com "-20%"

Multiplos badges podem aparecer simultaneamente no mesmo card.


Produtos Similares

Na pagina de detalhe, exibe ate 4 produtos similares (mesma categoria + mesmo nucleo). Se nao houver produtos da mesma categoria, exibe produtos populares do nucleo como fallback.


Vitrine Redesign

A vitrine foi redesenhada com layout baseado em scroll horizontal por categoria:

  • Destaques: Secao no topo com produtos marcados como is_destaque em carousel horizontal
  • Ofertas: Secao com produtos com promocao ativa, exibindo preco original riscado e preco promocional
  • Por categoria: Cada categoria com produtos e scroll horizontal independente
  • Cards com badges CRO, imagem principal, nome, preco em moeda do nucleo e preco R$

Produtos Nacional

Produtos do nivel Nacional (sem nucleo_id) sao exibidos na loja de todos os nucleos:

  • Aparecem em secao separada "Loja Nacional" na vitrine
  • Sao gerenciados pelo super admin via painel nacional
  • Pedidos de produtos nacionais seguem o mesmo fluxo de compra, mas a gestao do pedido fica com o admin nacional