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