Visão Geral

O Sistema de Vendas é uma aplicação web desenvolvida com Node.js e Express que permite o gerenciamento básico de clientes, vendedores, produtos e pedidos, utilizando um banco de dados PostgreSQL estruturado conforme o `script_vendas.sql`. Este documento apresenta os requisitos funcionais e não funcionais que orientarão o desenvolvimento, respeitando estritamente o modelo de dados fornecido.

Requisitos Funcionais

Os requisitos funcionais descrevem as funcionalidades que o sistema deve oferecer, baseadas nas tabelas `cliente`, `vendedor`, `pedido`, `produto` e `item_pedido`:

RF01 - Gerenciamento de Produtos
  • RF01.1: O sistema deve permitir o cadastro de novos produtos com os seguintes atributos: código do produto (único), unidade, descrição e valor unitário.
  • RF01.2: O sistema deve validar se o código do produto já existe no banco de dados antes de realizar o cadastro.
  • RF01.3: O sistema deve permitir a edição das informações de produtos existentes (unidade, descrição, valor unitário).
  • RF01.4: O sistema deve permitir a exclusão de produtos (se não houver dependências em `item_pedido`).
  • RF01.5: O sistema deve permitir a listagem de produtos com opções de filtro por código e descrição.
  • RF01.6: O sistema deve permitir a ordenação da lista de produtos por código, descrição e valor unitário.
RF02 - Gerenciamento de Clientes
  • RF02.1: O sistema deve permitir o cadastro de novos clientes com os seguintes atributos: código do cliente (único), nome, endereço, cidade, CEP, UF, CNPJ e IE.
  • RF02.2: O sistema deve validar se o código do cliente já existe no banco de dados antes de realizar o cadastro.
  • RF02.3: O sistema deve permitir a edição das informações de clientes existentes.
  • RF02.4: O sistema deve permitir a exclusão de clientes (se não houver dependências em `pedido`).
  • RF02.5: O sistema deve permitir a listagem de clientes com opções de filtro por código, nome e cidade.
  • RF02.6: O sistema deve permitir a ordenação da lista de clientes por código e nome.
  • RF02.7: O sistema deve permitir a visualização dos pedidos associados a cada cliente.
RF03 - Gerenciamento de Vendedores
  • RF03.1: O sistema deve permitir o cadastro de novos vendedores com os seguintes atributos: código do vendedor (único), nome, salário fixo e faixa de comissão.
  • RF03.2: O sistema deve validar se o código do vendedor já existe no banco de dados antes de realizar o cadastro.
  • RF03.3: O sistema deve permitir a edição das informações de vendedores existentes.
  • RF03.4: O sistema deve permitir a exclusão de vendedores (se não houver dependências em `pedido`).
  • RF03.5: O sistema deve permitir a listagem de vendedores com opções de filtro por código e nome.
  • RF03.6: O sistema deve permitir a ordenação da lista de vendedores por código e nome.
  • RF03.7: O sistema deve permitir a visualização dos pedidos associados a cada vendedor.
RF04 - Registro de Pedidos
  • RF04.1: O sistema deve permitir o registro de novos pedidos com os seguintes atributos: número do pedido (único), prazo de entrega, código do cliente e código do vendedor.
  • RF04.2: O sistema deve validar se o número do pedido já existe e se os códigos de cliente e vendedor são válidos.
  • RF04.3: O sistema deve permitir a adição de múltiplos itens (produtos) a um pedido, especificando o código do produto e a quantidade.
  • RF04.4: O sistema deve validar se o código do produto existe ao adicionar um item ao pedido.
  • RF04.5: O sistema deve permitir a edição de pedidos existentes (prazo de entrega, cliente, vendedor) e seus itens (quantidade).
  • RF04.6: O sistema deve permitir a exclusão de pedidos e seus itens associados.
  • RF04.7: O sistema deve permitir a listagem de pedidos com opções de filtro por número do pedido, código do cliente e código do vendedor.
  • RF04.8: O sistema deve permitir a visualização detalhada de um pedido específico, incluindo todos os seus itens (produto, quantidade, valor unitário do produto, subtotal do item).
  • RF04.9: O sistema deve calcular e exibir o valor total de um pedido (soma dos subtotais dos itens).

Requisitos Não Funcionais

Os requisitos não funcionais descrevem as características e restrições do sistema:

RNF01 - Usabilidade
  • RNF01.1: A interface do sistema deve ser intuitiva e de fácil utilização, seguindo princípios de design responsivo.
  • RNF01.2: O sistema deve ser compatível com os principais navegadores web (Chrome, Firefox, Safari, Edge).
  • RNF01.3: O sistema deve fornecer feedback claro sobre as ações realizadas pelos usuários.
  • RNF01.4: O sistema deve implementar validação de formulários no lado do cliente e do servidor.
RNF02 - Desempenho
  • RNF02.1: O sistema deve responder a requisições em tempo hábil (ex: menos de 3 segundos).
  • RNF02.2: O sistema deve implementar paginação para listas com grande volume de dados.
  • RNF02.3: O sistema deve otimizar consultas ao banco de dados PostgreSQL.
RNF03 - Tecnologia
  • RNF03.1: O backend da aplicação deve ser desenvolvido em Node.js utilizando o framework Express.
  • RNF03.2: O banco de dados utilizado deve ser o PostgreSQL.
  • RNF03.3: O frontend pode ser desenvolvido com HTML, CSS e JavaScript puro ou com um framework simples (a definir).
  • RNF03.4: O controle de versão deve ser feito utilizando Git.
RNF04 - Segurança
  • RNF04.1: O sistema deve proteger contra ataques comuns como SQL Injection (utilizando consultas parametrizadas).
  • RNF04.2: Dados sensíveis (se houver, como senhas futuras) devem ser armazenados de forma segura (hash).

Próximos Passos

Com os requisitos alinhados ao modelo de dados, podemos prosseguir para a modelagem detalhada e a arquitetura da aplicação.