> ## 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.

# Requisitos Funcionais

> Mapeamento completo dos Requisitos Funcionais (RFs) e Regras de Negócio do OmniDom.

Este documento serve como a base de escopo do OmniDom, unificando o que o sistema é capaz de fazer sob a ótica do negócio e do usuário.

***

## 1. Módulo de Autenticação e Empresa (Tenant)

Este módulo rege o controle de acesso e isolamento de dados das empresas clientes (SaaS).

| ID             | Nome do Requisito    | Descrição                                                                                                                                                                   | Prioridade |
| -------------- | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
| **RF-AUTH-01** | Login com JWT        | O sistema deve permitir o login de usuários usando email e senha, retornando um Access Token (JWT) e salvando um Refresh Token seguro (HttpOnly Cookie).                    | Alta       |
| **RF-AUTH-02** | Isolamento de Tenant | Todos os dados (produtos, pedidos, configurações) devem ser estritamente filtrados pelo `tenantId` da empresa ativa na sessão, prevenindo vazamentos entre contas cruzadas. | Crítica    |
| **RF-AUTH-03** | Auto-Renovação       | O sistema deve silenciosamente renovar a sessão do usuário enviando o Refresh Token antes que o Access Token expire, garantindo uma UX ininterrupta.                        | Alta       |
| **RF-ORG-01**  | Cadastro Fiscal      | O administrador do Tenant deve conseguir cadastrar Razão Social, CNPJ e Inscrição Estadual para fins de emissão de NF-e.                                                    | Alta       |
| **RF-ORG-02**  | Endereço Fiscal      | Permitir o cadastro de CEP, logradouro e município que serão usados como ponto de partida das coletas (Logística Meli/Shopee).                                              | Alta       |

***

## 2. PIM (Catálogo de Produtos)

O coração do hub: engloba os anúncios, produtos básicos, kits compostos e cálculo de custos.

| ID            | Nome do Requisito                  | Descrição                                                                                                                                                                                  | Prioridade |
| ------------- | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------- |
| **RF-CAT-01** | Cadastro de Produtos Simples       | Permitir o cadastro de itens básicos contendo Nome, SKU (único por tenant), Preço de Custo e Preço de Venda.                                                                               | Crítica    |
| **RF-CAT-02** | Cadastro de Variações              | Produtos devem poder ter grades de variação (Ex: Cor e Tamanho), cada uma com o seu próprio SKU, Preço de Venda e Saldo de Estoque.                                                        | Alta       |
| **RF-CAT-03** | Composição de Kits                 | Permitir a criação de um Produto tipo `KIT`. O Kit deve possuir uma lista de "Componentes" (produtos simples) com suas respectivas quantidades e porcentagem de quebra estrutural (perda). | Crítica    |
| **RF-CAT-04** | Dedução Dinâmica de Estoque (Kits) | Na venda de um Kit, o estoque abaixado *deve ser o dos produtos simples* que o compõem. O estoque virtual do kit deve ser recalculado baseado no componente com menor disponibilidade.     | Crítica    |
| **RF-CAT-05** | Cálculo Automatizado de Custo      | O custo de um produto do tipo Kit deve ser calculado dinamicamente baseando-se no Preço de Custo somado e ponderado de todos os seus componentes ativos.                                   | Alta       |

***

## 3. Integrações e Anúncios (Listings)

A relação do catálogo interno com as plataformas de venda.

| ID            | Nome do Requisito                      | Descrição                                                                                                                                                    | Prioridade |
| ------------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------- |
| **RF-INT-01** | Conexão OAuth Mercado Livre            | Permitir que o tenant autorize a conta do ML através do fluxo oAuth 2.0. Os tokens gerados devem ser renovados ativamente via CRON (Scheduler).              | Crítica    |
| **RF-INT-02** | Conexão OAuth Shopee                   | Permitir a autorização da Shopee recebendo e manipulando Code Auth via URL Callbacks.                                                                        | Crítica    |
| **RF-INT-03** | Criptografia de Credenciais            | As chaves e tokens OAuth devolvidos pelas plataformas devem ser salvas no bando de dados do OmniDom com encriptação forte (AES).                             | Crítica    |
| **RF-LST-01** | Importação de Anúncios                 | Ao conectar, o sistema deve disparar um job (BullMQ) resgatando todos os anúncios ativos da conta externa.                                                   | Alta       |
| **RF-LST-02** | Vinculação Manual a SKU Interno        | Quando o SKU não bater, a interface deve permitir ligar o anúncio externo a um Produto existente no Hub, validando estoques.                                 | Alta       |
| **RF-LST-03** | Atualização Simultânea de Status/Preço | Alterações de preço e status (Pausar/Ativar) do anúncio feitas na tabela do OmniDom devem ser propagadas individualmente às APIs do ML/Shopee na mesma hora. | Alta       |

***

## 4. Gestão de Estoque e Compras (Inventário)

Movimentação de mercadorias.

| ID            | Nome do Requisito                | Descrição                                                                                                                                                                 | Prioridade |
| ------------- | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
| **RF-INV-01** | Multi-Depósito (Warehouses)      | Permitir que o estoque total seja divido em múltiplos depósitos (físicos, lojas matriz/filial).                                                                           | Média      |
| **RF-INV-02** | Transações Físicas vs Reservadas | Exibir o estoque em divisões claras: "Saldo Físico", "Reservado em Pedidos", "Disponível aos Anúncios".                                                                   | Crítica    |
| **RF-INV-03** | Entrada Manual                   | Permitir adicionar ajustes avulsos indicando Depósito de Destino, Produto, Quantidade e Valor de Compra isolado.                                                          | Alta       |
| **RF-FIS-01** | Importação XML via Fiscal        | Permitir a subida de um arquivo `XML` de NF-e e, a partir dele, detectar a grade, cadastrar novos SKUs automaticamente e somar aos estoques sem intervenção humana longa. | Média      |

***

## 5. Pedidos de Venda e Expedição

Como a venda tramita e sai da empresa.

| ID            | Nome do Requisito                  | Descrição                                                                                                                                                          | Prioridade |
| ------------- | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------- |
| **RF-ORD-01** | Escuta Ativa Via Webhooks          | O backend deve sempre receber atualizações (novo pedido aprovado, pedido despachado) através das URLs de Push Notifications criadas nos developers do Meli/Shopee. | Crítica    |
| **RF-ORD-02** | Reserva Antecipada (Pendente)      | Boletos ou vendas pendentes devem deduzir o estoque imediatamente como "Estoque Reservado", a fim de não criar overbooking com a regra do Kit dinâmico.            | Crítica    |
| **RF-ORD-03** | Faturamento em Lote (Emissão NF-e) | A tela deve capacitar a seleção de dezenas de pedidos, disparando emissões para a SEFAZ de forma encadeada (Fila/Job).                                             | Crítica    |
| **RF-ORD-04** | Etiquetas de Envio                 | Após faturamento, o usuário pode selecionar lotes e o sistema solicitará o PDF ou código ZPL combinando as etiquetas das transportadoras.                          | Alta       |
| **RF-ORD-05** | Separação de Kits                  | O detalhe do Pedido deve ser capaz de exibir ordens de Kitt "desmontadas" para auxiliar o operador logístico no *picking* correto das caixas.                      | Alta       |
