Skip to content

Gerenciamento de Cardápio

Visão Geral

Permite gerenciar categorias e itens do cardápio do restaurante.

Localização

frontend-react/src/views/admin/MenuManagementView.tsx

Funcionalidades

Categorias

  • Criar categorias
  • Ordenar categorias (drag-and-drop)
  • Ativar/desativar categorias
  • Editar nome

Itens

  • Criar itens com:
    • Nome
    • Descrição
    • Preço
    • Imagem
    • Tempo de preparo (minutos)
  • Ativar/desativar itens
  • Editar detalhes

Estrutura

Cardápio
├── Categoria 1
│   ├── Item A
│   └── Item B
├── Categoria 2
│   └── Item C

Campos do Item

CampoTipoDescrição
namestringNome do item
descriptionstringDescrição detalhada
pricenumberPreço em centavos
imagestringURL da imagem
categoryObjectIdCategoria relacionada
preparationTimenumberTempo em minutos
isAvailablebooleanDisponibilidade

Insumos do Prato (Ficha Técnica)

O painel Insumos do Prato aparece no formulário de edição de um item existente (não visível ao criar um novo item — salve primeiro).

Cabeçalho do painel

O cabeçalho exibe "Insumos do Prato (N)" onde N é a contagem de ingredientes já vinculados. Quando não há nenhum vínculo, o badge não aparece.

Linha de ingrediente

Cada linha da tabela de insumos exibe:

ElementoDescrição
Nome / SKUNome do item de estoque
QuantidadeQuantidade consumida por porção do prato
UnidadeRótulo da unidade (ex: kg, un, l)
Pill de estoqueIndicador colorido em tempo real: vermelho (sem estoque), âmbar (abaixo do mínimo), cinza (ok)
Botão removerRemove o vínculo (não apaga o item de estoque)

O pill mostra 📦 X un com a availableQuantity atual do ingrediente.

Adicionar ingrediente

  1. No dropdown "Selecionar insumo", escolha o item de estoque
  2. Ao selecionar, o campo de unidade ao lado do input de quantidade é preenchido automaticamente
  3. Informe a quantidade por porção (ex: 0.2 para 200 g)
  4. Clique em + Adicionar

Loading e estado vazio

  • Enquanto os ingredientes são carregados, o painel exibe um skeleton animado (3 linhas)
  • Se não houver nenhum insumo vinculado, aparece um texto descritivo explicando que nenhum insumo foi adicionado ainda

Prioridade

Se um item tiver ficha técnica (insumos via este painel), o campo Item de Estoque simples (vínculo 1:1) é ignorado. A ficha técnica tem prioridade.

Importação de Cardápio via IA

A funcionalidade de Importação IA permite criar dezenas de itens de cardápio de uma vez a partir de um cardápio existente em papel, foto ou texto.

Rota: /t/:slug/admin/menu/import

View: frontend-react/src/views/admin/MenuImportView.tsx

Fluxo de importação

Fase 1 — Upload:

  1. Cole o texto do cardápio ou faça upload de um arquivo (foto, PDF, .txt)
  2. Clique em Analisar com IA
  3. O backend envia para Claude Haiku: POST /t/:slug/onboarding/menu/import
  4. O modelo retorna um array de itens parseados com categoria, nome, descrição, preço e confiança

Fase 2 — Revisão:

Uma tabela exibe todos os itens parseados. Para cada item:

ColunaDescrição
ConfiançaIndicador verde/âmbar/vermelho (Alta / Média / Baixa)
CategoriaEditável inline
NomeEditável inline
DescriçãoEditável inline
PreçoEditável inline (R$)
SelecionadoCheckbox — selecione os itens a importar

Por padrão, apenas itens de alta confiança são pré-selecionados. Itens de baixa confiança precisam de seleção manual após revisão.

Fase 3 — Confirmação:

Clique em Importar N itens selecionados. O sistema:

  1. Cria categorias novas automaticamente (ou reutiliza existentes pelo nome)
  2. Cria os MenuItem para cada item selecionado
  3. Redireciona para /admin/menu com toast de confirmação

Indicadores de confiança

CorNívelCritério
VerdeAltaNome, preço e categoria identificados com certeza
ÂmbarMédiaAlgum campo incerto ou ambíguo
VermelhoBaixaDados incompletos — revisar antes de importar

Backend

ArquivoDescrição
backend/src/tenants/onboarding.service.tsimportMenuFromAi()Envia para Claude Haiku, parseia JSON
backend/src/tenants/onboarding.controller.tsPOST menu/importAceita file (multipart) ou hint (texto)
backend/src/tenants/onboarding.controller.tsPOST menu/apply-importCria categorias + itens
frontend-react/src/components/onboarding/MenuImportPreviewTable.tsxTabela de revisão com edição inline

Relacionados

Lançado sob a licença MIT.