Levantamento Tecnico
Solicitação - DasNutri
1) Preço de Atacado na Gôndola (Etiqueta)
Contexto
Hoje a etiqueta exibe apenas o preço de varejo. Necessário incluir preço de atacado (ou faixa/quantidade mínima) e ajustar o layout.
Escopo / O que será feito
-
Backend
-
Expor campo(s) de atacado no endpoint de etiquetas (ex.:
GET /api/etiquetas/lote?...). -
Se não houver estrutura: criar tabela
produto_preco_atacado(produtoId, qtdeMin, preco, vigenciaIni/Fim, lojaId opcional). -
Regras de negócio: escolher o nível (empresa/loja), vigência, e fallback para varejo se não houver atacado válido.
-
-
Frontend / Serviço de Etiquetas
-
Adicionar variável de template (ex.:
${precoAtacado},${qtdeMinAtacado}). -
Criar novo layout (ZPL/PDF) com campo “ATACADO X por R$ Y”.
-
Visualização/preview no backoffice antes de imprimir (thumb em PDF).
-
-
Integrações/DevOps
-
Feature flag “etiqueta.atacado” por loja.
-
Migração de dados de atacado (se necessário).
-
Critérios de conclusão (aceite)
-
Etiqueta mostra claramente preço varejo e preço atacado + quantidade mínima.
-
Layout aprovado (tamanho, legibilidade, contraste).
-
Geração em lote e unitária funcionando.
-
Testes: produtos com e sem preço atacado; validade expirada; múltiplas lojas.
Riscos/Dependências
-
Dados de atacado indisponíveis → exigir carga inicial.
-
Impressoras com memória limitada (ZPL antigos) → otimizar template.
Estimativa de Esforço (22h)
-
Backend: 10h (modelo + endpoint + regras + migração simples)
-
Frontend/Serviço Etiquetas: 8h (template, preview, parametrização)
-
QA/Testes: 3h
-
Docs/Alinhamentos: 1h
2) Identificação de Vendedor no Self-Checkout
Contexto
Não há mecanismo para identificar o vendedor na venda em self-checkout. Precisa permitir associação opcional do vendedor à transação.
Escopo / O que será feito
-
Backend
-
Novo endpoint:
POST /api/selfcheckout/sessao/vendedor(define/atualiza vendedor da sessão). -
Validações: vendedor ativo, lotação/loja válida, permissões.
-
Persistir
vendedorIdno cabeçalho da venda e enviar no fluxo fiscal (quando aplicável).
-
-
Frontend (Self-Checkout)
-
Fluxo de leitura do vendedor:
-
Modal de identificação no início da sessão ou botão “Vendedor” fixo.
-
Opções: leitura de código (ID/QR/CPF) ou busca por nome com autocomplete.
-
-
Sinalização visual quando houver vendedor selecionado; opção trocar/limpar.
-
-
Relatórios/Backoffice
-
Expor
vendedorIdem consulta de vendas (lista/detalhe).
-
-
Segurança/Telemetria
-
Auditoria: quem definiu/alterou o vendedor e quando.
-
Critérios de conclusão (aceite)
-
Venda finalizada contém
vendedorId. -
Alterar/limpar vendedor antes do fechamento funciona.
-
Relatório/consulta exibe vendedor por venda.
-
UX: fluxo não aumenta fricção do cliente (tempo de passagem).
Riscos/Dependências
-
Variação de hardware (leitor de código) — padronizar eventos.
-
Políticas de comissionamento (fora do escopo, mas contempladas no dado).
Estimativa de Esforço (20h)
-
Backend: 8h (endpoints + persistência + auditoria mínima)
-
Frontend: 9h (UI/fluxo + scanner + estados + acessibilidade)
-
QA/Testes: 2h
-
Docs/Alinhamentos: 1h
3) Exibição de Imagem do Produto no Self-Checkout
Contexto
Funcionalidade não existente. Requer servir imagens com boa performance e alterar UI do self-checkout para exibir miniatura/thumbnail durante a compra.
Escopo / O que será feito
-
Backend
-
Novo serviço/rota de mídia:
GET /api/produtos/{id}/imagemretornando URL assinada ou CDN pública. -
Se necessário, processamento de imagens (thumb 256px/512px, WebP/JPEG) e metadados (hash/etag).
-
Expandir
GET /api/produtos/{gtin}para incluirimageUrl,imageLastModified. -
Cache-Control e ETag. Rate-limit básico.
-
-
Frontend (Self-Checkout)
-
Alterar card do item para exibir thumbnail (fallback placeholder).
-
Pré-carregamento de imagem após leitura do código de barras.
-
Estratégias de cache no cliente (IndexedDB/CacheStorage quando PWA).
-
Tratamento de rede lenta (mostrar skeleton/loading).
-
-
Backoffice
-
Campo para upload/gestão de imagem (mínimo viável) ou documentar fonte externa.
-
-
Observabilidade
-
Métricas: taxa de acerto de cache, latência de imagem, % itens sem imagem.
-
Critérios de conclusão (aceite)
-
Para itens com imagem, thumbnail aparece em ≤ 2,5s em rede normal.
-
Sem imagem → placeholder consistente.
-
Queda de rede não trava fluxo de vendas.
-
Telemetria coletada e visível (painel básico).
Riscos/Dependências
-
Volume e tamanho de imagens (custo/banda).
-
Direitos de uso de imagens (responsabilidade do cliente ou catálogo proprietário).
Estimativa de Esforço (38h)
-
Backend: 16h (serving, thumbs, cache, headers, ampliação de contrato)
-
Frontend: 18h (UI, estados, cache offline, loading, testes manuais em dispositivo)
-
QA/Testes: 3h
-
Docs/Alinhamentos: 1h
4) Resumo das Estimativas (Total 80h)
| Funcionalidade | Backend | Frontend | QA/Testes | Docs/Alinh. | Total |
|---|---|---|---|---|---|
| 1) Preço atacado na gôndola | 10h | 8h | 3h | 1h | 22h |
| 2) Vendedor no self-checkout | 8h | 9h | 2h | 1h | 20h |
| 3) Imagem no self-checkout | 16h | 18h | 3h | 1h | 38h |
| Total | 34h | 35h | 8h | 3h | 80h |
Observação: as horas de QA incluem roteiro de teste manual e evidências. Se for desejado teste automatizado (e2e/UI), acrescente ~20–30% no item 2 e 3.
BUSCA PREÇO AVANÇO: PASSO A PASSO DE CONFIGURAÇÃO
Guia rápido para deixar o app coletor pronto para uso. Leva cerca de 5 minutos.
ANTES DE COMEÇAR, TENHA EM MÃOS
• O celular ou coletor Android com internet (Wi-Fi ou dados móveis)
• O arquivo do app (app-busca-preco.apk)
• O número da loja (exemplo: 1)
• O token de consulta fornecido pela Avanço
• (Opcional) A imagem com a logo do supermercado
PARTE 1: INSTALAR O APP
Passo 1. Copie o arquivo app-busca-preco.apk para o aparelho (cabo USB, e-mail, WhatsApp ou pendrive).
Passo 2. No aparelho, abra o arquivo (pelo app "Arquivos" ou "Downloads").
Passo 3. Se o Android avisar que a instalação de fontes desconhecidas está bloqueada, toque em "Configurações" e ative "Permitir desta fonte". Depois volte e toque em "Instalar".
Passo 4. Ao terminar, toque em "Abrir". O app aparece com o nome "Busca Preço Avanço".
PARTE 2: CONFIGURAR O APP
Passo 5. Na tela inicial, toque na engrenagem (canto superior direito).
Passo 6. Preencha os campos:
• Ambiente (prefixo da URL da API): já vem preenchido com https://api.udi.avancoinfo.com.br. Só mude se a Avanço pedir.
• Número da loja: o número da loja onde o aparelho vai ficar. Exemplo: 1.
• Token de consulta: cole o token recebido. Toque no olhinho ao lado para conferir se digitou certo.
• Tempo de exibição do preço (segundos): por quanto tempo o preço fica na tela. O padrão é 5. Aceita de 1 a 60.
• Logo do supermercado: opcional. Toque em "Escolher arquivo" e selecione a imagem (PNG, JPG, WEBP ou SVG, até 2 MB). Para tirar, toque em "Remover logo".
Passo 7. Toque em "Salvar". Vai aparecer a mensagem "Configurações salvas."
Passo 8. Toque na seta (canto superior direito) para voltar à tela de busca.
PARTE 3: LIBERAR A CÂMERA
Passo 9. Na tela inicial, toque no ícone da câmera ao lado do campo de busca.
Passo 10. O Android vai perguntar se o app pode usar a câmera. Toque em "Permitir" (ou "Enquanto o app estiver em uso").
Negou sem querer? Vá em Configurações do Android > Apps > Busca Preço Avanço > Permissões > Câmera e escolha "Permitir".
PARTE 4: FAZER O PRIMEIRO TESTE
Passo 11. Aponte a câmera para o código de barras de um produto. O app lê sozinho.
Passo 12. Outra opção é digitar o código no campo e apertar Enter. Se o coletor tiver leitor físico, é só bipar o produto.
Passo 13. O resultado aparece na tela:
• Descrição do produto e código de barras
• Preço promocional (só aparece se o produto estiver em promoção)
• Preço normal
• Uma barra de tempo que esvazia e fecha o card sozinha
Se o preço apareceu, está tudo pronto.
SE ALGO DER ERRADO
• "Aplicação não configurada" ou "Número da loja não configurado": volte na engrenagem e preencha os campos.
• "Não foi possível conectar à API de preços": confira se o aparelho está com internet e se o campo Ambiente está correto.
• "Falha ao consultar a API (HTTP 401 ou 403)": o token está errado ou venceu. Confira se colou sem espaços ou peça um novo.
• "Produto não encontrado": o código pode estar errado ou o produto não existe na base. Tente de novo.
• "Produto não encontrado para a loja X": o produto não tem preço cadastrado para essa loja. Confira o número da loja nas configurações.
• "Permissão de câmera negada": libere a câmera como explicado na Parte 3.
• "Leitura por câmera não disponível neste dispositivo": use a digitação ou o leitor físico.
DICA FINAL
Depois de configurado, o app guarda tudo no aparelho. Não precisa configurar de novo ao fechar ou reiniciar. Para mudar a loja, o token ou a logo, é só voltar na engrenagem.
Dúvidas? Entre em contato com o suporte da Avanço: https://login.avancoinfo.com.br