> ## Documentation Index
> Fetch the complete documentation index at: https://docs.domsoftware.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Estoque Unificado (Histórias)

> Épicos e Histórias de Usuário para Estoque Unificado

***

## 📌 É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

**✅ Critérios de Aceitação**

* **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

**📋 Regras de Negócio Relacionadas**

* **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

**⚠️ Restrições e Dependências**

* 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

**✅ Critérios de Aceitação**

* **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

**📋 Regras de Negócio Relacionadas**

* **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

**⚠️ Restrições e Dependências**

* 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

**✅ Critérios de Aceitação**

* **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

**📋 Regras de Negócio Relacionadas**

* **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)*

**⚠️ Restrições e Dependências**

* 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

**✅ Critérios de Aceitação**

* **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

**📋 Regras de Negócio Relacionadas**

* **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

**⚠️ Restrições e Dependências**

* 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

**✅ Critérios de Aceitação**

* **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 `.csv` com 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

**📋 Regras de Negócio Relacionadas**

* **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

**⚠️ Restrições e Dependências**

* ⚠️ *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

**✅ Critérios de Aceitação**

* **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)*

**📋 Regras de Negócio Relacionadas**

* **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

**⚠️ Restrições e Dependências**

* 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
