📌 Épico Identificado
- Nome do épico: Gestão de Estoque Unificado
- Objetivo de negócio: Permitir que o gestor de estoque visualize, ajuste e movimente o inventário de produtos em múltiplos depósitos de forma centralizada, garantindo rastreabilidade e acuracidade dos saldos por canal de venda.
- Módulo/sistema identificado: OmniDom Backoffice — módulo Estoque Unificado
📖 Histórias de Usuário
HU01: Visualizar painel consolidado de estoque
- Como gestor de estoque
- Quero visualizar um painel com os indicadores consolidados de inventário (total de produtos, unidades disponíveis, itens com estoque baixo e sem estoque)
- Para que eu possa ter uma visão executiva rápida da saúde do meu estoque sem precisar acessar relatórios individuais
- Prioridade sugerida: Alta
- Estimativa de complexidade: P
-
CA01: Dado que o usuário acessa o módulo Estoque Unificado / Quando a tela é carregada / Então o sistema deve exibir 4 cards: Produtos (total de SKUs), Disponível (unidades disponíveis), Estoque Baixo (SKUs abaixo do mínimo) e Sem Estoque (SKUs zerados)
- Status: Visível nas telas
-
CA02: Dado que uma operação de ajuste ou transferência foi realizada / Quando a operação é concluída / Então os cards do painel devem atualizar automaticamente sem recarregar a página
- Status: Visível nas telas
- RN01: Disponível = Físico − Reservado
- Condição: Sempre que houver pedidos em andamento que rezervam unidades
- Comportamento: O card “Disponível” e a coluna homônima refletem o saldo líquido descontado de reservas
- Requer ao menos um produto cadastrado no sistema
- Requer pelo menos um depósito ativo vinculado ao usuário autenticado
HU02: Listar e filtrar inventário por depósito e status
- Como gestor de estoque
- Quero visualizar a lista completa de produtos com seus saldos por depósito e filtrar por canal/depósito ou situação do estoque
- Para que eu possa identificar rapidamente quais produtos precisam de atenção em um depósito específico
- Prioridade sugerida: Alta
- Estimativa de complexidade: M
-
CA03: Dado que o usuário está na tela de Estoque Unificado / Quando clica em uma aba de depósito (ex: “Mercado Livre”) / Então a tabela deve exibir somente os produtos com saldo naquele depósito e os cards do painel devem refletir os totais filtrados
- Status: Visível nas telas
-
CA04: Dado que o usuário aplica o filtro por Status (Normal / Baixo / Esgotado) / Quando o filtro é selecionado / Então a tabela deve exibir somente os produtos que correspondem ao status escolhido
- Status: Visível nas telas
-
CA05: Dado que o usuário digita um termo no campo “Buscar por nome ou SKU” / Quando digita o texto / Então a tabela deve filtrar em tempo real os produtos cujo nome ou SKU corresponda ao texto informado
- Status: Inferido (campo visível, comportamento não demonstrado no vídeo)
-
CA06: Dado que a tabela está carregando após troca de filtro / Quando o sistema está processando / Então deve exibir o estado de “Carregando inventário…” com indicador visual (spinner)
- Status: Visível nas telas
-
RN02: Os depósitos disponíveis como filtros são: Todos, Depósito Principal, Galpão A, Mercado Livre, Trainmec
- Condição: Sempre que a tela é carregada
- Comportamento: As abas de filtro refletem os depósitos ativos no sistema
-
RN03: Cada linha da tabela exibe: Produto/SKU, Físico, Disponível, Reservado, Depósitos (com barra de progresso), Status e Ações
- Condição: Para todo produto com ao menos 1 unidade física ou histórico no sistema
- Comportamento: As colunas são sempre visíveis, mesmo com valor zero
- Depende de HU01 (painel de métricas) para consistência dos totalizadores
- A aba “Todos” deve ser o estado padrão ao abrir o módulo
HU03: Realizar lançamento de estoque por tipo de operação
- Como operador de estoque
- Quero registrar um lançamento de estoque escolhendo entre Entrada de Compra, Acréscimo Manual ou Baixa Manual, informando produto, depósito, quantidade, custo e motivo
- Para que o saldo do inventário fique atualizado e rastreável, com histórico da origem da movimentação
- Prioridade sugerida: Alta
- Estimativa de complexidade: G
-
CA07: Dado que o usuário clica em ”+ Novo Ajuste” / Quando o modal é aberto / Então o sistema deve exibir um formulário em 4 etapas: (1) Tipo de Operação, (2) Produto e Depósito, (3) Valores, (4) Motivo
- Status: Visível nas telas
-
CA08: Dado que o usuário seleciona “Entrada de Compra” / Quando preenche produto, depósito, quantidade (ex: 50) e custo unitário (ex: R$ 12,12) e clica em “Salvar” / Então o sistema deve incrementar o estoque físico do produto no depósito selecionado e atualizar o custo médio unitário
- Status: Visível nas telas
-
CA09: Dado que o usuário seleciona “Acréscimo Manual” / Quando preenche e salva / Então o sistema deve somar ao saldo sem alterar o custo médio unitário
- Status: Inferido (descrição visível no card da opção, comportamento não demonstrado)
-
CA10: Dado que o usuário seleciona “Baixa Manual” / Quando preenche e salva / Então o sistema deve subtrair do saldo físico do produto no depósito selecionado
- Status: Inferido (descrição visível no card da opção, comportamento não demonstrado)
-
CA11: Dado que o lançamento é salvo com sucesso / Quando o modal fecha / Então o sistema deve exibir a notificação “Lançamento realizado com sucesso!” e atualizar a tabela automaticamente
- Status: Visível nas telas
-
CA12: Dado que o usuário tenta salvar sem preencher campos obrigatórios (produto, depósito, quantidade, motivo) / Quando clica em “Salvar” / Então o sistema deve bloquear o envio e indicar os campos inválidos
- Status: A validar
-
RN04: “Entrada de Compra” é a única operação que impacta o custo médio unitário do produto
- Condição: Ao salvar com tipo “Entrada de Compra”
- Comportamento: O custo unitário informado é usado para recalcular o custo médio ponderado
-
RN05: Todo lançamento é vinculado a um depósito específico — não ao produto globalmente
- Condição: Sempre
- Comportamento: O saldo do produto é atualizado apenas no depósito selecionado
-
RN06: O campo “Motivo” deve ser preenchido obrigatoriamente
- Condição: Ao salvar qualquer tipo de lançamento
- Comportamento: O valor padrão observado é “Ajuste Manual” — outros motivos podem existir no dropdown (A validar)
- Depende de HU02 para que o produto e depósito existam no sistema
- A quantidade mínima para lançamento é 1 unidade (inferido — a validar)
- O campo “Custo Unitário” usa formato monetário brasileiro (R$ com vírgula decimal)
HU04: Transferir estoque entre depósitos
- Como operador de estoque
- Quero transferir unidades de um produto de um depósito de origem para um depósito de destino, informando a quantidade e uma observação opcional
- Para que eu possa redistribuir o inventário entre canais de venda ou locais físicos sem criar inconsistências no saldo global
- Prioridade sugerida: Alta
- Estimativa de complexidade: M
-
CA13: Dado que o usuário clica em “Transferir” na linha de um produto / Quando o modal é aberto / Então o sistema deve pré-preencher o produto selecionado e permitir escolher origem, destino e quantidade
- Status: Visível nas telas
-
CA14: Dado que o usuário define origem (ex: “Mercado Livre”), destino (ex: “Trainmec”) e quantidade (ex: 8) e clica em “Confirmar Transferência” / Quando a operação é processada / Então o sistema deve debitar a quantidade do depósito de origem e creditar no depósito de destino, mantendo o total físico global inalterado
- Status: Visível nas telas
-
CA15: Dado que a transferência é confirmada com sucesso / Quando o modal fecha / Então o sistema deve exibir a notificação “Transferência realizada com sucesso!” e a tabela deve atualizar a coluna “DEPÓSITOS” do produto (ex: de “1 DEPÓSITO” para “2 DEPÓSITOS”)
- Status: Visível nas telas
-
CA16: Dado que o usuário tenta transferir uma quantidade maior do que o saldo disponível no depósito de origem / Quando clica em “Confirmar Transferência” / Então o sistema deve bloquear a operação e exibir uma mensagem de erro
- Status: A validar
-
RN07: A transferência não altera o estoque físico total do produto — apenas redistribui entre depósitos
- Condição: Sempre que uma transferência é realizada
- Comportamento: Saldo de origem − N; saldo de destino + N; total global = igual
-
RN08: Após uma transferência para um novo depósito, o produto passa a aparecer com múltiplos depósitos na tabela
- Condição: Quando o produto ainda não tinha saldo no depósito de destino
- Comportamento: Coluna “DEPÓSITOS” incrementa o contador e a barra de progresso distribui proporcionalmente
- Depende de HU02 para que os depósitos de origem e destino estejam cadastrados
- Origem e destino não podem ser o mesmo depósito (inferido — a validar)
- O campo “Observação” é opcional, mas recomendado para rastreabilidade (A validar se há limite de caracteres)
HU05: Exportar inventário em formato CSV
- Como gestor de estoque
- Quero exportar a listagem atual do inventário para um arquivo CSV
- Para que eu possa processar os dados em planilhas, gerar relatórios externos ou auditar o estoque fora do sistema
- Prioridade sugerida: Média
- Estimativa de complexidade: P
-
CA17: Dado que o usuário clica no botão “CSV” no topo da tela / Quando o botão é clicado / Então o sistema deve iniciar o download de um arquivo no formato
.csvcom os dados visíveis na tabela- Status: A validar (botão visível nas telas, comportamento completo não demonstrado)
-
CA18: Dado que o usuário aplicou um filtro de depósito antes de exportar / Quando clicar em “CSV” / Então o arquivo exportado deve conter apenas os dados filtrados (A validar)
- Status: A validar
- RN09: O botão CSV está sempre visível na tela, independente de filtros aplicados
- Condição: Sempre que a tela de Estoque Unificado está carregada
- Comportamento: Botão “CSV” exibido ao lado do botão “Atualizar” no topo
- ⚠️ Fluxo não demonstrado no vídeo. Toda esta história deve ser validada com testes diretos no sistema.
- Pode depender de permissão de exportação no perfil do usuário (A validar)
HU06: Atualizar manualmente o inventário
- Como operador de estoque
- Quero clicar em um botão de “Atualizar” para recarregar os dados do inventário
- Para que eu possa garantir que estou vendo os saldos mais recentes, especialmente após operações realizadas por outros usuários ou integrações externas
- Prioridade sugerida: Baixa
- Estimativa de complexidade: P
- CA19: Dado que o usuário clica no botão “Atualizar” / Quando clicado / Então o sistema deve recarregar os dados da tabela e dos cards de métricas a partir do servidor
- Status: Inferido (botão visível nas telas, comportamento não demonstrado)
- RN10: O sistema exibe o status de sincronização “Online & Sync” no rodapé da barra lateral
- Condição: Sempre que o usuário está conectado
- Comportamento: Atualização automática em tempo real após operações locais; o botão “Atualizar” serve para buscar mudanças externas
- Comportamento de atualização pode ter relação com o status “Online & Sync” — se offline, pode não estar disponível (A validar)
🗂️ Backlog Sugerido
| ID | História | Prioridade | Tamanho |
|---|---|---|---|
| HU01 | Visualizar painel consolidado de estoque | Alta | P |
| HU02 | Listar e filtrar inventário por depósito e status | Alta | M |
| HU03 | Realizar lançamento de estoque por tipo de operação | Alta | G |
| HU04 | Transferir estoque entre depósitos | Alta | M |
| HU05 | Exportar inventário em formato CSV | Média | P |
| HU06 | Atualizar manualmente o inventário | Baixa | P |
Ordenado da maior para a menor prioridade sugerida.
📝 Definition of Ready
Checklist gerado a partir das telas analisadas:| Critério | HU01 | HU02 | HU03 | HU04 | HU05 | HU06 |
|---|---|---|---|---|---|---|
| ✅ Critérios de aceitação definidos | ✅ | ✅ | ✅ | ✅ | ⬜ | ⬜ |
| ✅ Regras de negócio mapeadas | ✅ | ✅ | ✅ | ✅ | ⬜ | ⬜ |
| ✅ Dependências identificadas | ✅ | ✅ | ✅ | ✅ | ⬜ | ⬜ |
| ✅ Protótipo/tela de referência disponível | ✅ | ✅ | ✅ | ✅ | ⬜ | ⬜ |
Legenda: ✅ Confirmado nas telas analisadas | ⬜ Pendente de validação