API Reference: Loja
Base URL: /api/loja. Todos requerem autenticacao.
Produtos
| Metodo | Endpoint | Permissao | Descricao |
|---|---|---|---|
| POST | /api/loja/produtos | Coord/Admin | Criar produto (preco em moeda do nucleo e R$) |
| GET | /api/loja/produtos | Autenticado | Listar produtos ativos (vitrine) |
| GET | /api/loja/produtos/:id | Autenticado | Detalhe do produto |
| PATCH | /api/loja/produtos/:id | Coord/Admin | Atualizar produto |
Compra (Split Payment)
| Metodo | Endpoint | Descricao |
|---|---|---|
| POST | /api/loja/comprar | Comprar 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
| Metodo | Endpoint | Permissao | Descricao |
|---|---|---|---|
| GET | /api/loja/meus-pedidos | Autenticado | Historico de compras |
| GET | /api/loja/pedidos | Coord/Admin | Todos os pedidos (filtro status) |
| PATCH | /api/loja/pedidos/:id/status | Coord/Admin | Atualizar status (PENDENTE→SEPARADO→ENTREGUE) |
| POST | /api/loja/pedidos/:id/cancelar | Coord/Admin | Cancelar (estorna moeda do nucleo + devolve estoque) |
Multi-imagem (produto_imagens)
Produtos suportam galeria de imagens via tabela produto_imagens:
| Coluna | Tipo | Descricao |
|---|---|---|
id | uuid | PK |
produto_id | uuid | FK para produtos |
url | text | URL da imagem no Supabase Storage |
ordem | integer | Ordem 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:
| Campo | Tipo | Descricao |
|---|---|---|
preco_promocional_moedas | integer | Preco promocional em moeda do nucleo |
preco_promocional_real | decimal | Preco promocional em R$ |
data_inicio_promo | timestamptz | Inicio do periodo promocional |
data_fim_promo | timestamptz | Fim 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:
| Badge | Criterio | Visual |
|---|---|---|
| Novo | Produto criado ha menos de 7 dias | Badge verde |
| Top | Produto com 10 ou mais vendas (total_vendas >= 10) | Badge laranja |
| Destaque | Produto marcado como is_destaque = true | Badge estrela |
| Desconto % | Percentual de desconto quando promocao esta ativa | Badge 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_destaqueem 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