mirror of
https://github.com/welton89/RRBEC.git
synced 2026-04-05 05:25:40 +00:00
doc: first docs
This commit is contained in:
32
doc/App Cliente/App Cliente - Visão Geral.md
Normal file
32
doc/App Cliente/App Cliente - Visão Geral.md
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# BarApp - Visão Geral
|
||||||
|
|
||||||
|
O **BarApp** é um aplicativo mobile desenvolvido para clientes de bares, com o objetivo de modernizar e otimizar a experiência de consumo e interação dentro do estabelecimento. Ele oferece uma gama de funcionalidades que permitem ao usuário ter maior controle sobre seus gastos, acesso rápido a produtos e eventos, e uma forma inovadora de interagir com o bar.
|
||||||
|
|
||||||
|
## Principais Funcionalidades:
|
||||||
|
|
||||||
|
- **Cardápio Digital:** Visualize o cardápio completo com detalhes dos produtos.
|
||||||
|
|
||||||
|
- **Compra e Gestão de Tickets:** Adquira tickets de produtos diretamente pelo app, armazene-os em uma carteira digital e utilize-os no balcão ou com o garçom.
|
||||||
|
|
||||||
|
- **Transferência de Tickets:** Compartilhe tickets com amigos através de QR Codes.
|
||||||
|
|
||||||
|
- **Venda de Ingressos:** Compre ingressos para eventos exclusivos do bar.
|
||||||
|
|
||||||
|
- **Karaokê:** Acompanhe a fila de cantores do karaokê em tempo real.
|
||||||
|
|
||||||
|
- **Comanda Digital:** Consulte sua comanda de consumo e realize pagamentos (total ou parcial) via Pix, crédito ou débito, com a opção de cadastrar cartões.
|
||||||
|
|
||||||
|
- **Login Social:** Facilidade de acesso via conta Google.
|
||||||
|
|
||||||
|
|
||||||
|
## Documentos Relacionados:
|
||||||
|
|
||||||
|
- [[Requisitos - Aplicativo Cliente]]
|
||||||
|
|
||||||
|
- [[Casos de Uso - Aplicativo Cliente]]
|
||||||
|
|
||||||
|
- [[Histórias de Usuário - Aplicativo Cliente]]
|
||||||
|
|
||||||
|
- [[Modelagem de Banco de Dados]]
|
||||||
|
|
||||||
|
- [[Visão Geral do Projeto]]
|
||||||
336
doc/App Cliente/Casos de Uso - Aplicativo Cliente.md
Normal file
336
doc/App Cliente/Casos de Uso - Aplicativo Cliente.md
Normal file
@@ -0,0 +1,336 @@
|
|||||||
|
# Casos de Uso do Aplicativo BarApp
|
||||||
|
|
||||||
|
Este documento descreve os principais casos de uso do aplicativo BarApp, detalhando as interações entre os atores (usuários) e o sistema.
|
||||||
|
|
||||||
|
## Atores
|
||||||
|
|
||||||
|
- **Usuário:** Cliente do bar que utiliza o aplicativo.
|
||||||
|
|
||||||
|
- **Garçom/Atendente:** Funcionário do bar que interage com o aplicativo para validar tickets/comandas.
|
||||||
|
|
||||||
|
- **Sistema de Pagamento:** Serviço externo responsável por processar transações financeiras.
|
||||||
|
|
||||||
|
- **Sistema de Autenticação Social (Google):** Serviço externo para autenticação via conta Google.
|
||||||
|
|
||||||
|
|
||||||
|
## Casos de Uso
|
||||||
|
|
||||||
|
### 1. Gerenciamento de Usuários
|
||||||
|
|
||||||
|
#### CU001: Cadastrar Usuário
|
||||||
|
|
||||||
|
- **Nome:** Cadastrar Usuário
|
||||||
|
|
||||||
|
- **Ator:** Usuário
|
||||||
|
|
||||||
|
- **Descrição:** Permite que um novo usuário crie uma conta no aplicativo.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Usuário acessa a tela de cadastro.
|
||||||
|
|
||||||
|
2. Usuário preenche os campos obrigatórios (nome, e-mail, senha).
|
||||||
|
|
||||||
|
3. Sistema valida os dados.
|
||||||
|
|
||||||
|
4. Sistema cria a conta do usuário e o autentica.
|
||||||
|
|
||||||
|
|
||||||
|
#### CU002: Alterar Senha
|
||||||
|
|
||||||
|
- **Nome:** Alterar Senha
|
||||||
|
|
||||||
|
- **Ator:** Usuário
|
||||||
|
|
||||||
|
- **Descrição:** Permite que um usuário autenticado modifique sua senha de acesso.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Usuário acessa a tela de alteração de senha.
|
||||||
|
|
||||||
|
2. Usuário informa a senha atual e a nova senha (duas vezes para confirmação).
|
||||||
|
|
||||||
|
3. Sistema valida a senha atual e a nova senha.
|
||||||
|
|
||||||
|
4. Sistema atualiza a senha do usuário.
|
||||||
|
|
||||||
|
|
||||||
|
#### CU003: Realizar Login Social (Google)
|
||||||
|
|
||||||
|
- **Nome:** Realizar Login Social (Google)
|
||||||
|
|
||||||
|
- **Ator:** Usuário, Sistema de Autenticação Social (Google)
|
||||||
|
|
||||||
|
- **Descrição:** Permite que o usuário faça login usando sua conta Google.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Usuário seleciona a opção "Login com Google".
|
||||||
|
|
||||||
|
2. Sistema redireciona para a tela de autenticação do Google.
|
||||||
|
|
||||||
|
3. Usuário autentica-se com sua conta Google.
|
||||||
|
|
||||||
|
4. Sistema de Autenticação Social retorna os dados do usuário para o BarApp.
|
||||||
|
|
||||||
|
5. BarApp cria ou vincula a conta do usuário e o autentica.
|
||||||
|
|
||||||
|
|
||||||
|
### 2. Cardápio e Tickets
|
||||||
|
|
||||||
|
#### CU004: Visualizar Cardápio
|
||||||
|
|
||||||
|
- **Nome:** Visualizar Cardápio
|
||||||
|
|
||||||
|
- **Ator:** Usuário
|
||||||
|
|
||||||
|
- **Descrição:** Permite que o usuário navegue pelos produtos disponíveis no bar.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Usuário acessa a tela do cardápio.
|
||||||
|
|
||||||
|
2. Sistema exibe a lista de produtos com nome, preço, descrição e imagem.
|
||||||
|
|
||||||
|
|
||||||
|
#### CU005: Adicionar Ticket à Cesta
|
||||||
|
|
||||||
|
- **Nome:** Adicionar Ticket à Cesta
|
||||||
|
|
||||||
|
- **Ator:** Usuário
|
||||||
|
|
||||||
|
- **Descrição:** Permite que o usuário selecione um produto e adicione tickets correspondentes à sua cesta de compras.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Usuário visualiza o cardápio.
|
||||||
|
|
||||||
|
2. Usuário seleciona um produto e a quantidade de tickets desejada.
|
||||||
|
|
||||||
|
3. Sistema adiciona os tickets à cesta de compras do usuário.
|
||||||
|
|
||||||
|
|
||||||
|
#### CU006: Visualizar Cesta de Compras
|
||||||
|
|
||||||
|
- **Nome:** Visualizar Cesta de Compras
|
||||||
|
|
||||||
|
- **Ator:** Usuário
|
||||||
|
|
||||||
|
- **Descrição:** Permite que o usuário revise os itens selecionados antes de finalizar a compra.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Usuário acessa a tela da cesta de compras.
|
||||||
|
|
||||||
|
2. Sistema exibe os produtos, quantidades e valor total na cesta.
|
||||||
|
|
||||||
|
|
||||||
|
#### CU007: Comprar Tickets
|
||||||
|
|
||||||
|
- **Nome:** Comprar Tickets
|
||||||
|
|
||||||
|
- **Ator:** Usuário, Sistema de Pagamento
|
||||||
|
|
||||||
|
- **Descrição:** Permite que o usuário finalize a compra dos tickets na cesta de compras.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Usuário está na tela da cesta de compras.
|
||||||
|
|
||||||
|
2. Usuário seleciona a opção "Finalizar Compra".
|
||||||
|
|
||||||
|
3. Usuário escolhe o método de pagamento.
|
||||||
|
|
||||||
|
4. Sistema de Pagamento processa a transação.
|
||||||
|
|
||||||
|
5. Sistema registra os tickets comprados na carteira do usuário.
|
||||||
|
|
||||||
|
|
||||||
|
#### CU008: Visualizar Carteira de Tickets
|
||||||
|
|
||||||
|
- **Nome:** Visualizar Carteira de Tickets
|
||||||
|
|
||||||
|
- **Ator:** Usuário
|
||||||
|
|
||||||
|
- **Descrição:** Permite que o usuário veja os tickets que possui e ainda não utilizou.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Usuário acessa a tela da carteira de tickets.
|
||||||
|
|
||||||
|
2. Sistema exibe a lista de tickets disponíveis, com detalhes e prazo de validade.
|
||||||
|
|
||||||
|
|
||||||
|
#### CU009: Visualizar Histórico de Tickets
|
||||||
|
|
||||||
|
- **Nome:** Visualizar Histórico de Tickets
|
||||||
|
|
||||||
|
- **Ator:** Usuário
|
||||||
|
|
||||||
|
- **Descrição:** Permite que o usuário consulte o registro de todos os tickets comprados e utilizados.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Usuário acessa a tela de histórico de tickets.
|
||||||
|
|
||||||
|
2. Sistema exibe a lista de tickets com datas de compra e uso.
|
||||||
|
|
||||||
|
|
||||||
|
#### CU010: Transferir Ticket
|
||||||
|
|
||||||
|
- **Nome:** Transferir Ticket
|
||||||
|
|
||||||
|
- **Ator:** Usuário (remetente), Usuário (destinatário)
|
||||||
|
|
||||||
|
- **Descrição:** Permite que um usuário transfira um ou mais tickets para outro usuário.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Usuário (remetente) seleciona tickets na carteira para transferência.
|
||||||
|
|
||||||
|
2. Sistema gera um QR Code para a transferência.
|
||||||
|
|
||||||
|
3. Usuário (destinatário) lê o QR Code gerado pelo remetente.
|
||||||
|
|
||||||
|
4. Sistema remove os tickets da carteira do remetente e adiciona à carteira do destinatário.
|
||||||
|
|
||||||
|
|
||||||
|
#### CU011: Receber Ticket
|
||||||
|
|
||||||
|
- **Nome:** Receber Ticket
|
||||||
|
|
||||||
|
- **Ator:** Usuário (destinatário), Usuário (remetente)
|
||||||
|
|
||||||
|
- **Descrição:** Permite que um usuário receba tickets transferidos por outro usuário.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Usuário (destinatário) acessa a função de "Receber Ticket" e ativa a câmera.
|
||||||
|
|
||||||
|
2. Usuário (destinatário) escaneia o QR Code de transferência gerado pelo remetente.
|
||||||
|
|
||||||
|
3. Sistema valida o QR Code e adiciona os tickets à carteira do destinatário.
|
||||||
|
|
||||||
|
|
||||||
|
#### CU012: Utilizar Ticket
|
||||||
|
|
||||||
|
- **Nome:** Utilizar Ticket
|
||||||
|
|
||||||
|
- **Ator:** Usuário, Garçom/Atendente
|
||||||
|
|
||||||
|
- **Descrição:** Permite que o usuário troque um ticket por um produto no bar.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Usuário seleciona um ticket na carteira para uso.
|
||||||
|
|
||||||
|
2. Sistema gera um QR Code único para o ticket.
|
||||||
|
|
||||||
|
3. Garçom/Atendente lê o QR Code com um dispositivo próprio.
|
||||||
|
|
||||||
|
4. Sistema valida o ticket e o marca como utilizado, registrando a data e hora.
|
||||||
|
|
||||||
|
|
||||||
|
### 3. Pagamento
|
||||||
|
|
||||||
|
#### CU013: Efetuar Pagamento da Cesta
|
||||||
|
|
||||||
|
- **Nome:** Efetuar Pagamento da Cesta
|
||||||
|
|
||||||
|
- **Ator:** Usuário, Sistema de Pagamento
|
||||||
|
|
||||||
|
- **Descrição:** Processa o pagamento dos tickets na cesta de compras. (Já coberto em CU007, mas pode ser um caso de uso separado para o processo de pagamento em si).
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Usuário confirma os itens na cesta.
|
||||||
|
|
||||||
|
2. Usuário seleciona o método de pagamento (Pix, Cartão de Crédito/Débito).
|
||||||
|
|
||||||
|
3. Se for Pix, sistema exibe QR Code/código.
|
||||||
|
|
||||||
|
4. Se for cartão, usuário insere dados ou seleciona cartão cadastrado.
|
||||||
|
|
||||||
|
5. Sistema integra com o Sistema de Pagamento para finalizar a transação.
|
||||||
|
|
||||||
|
6. Sistema confirma o pagamento e atualiza o status dos tickets.
|
||||||
|
|
||||||
|
|
||||||
|
#### CU014: Cadastrar Cartão de Crédito/Débito
|
||||||
|
|
||||||
|
- **Nome:** Cadastrar Cartão de Crédito/Débito
|
||||||
|
|
||||||
|
- **Ator:** Usuário, Sistema de Pagamento
|
||||||
|
|
||||||
|
- **Descrição:** Permite que o usuário armazene dados de cartão para pagamentos futuros.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Usuário acessa a seção de gerenciamento de pagamentos.
|
||||||
|
|
||||||
|
2. Usuário seleciona a opção "Adicionar Cartão".
|
||||||
|
|
||||||
|
3. Usuário insere os dados do cartão (número, validade, CVV, nome do titular).
|
||||||
|
|
||||||
|
4. Sistema de Pagamento tokeniza e armazena os dados do cartão de forma segura.
|
||||||
|
|
||||||
|
5. Sistema confirma o cadastro do cartão.
|
||||||
|
|
||||||
|
|
||||||
|
#### CU015: Efetuar Pagamento da Comanda
|
||||||
|
|
||||||
|
- **Nome:** Efetuar Pagamento da Comanda
|
||||||
|
|
||||||
|
- **Ator:** Usuário, Garçom/Atendente, Sistema de Pagamento
|
||||||
|
|
||||||
|
- **Descrição:** Permite que o usuário visualize e pague sua comanda de consumo.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Garçom/Atendente fornece um QR Code da comanda ao usuário.
|
||||||
|
|
||||||
|
2. Usuário escaneia o QR Code da comanda.
|
||||||
|
|
||||||
|
3. Sistema exibe os detalhes da comanda (itens, valores, total).
|
||||||
|
|
||||||
|
4. Usuário seleciona a opção de pagamento (total ou parcial) e o método (Pix, Cartão).
|
||||||
|
|
||||||
|
5. Sistema de Pagamento processa a transação.
|
||||||
|
|
||||||
|
6. Sistema atualiza o status da comanda no sistema do bar.
|
||||||
|
|
||||||
|
|
||||||
|
### 4. Eventos e Karaokê
|
||||||
|
|
||||||
|
#### CU016: Comprar Ingresso para Evento
|
||||||
|
|
||||||
|
- **Nome:** Comprar Ingresso para Evento
|
||||||
|
|
||||||
|
- **Ator:** Usuário, Sistema de Pagamento
|
||||||
|
|
||||||
|
- **Descrição:** Permite que o usuário adquira ingressos para eventos do bar.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Usuário acessa a tela de eventos.
|
||||||
|
|
||||||
|
2. Usuário seleciona um evento e a quantidade de ingressos.
|
||||||
|
|
||||||
|
3. Usuário prossegue para o pagamento (similar ao CU007).
|
||||||
|
|
||||||
|
4. Sistema registra os ingressos na seção de ingressos do usuário.
|
||||||
|
|
||||||
|
|
||||||
|
#### CU017: Visualizar Fila do Karaokê
|
||||||
|
|
||||||
|
- **Nome:** Visualizar Fila do Karaokê
|
||||||
|
|
||||||
|
- **Ator:** Usuário
|
||||||
|
|
||||||
|
- **Descrição:** Permite que o usuário veja a ordem das pessoas para cantar no karaokê.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Usuário acessa a tela do karaokê.
|
||||||
|
|
||||||
|
2. Sistema exibe a fila atualizada em tempo real.
|
||||||
273
doc/App Cliente/Histórias de Usuário - Aplicativo Cliente.md
Normal file
273
doc/App Cliente/Histórias de Usuário - Aplicativo Cliente.md
Normal file
@@ -0,0 +1,273 @@
|
|||||||
|
# Histórias de Usuário do Aplicativo BarApp
|
||||||
|
|
||||||
|
Este documento apresenta as histórias de usuário para o aplicativo BarApp, focando na perspectiva do usuário e no valor que cada funcionalidade entrega.
|
||||||
|
|
||||||
|
## 1. Gerenciamento de Usuários
|
||||||
|
|
||||||
|
- **HU001 - Cadastro:**
|
||||||
|
|
||||||
|
- **Como um** novo cliente,
|
||||||
|
|
||||||
|
- **Eu quero** me cadastrar no aplicativo,
|
||||||
|
|
||||||
|
- **Para que** eu possa acessar todas as funcionalidades e personalizar minha experiência.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- Dados de cadastro (nome, e-mail, senha) são coletados.
|
||||||
|
|
||||||
|
- E-mail é validado para formato correto.
|
||||||
|
|
||||||
|
- Senha atende aos requisitos de segurança (e.g., mínimo de 8 caracteres, maiúscula, minúscula, número).
|
||||||
|
|
||||||
|
- Usuário é autenticado e redirecionado para a tela principal após o cadastro.
|
||||||
|
|
||||||
|
- **HU002 - Alteração de Senha:**
|
||||||
|
|
||||||
|
- **Como um** usuário cadastrado,
|
||||||
|
|
||||||
|
- **Eu quero** alterar minha senha,
|
||||||
|
|
||||||
|
- **Para que** eu possa manter minha conta segura.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- Usuário deve informar a senha atual corretamente.
|
||||||
|
|
||||||
|
- Nova senha deve ser confirmada e atender aos requisitos de segurança.
|
||||||
|
|
||||||
|
- Sistema deve informar sucesso ou falha na alteração da senha.
|
||||||
|
|
||||||
|
- **HU003 - Login Social (Google):**
|
||||||
|
|
||||||
|
- **Como um** cliente com conta Google,
|
||||||
|
|
||||||
|
- **Eu quero** fazer login usando minha conta Google,
|
||||||
|
|
||||||
|
- **Para que** eu não precise criar e lembrar de mais uma senha.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- Opção de login com Google está visível na tela de login.
|
||||||
|
|
||||||
|
- Usuário é redirecionado para a autenticação do Google.
|
||||||
|
|
||||||
|
- Após autenticação, usuário é logado no aplicativo.
|
||||||
|
|
||||||
|
|
||||||
|
## 2. Cardápio e Compra de Tickets
|
||||||
|
|
||||||
|
- **HU004 - Visualização do Cardápio:**
|
||||||
|
|
||||||
|
- **Como um** cliente,
|
||||||
|
|
||||||
|
- **Eu quero** visualizar o cardápio de produtos do bar,
|
||||||
|
|
||||||
|
- **Para que** eu possa escolher o que consumir.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- Cardápio exibe nome, preço, descrição e imagem para cada produto.
|
||||||
|
|
||||||
|
- Cardápio é fácil de navegar.
|
||||||
|
|
||||||
|
- **HU005 - Compra de Ticket:**
|
||||||
|
|
||||||
|
- **Como um** cliente,
|
||||||
|
|
||||||
|
- **Eu quero** comprar tickets para produtos do cardápio,
|
||||||
|
|
||||||
|
- **Para que** eu possa ter meus produtos garantidos e evitar filas no caixa.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- É possível selecionar a quantidade de tickets para um produto.
|
||||||
|
|
||||||
|
- Sistema aplica limite de compra por produto/usuário.
|
||||||
|
|
||||||
|
- Tickets são adicionados à cesta de compras.
|
||||||
|
|
||||||
|
- **HU006 - Visualização da Cesta de Compras:**
|
||||||
|
|
||||||
|
- **Como um** cliente,
|
||||||
|
|
||||||
|
- **Eu quero** ver os itens que adicionei à minha cesta,
|
||||||
|
|
||||||
|
- **Para que** eu possa revisar meu pedido antes de pagar.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- Cesta exibe nome do produto, quantidade e subtotal.
|
||||||
|
|
||||||
|
- Total da compra é exibido.
|
||||||
|
|
||||||
|
- É possível remover itens da cesta.
|
||||||
|
|
||||||
|
|
||||||
|
## 3. Carteira e Uso de Tickets
|
||||||
|
|
||||||
|
- **HU007 - Visualização da Carteira de Tickets:**
|
||||||
|
|
||||||
|
- **Como um** cliente,
|
||||||
|
|
||||||
|
- **Eu quero** ver todos os tickets que comprei e ainda não usei,
|
||||||
|
|
||||||
|
- **Para que** eu saiba o que tenho disponível para consumir.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- Carteira exibe tickets disponíveis, com nome do produto e quantidade.
|
||||||
|
|
||||||
|
- Prazo de validade dos tickets é exibido claramente.
|
||||||
|
|
||||||
|
- **HU008 - Visualização do Histórico de Tickets:**
|
||||||
|
|
||||||
|
- **Como um** cliente,
|
||||||
|
|
||||||
|
- **Eu quero** ver meu histórico de tickets comprados e usados,
|
||||||
|
|
||||||
|
- **Para que** eu possa acompanhar meus gastos e consumo.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- Histórico exibe data e hora da compra.
|
||||||
|
|
||||||
|
- Histórico exibe data e hora do uso (se aplicável).
|
||||||
|
|
||||||
|
- Tickets usados e não usados são diferenciados visualmente.
|
||||||
|
|
||||||
|
- **HU009 - Transferência de Ticket (Gerar QR Code):**
|
||||||
|
|
||||||
|
- **Como um** cliente,
|
||||||
|
|
||||||
|
- **Eu quero** transferir tickets para outro usuário,
|
||||||
|
|
||||||
|
- **Para que** eu possa presentear amigos ou dividir tickets.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- É possível selecionar tickets da carteira para transferência.
|
||||||
|
|
||||||
|
- Um QR Code único é gerado para a transferência.
|
||||||
|
|
||||||
|
- Tickets são removidos da carteira do remetente após a transferência ser concluída.
|
||||||
|
|
||||||
|
- **HU010 - Recebimento de Ticket (Ler QR Code):**
|
||||||
|
|
||||||
|
- **Como um** cliente,
|
||||||
|
|
||||||
|
- **Eu quero** receber tickets de outro usuário lendo um QR Code,
|
||||||
|
|
||||||
|
- **Para que** eu possa aceitar tickets transferidos por amigos.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- Funcionalidade de leitura de QR Code é acessível.
|
||||||
|
|
||||||
|
- Após a leitura de um QR Code válido, tickets são adicionados à carteira do destinatário.
|
||||||
|
|
||||||
|
- **HU011 - Uso de Ticket:**
|
||||||
|
|
||||||
|
- **Como um** cliente,
|
||||||
|
|
||||||
|
- **Eu quero** usar um ticket da minha carteira para pegar um produto,
|
||||||
|
|
||||||
|
- **Para que** eu possa consumir o que comprei.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- Ao tocar no ticket, um QR Code único é gerado.
|
||||||
|
|
||||||
|
- QR Code é lido pelo garçom.
|
||||||
|
|
||||||
|
- Ticket é marcado como usado no sistema.
|
||||||
|
|
||||||
|
|
||||||
|
## 4. Pagamento
|
||||||
|
|
||||||
|
- **HU012 - Pagamento da Cesta:**
|
||||||
|
|
||||||
|
- **Como um** cliente,
|
||||||
|
|
||||||
|
- **Eu quero** pagar minha cesta de tickets,
|
||||||
|
|
||||||
|
- **Para que** eu possa ter os tickets na minha carteira.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- Opções de pagamento (Pix, Crédito, Débito) são apresentadas.
|
||||||
|
|
||||||
|
- Transação é processada com sucesso pelo método escolhido.
|
||||||
|
|
||||||
|
- Tickets são liberados para a carteira após confirmação do pagamento.
|
||||||
|
|
||||||
|
- **HU013 - Cadastro de Cartão:**
|
||||||
|
|
||||||
|
- **Como um** cliente,
|
||||||
|
|
||||||
|
- **Eu quero** cadastrar meus cartões de pagamento,
|
||||||
|
|
||||||
|
- **Para que** eu possa pagar mais rapidamente em compras futuras.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- Dados do cartão são coletados de forma segura.
|
||||||
|
|
||||||
|
- Cartão é armazenado para uso futuro.
|
||||||
|
|
||||||
|
- Opção de selecionar cartão cadastrado aparece nas telas de pagamento.
|
||||||
|
|
||||||
|
- **HU014 - Pagamento da Comanda:**
|
||||||
|
|
||||||
|
- **Como um** cliente,
|
||||||
|
|
||||||
|
- **Eu quero** visualizar e pagar minha comanda de consumo pelo aplicativo,
|
||||||
|
|
||||||
|
- **Para que** eu tenha controle dos meus gastos e agilidade no pagamento.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- É possível escanear um QR Code da comanda fornecido pelo garçom.
|
||||||
|
|
||||||
|
- Comanda exibe itens consumidos e valor total.
|
||||||
|
|
||||||
|
- É possível efetuar o pagamento total ou parcial da comanda.
|
||||||
|
|
||||||
|
- Status da comanda é atualizado após o pagamento.
|
||||||
|
|
||||||
|
|
||||||
|
## 5. Eventos e Karaokê
|
||||||
|
|
||||||
|
- **HU015 - Compra de Ingresso para Evento:**
|
||||||
|
|
||||||
|
- **Como um** cliente,
|
||||||
|
|
||||||
|
- **Eu quero** comprar ingressos para eventos do bar,
|
||||||
|
|
||||||
|
- **Para que** eu possa garantir minha entrada e participar das festas.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- Lista de eventos disponíveis é exibida com detalhes (nome, data, preço).
|
||||||
|
|
||||||
|
- É possível selecionar a quantidade de ingressos.
|
||||||
|
|
||||||
|
- Pagamento é processado com sucesso.
|
||||||
|
|
||||||
|
- Ingressos aparecem na minha seção de ingressos.
|
||||||
|
|
||||||
|
- **HU016 - Visualização da Fila do Karaokê:**
|
||||||
|
|
||||||
|
- **Como um** cliente,
|
||||||
|
|
||||||
|
- **Eu quero** visualizar a fila de pessoas para cantar no karaokê,
|
||||||
|
|
||||||
|
- **Para que** eu possa saber quando será minha vez ou a de meus amigos.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- Fila é exibida em tempo real.
|
||||||
|
|
||||||
|
- Nomes das pessoas na fila são visíveis.
|
||||||
|
|
||||||
|
- Ordem da fila é clara.
|
||||||
248
doc/App Cliente/Requisitos - Aplicativo Cliente.md
Normal file
248
doc/App Cliente/Requisitos - Aplicativo Cliente.md
Normal file
@@ -0,0 +1,248 @@
|
|||||||
|
estou desenvolvendo um aplicativo mobile para um bar, onde: poderá ver o cardápio, haverá venda e armazenamento de tickets, para que depois possa ser trocado por produto no local, venda de ingressos para eventos, visualizar fila de pessoa que vão cantar no karaokê, visualizar e efetuar pagamento da sua comanda de consumo.
|
||||||
|
algumas características do app:
|
||||||
|
* o usuário pode efetuar um Cadastro
|
||||||
|
* pode Alterar sua senha
|
||||||
|
* pode fazer Login social(com uma conta Google)
|
||||||
|
* visualizar o cardápio de produtos disponíveis com nome, preço, descrição e imagem
|
||||||
|
* Comprar ticket referente ao produto
|
||||||
|
* deve haver um limite de compra de tickets de um mesmo produto por usuário
|
||||||
|
* deve haver uma carteira de tickets para ser armazenados os tickets comprados
|
||||||
|
* os tickets podem ter prazo de validade
|
||||||
|
* o usuário pode ver seu histórico de tickets (data e hora da compra e de uso)
|
||||||
|
* deve haver uma "cesta de compra" onde o usuário pode ir armazenando os tickets para depois efetuar o pagamento dos mesmo
|
||||||
|
* o pagamento pode ser via pix, credito, ou debito
|
||||||
|
* o usuário pode Transferir seus tickets para outro usuário através da geração de um qrcode
|
||||||
|
* o usuário pode receber transferença de tickets de outro usuário através da leitura de um qrcode
|
||||||
|
* para usar o ticket basta tocar e o app vai gerar um qrcode que será lido pelo garçom
|
||||||
|
* o usuário poderá cadastrar cartões para facilitar pagamentos futuros
|
||||||
|
|
||||||
|
* o aplicativo poderá vender ingressos para eventos do bar
|
||||||
|
* Ingressos podem ser nomeados
|
||||||
|
* Possibilidade de acompanhar a própria comanda de consumo através da leitura de um qrcode fornecido pelo o garçom, e efetuar o pagamento da mesma pelo app
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Documento de Requisitos do Aplicativo BarApp
|
||||||
|
|
||||||
|
## 1. Introdução
|
||||||
|
|
||||||
|
### 1.1. Propósito
|
||||||
|
|
||||||
|
Este documento tem como objetivo detalhar os requisitos funcionais, não funcionais, regras de negócio e requisitos de sistema para o desenvolvimento do aplicativo mobile "BarApp". O aplicativo visa aprimorar a experiência do cliente em um bar, oferecendo funcionalidades como visualização de cardápio, compra e gerenciamento de tickets de produtos, venda de ingressos para eventos, acompanhamento da fila do karaokê e pagamento de comandas de consumo.
|
||||||
|
|
||||||
|
### 1.2. Escopo
|
||||||
|
|
||||||
|
O aplicativo BarApp será uma solução mobile disponível para as plataformas Android e iOS, permitindo que os usuários realizem as ações descritas neste documento. O escopo inicial não inclui funcionalidades para a equipe do bar (garçons, gerentes), que serão consideradas em fases futuras, exceto pela interação de leitura de QR Codes.
|
||||||
|
|
||||||
|
### 1.3. Público-alvo
|
||||||
|
|
||||||
|
- **Usuários Finais:** Clientes do bar que desejam interagir com o estabelecimento de forma digital.
|
||||||
|
|
||||||
|
- **Garçons/Atendentes:** Profissionais do bar que precisarão ler QR Codes gerados pelo aplicativo para validação de tickets e comandas.
|
||||||
|
|
||||||
|
|
||||||
|
## 2. Requisitos Funcionais (RF)
|
||||||
|
|
||||||
|
Os requisitos funcionais descrevem as funcionalidades que o sistema deve oferecer aos usuários.
|
||||||
|
|
||||||
|
### 2.1. Gerenciamento de Usuários
|
||||||
|
|
||||||
|
- **RF001 - Cadastro de Usuário:** O sistema deve permitir que um novo usuário realize seu cadastro, fornecendo informações como nome completo, e-mail e senha.
|
||||||
|
|
||||||
|
- **RF002 - Alteração de Senha:** O sistema deve permitir que um usuário autenticado altere sua senha.
|
||||||
|
|
||||||
|
- **RF003 - Login:** O sistema deve permitir que um usuário autenticado faça login utilizando e-mail e senha.
|
||||||
|
|
||||||
|
- **RF004 - Login Social (Google):** O sistema deve permitir que um usuário faça login utilizando sua conta Google.
|
||||||
|
|
||||||
|
- **RF005 - Recuperação de Senha:** O sistema deve permitir que um usuário recupere sua senha através de um processo seguro (e.g., envio de link para o e-mail cadastrado).
|
||||||
|
|
||||||
|
- **RF006 - Gerenciamento de Perfil:** O sistema deve permitir que o usuário visualize e edite suas informações de perfil (exceto e-mail de cadastro).
|
||||||
|
|
||||||
|
|
||||||
|
### 2.2. Gerenciamento de Cardápio
|
||||||
|
|
||||||
|
- **RF007 - Visualização do Cardápio:** O sistema deve exibir o cardápio completo de produtos disponíveis no bar.
|
||||||
|
|
||||||
|
- **RF008 - Detalhes do Produto:** Para cada item do cardápio, o sistema deve exibir nome, preço, descrição e imagem.
|
||||||
|
|
||||||
|
|
||||||
|
### 2.3. Compra e Gerenciamento de Tickets
|
||||||
|
|
||||||
|
- **RF009 - Compra de Ticket:** O sistema deve permitir que o usuário selecione um produto do cardápio e compre tickets referentes a ele.
|
||||||
|
|
||||||
|
- **RF010 - Adicionar à Cesta de Compras:** O sistema deve permitir que o usuário adicione tickets de diferentes produtos a uma "cesta de compras" antes de finalizar o pagamento.
|
||||||
|
|
||||||
|
- **RF011 - Visualização da Cesta de Compras:** O sistema deve exibir todos os itens adicionados à cesta de compras, com seus respectivos nomes, quantidades e valores totais.
|
||||||
|
|
||||||
|
- **RF012 - Remoção de Item da Cesta:** O sistema deve permitir que o usuário remova itens da cesta de compras.
|
||||||
|
|
||||||
|
- **RF013 - Visualização da Carteira de Tickets:** O sistema deve exibir uma "carteira" com todos os tickets comprados e ainda não utilizados pelo usuário.
|
||||||
|
|
||||||
|
- **RF014 - Detalhes do Ticket na Carteira:** Para cada ticket na carteira, o sistema deve exibir o nome do produto, quantidade, data de compra e, se aplicável, prazo de validade.
|
||||||
|
|
||||||
|
- **RF015 - Visualização do Histórico de Tickets:** O sistema deve exibir o histórico de tickets do usuário, incluindo data e hora da compra e data e hora de uso (se já utilizado).
|
||||||
|
|
||||||
|
|
||||||
|
### 2.4. Pagamento
|
||||||
|
|
||||||
|
- **RF016 - Seleção de Método de Pagamento:** O sistema deve permitir que o usuário selecione o método de pagamento para a cesta de compras (Pix, Cartão de Crédito, Cartão de Débito).
|
||||||
|
|
||||||
|
- **RF017 - Processamento de Pagamento (Pix):** O sistema deve gerar um QR Code Pix ou código "copia e cola" para que o usuário efetue o pagamento.
|
||||||
|
|
||||||
|
- **RF018 - Processamento de Pagamento (Cartão):** O sistema deve integrar com uma plataforma de pagamento para processar transações de cartão de crédito/débito.
|
||||||
|
|
||||||
|
- **RF019 - Cadastro de Cartões:** O sistema deve permitir que o usuário cadastre múltiplos cartões de crédito/débito para pagamentos futuros.
|
||||||
|
|
||||||
|
- **RF020 - Seleção de Cartão Cadastrado:** O sistema deve permitir que o usuário selecione um cartão previamente cadastrado para realizar pagamentos.
|
||||||
|
|
||||||
|
|
||||||
|
### 2.5. Transferência de Tickets
|
||||||
|
|
||||||
|
- **RF021 - Geração de QR Code para Transferência:** O sistema deve permitir que o usuário selecione um ou mais tickets de sua carteira e gere um QR Code para transferência para outro usuário.
|
||||||
|
|
||||||
|
- **RF022 - Leitura de QR Code para Recebimento:** O sistema deve permitir que o usuário utilize a câmera do dispositivo para ler um QR Code de transferência e receber tickets de outro usuário.
|
||||||
|
|
||||||
|
|
||||||
|
### 2.6. Utilização de Tickets
|
||||||
|
|
||||||
|
- **RF023 - Geração de QR Code para Uso:** O sistema deve permitir que o usuário selecione um ticket na carteira e gere um QR Code único para que o garçom possa validá-lo e trocá-lo pelo produto.
|
||||||
|
|
||||||
|
- **RF024 - Validação de Uso de Ticket:** O sistema deve registrar a data e hora do uso do ticket após a leitura bem-sucedida pelo garçom.
|
||||||
|
|
||||||
|
|
||||||
|
### 2.7. Venda de Ingressos para Eventos
|
||||||
|
|
||||||
|
- **RF025 - Visualização de Eventos:** O sistema deve exibir uma lista dos eventos disponíveis no bar, com nome do evento, data, hora, descrição e preço do ingresso.
|
||||||
|
|
||||||
|
- **RF026 - Compra de Ingresso:** O sistema deve permitir que o usuário compre ingressos para eventos.
|
||||||
|
|
||||||
|
- **RF027 - Visualização de Ingressos Comprados:** O sistema deve exibir os ingressos comprados pelo usuário.
|
||||||
|
|
||||||
|
- **RF028 - Geração de QR Code do Ingresso:** O sistema deve permitir que o usuário gere um QR Code para cada ingresso comprado, para validação na entrada do evento.
|
||||||
|
|
||||||
|
|
||||||
|
### 2.8. Karaokê
|
||||||
|
|
||||||
|
- **RF029 - Visualização da Fila do Karaokê:** O sistema deve exibir a fila atual de pessoas que vão cantar no karaokê, em tempo real.
|
||||||
|
|
||||||
|
|
||||||
|
### 2.9. Comanda de Consumo
|
||||||
|
|
||||||
|
- **RF030 - Acompanhamento da Comanda:** O sistema deve permitir que o usuário leia um QR Code fornecido pelo garçom para visualizar sua comanda de consumo em tempo real.
|
||||||
|
|
||||||
|
- **RF031 - Detalhes da Comanda:** A comanda deve exibir os itens consumidos, quantidades, preços unitários e valor total.
|
||||||
|
|
||||||
|
- **RF032 - Pagamento da Comanda:** O sistema deve permitir que o usuário efetue o pagamento total ou parcial da comanda de consumo através dos métodos de pagamento disponíveis (Pix, Cartão de Crédito, Cartão de Débito).
|
||||||
|
|
||||||
|
|
||||||
|
## 3. Requisitos Não Funcionais (RNF)
|
||||||
|
|
||||||
|
Os requisitos não funcionais descrevem as qualidades do sistema.
|
||||||
|
|
||||||
|
### 3.1. Usabilidade
|
||||||
|
|
||||||
|
- **RNF001 - Interface Intuitiva:** A interface do usuário deve ser intuitiva e fácil de usar, mesmo para usuários com pouca familiaridade com aplicativos.
|
||||||
|
|
||||||
|
- **RNF002 - Tempo de Resposta:** O tempo de resposta do aplicativo para todas as interações do usuário não deve exceder 3 segundos.
|
||||||
|
|
||||||
|
- **RNF003 - Consistência Visual:** A interface deve seguir um padrão visual consistente em todas as telas e funcionalidades.
|
||||||
|
|
||||||
|
- **RNF004 - Feedback ao Usuário:** O sistema deve fornecer feedback claro e imediato para todas as ações do usuário (e.g., sucesso na compra, erro de login).
|
||||||
|
|
||||||
|
|
||||||
|
### 3.2. Desempenho
|
||||||
|
|
||||||
|
- **RNF005 - Carregamento Rápido:** O aplicativo deve carregar em no máximo 5 segundos na primeira inicialização.
|
||||||
|
|
||||||
|
- **RNF006 - Escalabilidade:** O sistema deve ser capaz de suportar um grande volume de usuários simultâneos (e.g., 1000 usuários ativos) sem degradação significativa de desempenho.
|
||||||
|
|
||||||
|
- **RNF007 - Otimização de Imagens:** As imagens do cardápio e eventos devem ser otimizadas para carregamento rápido sem comprometer a qualidade visual.
|
||||||
|
|
||||||
|
|
||||||
|
### 3.3. Segurança
|
||||||
|
|
||||||
|
- **RNF008 - Autenticação Segura:** O sistema deve garantir que as credenciais de login dos usuários sejam armazenadas e transmitidas de forma segura (e.g., criptografia, hashing de senhas).
|
||||||
|
|
||||||
|
- **RNF009 - Proteção de Dados Pessoais:** As informações pessoais e de pagamento dos usuários devem ser protegidas contra acesso não autorizado e vazamento de dados.
|
||||||
|
|
||||||
|
- **RNF010 - Transações Seguras:** Todas as transações financeiras devem ser processadas através de gateways de pagamento seguros e certificados.
|
||||||
|
|
||||||
|
- **RNF011 - Validação de QR Code:** Os QR Codes gerados para tickets e ingressos devem ser únicos, com validade limitada e antifraude.
|
||||||
|
|
||||||
|
|
||||||
|
### 3.4. Confiabilidade
|
||||||
|
|
||||||
|
- **RNF012 - Disponibilidade:** O aplicativo deve estar disponível 99,9% do tempo.
|
||||||
|
|
||||||
|
- **RNF013 - Tratamento de Erros:** O sistema deve lidar com erros de forma graciosa, exibindo mensagens claras e úteis ao usuário.
|
||||||
|
|
||||||
|
- **RNF014 - Persistência de Dados:** Todos os dados do usuário (cadastro, tickets, histórico, cartões) devem ser armazenados de forma persistente e recuperáveis.
|
||||||
|
|
||||||
|
|
||||||
|
### 3.5. Manutenibilidade
|
||||||
|
|
||||||
|
- **RNF015 - Código Limpo:** O código-fonte deve ser bem documentado, modular e fácil de entender para futuras manutenções e evoluções.
|
||||||
|
|
||||||
|
- **RNF016 - Atualizações:** O aplicativo deve permitir atualizações e novas funcionalidades sem exigir reinstalação completa por parte do usuário, sempre que possível.
|
||||||
|
|
||||||
|
|
||||||
|
### 3.6. Compatibilidade
|
||||||
|
|
||||||
|
- **RNF017 - Compatibilidade Mobile:** O aplicativo deve ser compatível com as versões mais recentes dos sistemas operacionais Android e iOS (e.g., últimas 3 versões).
|
||||||
|
|
||||||
|
- **RNF018 - Responsividade:** A interface do aplicativo deve se adaptar a diferentes tamanhos de tela e orientações (retrato/paisagem) de dispositivos móveis.
|
||||||
|
|
||||||
|
|
||||||
|
## 4. Regras de Negócio (RN)
|
||||||
|
|
||||||
|
As regras de negócio são as políticas e restrições que governam o funcionamento do bar e do aplicativo.
|
||||||
|
|
||||||
|
### 4.1. Tickets
|
||||||
|
|
||||||
|
- **RN001 - Limite de Compra de Tickets:** Cada usuário terá um limite máximo de tickets de um mesmo produto que pode comprar em uma única transação ou em um período de tempo (a ser definido pelo bar, e.g., 10 tickets do mesmo produto por dia).
|
||||||
|
|
||||||
|
- **RN002 - Validade do Ticket:** Tickets comprados podem ter um prazo de validade (e.g., 30 dias a partir da data da compra, ou até o fechamento do bar no dia da compra).
|
||||||
|
|
||||||
|
- **RN003 - Uso Único do Ticket:** Cada ticket gerado para uso (QR Code) pode ser utilizado apenas uma vez.
|
||||||
|
|
||||||
|
- **RN004 - Transferência de Tickets:** Tickets podem ser transferidos entre usuários, e a responsabilidade pela validade e uso passa para o novo proprietário.
|
||||||
|
|
||||||
|
- **RN005 - Tickets Não Reembolsáveis:** Uma vez comprado, tickets não são reembolsáveis (a menos que haja uma política de exceção do bar).
|
||||||
|
|
||||||
|
|
||||||
|
### 4.2. Pagamento
|
||||||
|
|
||||||
|
- **RN006 - Métodos de Pagamento:** Os métodos de pagamento aceitos são Pix, Cartão de Crédito e Cartão de Débito.
|
||||||
|
|
||||||
|
- **RN007 - Pagamento da Comanda:** A comanda de consumo pode ser paga total ou parcialmente pelo aplicativo.
|
||||||
|
|
||||||
|
|
||||||
|
### 4.3. Eventos
|
||||||
|
|
||||||
|
- **RN008 - Ingressos Nomeados:** Ingressos para eventos podem ter nomes específicos (e.g., "Ingresso Pista", "Ingresso VIP").
|
||||||
|
|
||||||
|
- **RN009 - Validação de Ingresso:** Cada ingresso comprado gera um QR Code único para validação na entrada do evento, permitindo apenas um acesso por ingresso.
|
||||||
|
|
||||||
|
|
||||||
|
## 5. Requisitos de Sistema (RS)
|
||||||
|
|
||||||
|
Os requisitos de sistema definem as necessidades de infraestrutura e tecnologia.
|
||||||
|
|
||||||
|
### 5.1. Plataformas
|
||||||
|
|
||||||
|
- **RS001 - Desenvolvimento Multiplataforma:** O aplicativo deve ser desenvolvido para ser compatível com iOS e Android.
|
||||||
|
|
||||||
|
- **RS002 - Linguagens de Programação:** A serem definidas pela equipe de desenvolvimento (e.g., React Native, Flutter, Swift/Kotlin nativo).
|
||||||
|
|
||||||
|
|
||||||
|
### 5.2. Integrações
|
||||||
|
|
||||||
|
- **RS003 - Gateway de Pagamento:** O sistema deve integrar-se com um gateway de pagamento (e.g., Stripe, PagSeguro, Mercado Pago) para processar pagamentos com cartão e Pix.
|
||||||
|
|
||||||
|
- **RS004 - Autenticação Social:** O sistema deve integrar-se com a API de autenticação do Google para login social.
|
||||||
|
|
||||||
|
- **RS005 - Sistema de Gerenciamento do Bar:** O aplicativo pode precisar de integração com um sistema de gerenciamento interno do bar para atualização de cardápio, fila de karaokê e comandas (a ser definido em fases futuras).
|
||||||
|
|
||||||
|
- **RS006 - Leitura de QR Code:** O aplicativo deve utilizar a câmera do dispositivo para ler QR Codes.
|
||||||
46
doc/App Gestão/App Gestão - Visão Geral.md
Normal file
46
doc/App Gestão/App Gestão - Visão Geral.md
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# Aplicativo de Gestão do Bar - Visão Geral
|
||||||
|
|
||||||
|
O **Aplicativo de Gestão do Bar** é uma plataforma web centralizada, desenvolvida em Django/Python, destinada a administradores e gerentes do bar. Ele atua como o cérebro da operação, integrando e gerenciando todas as funcionalidades dos aplicativos mobile (BarApp e GarçomApp), além de introduzir capacidades essenciais de gestão empresarial.
|
||||||
|
|
||||||
|
## Propósito
|
||||||
|
|
||||||
|
O principal objetivo deste aplicativo é proporcionar um controle abrangente e eficiente sobre todas as áreas do negócio, desde a operação diária até a análise estratégica e financeira. Ele visa otimizar processos, reduzir erros e fornecer insights valiosos para a tomada de decisões.
|
||||||
|
|
||||||
|
## Principais Funcionalidades:
|
||||||
|
|
||||||
|
- **Gestão de Usuários:** Gerenciamento completo de clientes (do BarApp) e garçons (do GarçomApp), incluindo cadastro, edição e permissões.
|
||||||
|
|
||||||
|
- **Gestão de Cardápio e Produtos:** Cadastro, edição, exclusão e controle de disponibilidade de todos os itens do cardápio.
|
||||||
|
|
||||||
|
- **Gestão de Tickets e Eventos:** Visualização detalhada das vendas de tickets e ingressos, além do gerenciamento completo de eventos (cadastro, edição, exclusão).
|
||||||
|
|
||||||
|
- **Gestão da Fila do Karaokê:** Controle administrativo da fila, permitindo adicionar, editar, remover e reordenar participantes.
|
||||||
|
|
||||||
|
- **Gestão de Comandas:** Visão geral e gerenciamento detalhado de todas as comandas abertas, aguardando pagamento, pagas e fechadas.
|
||||||
|
|
||||||
|
- **Gestão de Funcionários:** Cadastro, manutenção de dados, cargos e controle de acesso para toda a equipe do bar.
|
||||||
|
|
||||||
|
- **Gestão de Pagamentos de Salário:** Registro de pagamentos, cálculo de holerites e histórico de salários.
|
||||||
|
|
||||||
|
- **Gestão de Estoque e Mercadorias:** Registro de entradas de produtos, atualização automática de estoque, visualização do inventário atual e alertas de estoque baixo.
|
||||||
|
|
||||||
|
- **Dashboards e Relatórios:** Painéis visuais e relatórios detalhados sobre vendas, lucratividade, desempenho de funcionários, estoque e finanças, permitindo análises estratégicas.
|
||||||
|
|
||||||
|
|
||||||
|
## Integração com os Outros Aplicativos:
|
||||||
|
|
||||||
|
Este aplicativo de gestão é o backend central para o **BarApp (cliente)** e o **GarçomApp (interno)**. Todas as informações de cardápio, tickets, ingressos, comandas, fila do karaokê e notificações são gerenciadas aqui e sincronizadas em tempo real com os aplicativos mobile, garantindo uma operação coesa e eficiente.
|
||||||
|
|
||||||
|
## Documentos Relacionados:
|
||||||
|
|
||||||
|
Para mais detalhes sobre o Aplicativo de Gestão do Bar, consulte os seguintes documentos:
|
||||||
|
|
||||||
|
- [[Requisitos - Aplicativo de Gestão]]
|
||||||
|
|
||||||
|
- [[Casos de Uso - Aplicativo de Gestão]]
|
||||||
|
|
||||||
|
- [[Histórias de Usuário - Aplicativo de Gestão]]
|
||||||
|
|
||||||
|
- [[Modelagem de Banco de Dados]]
|
||||||
|
|
||||||
|
- [[Visão Geral do Projeto]]
|
||||||
298
doc/App Gestão/Casos de Uso - Aplicativo de Gestão.md
Normal file
298
doc/App Gestão/Casos de Uso - Aplicativo de Gestão.md
Normal file
@@ -0,0 +1,298 @@
|
|||||||
|
# Casos de Uso do Aplicativo de Gestão do Bar
|
||||||
|
|
||||||
|
Este documento descreve os principais casos de uso para o aplicativo de gestão do bar, detalhando as interações entre os atores e o sistema.
|
||||||
|
|
||||||
|
## Atores
|
||||||
|
|
||||||
|
- **Administrador:** Usuário com acesso total ao sistema.
|
||||||
|
|
||||||
|
- **Gerente:** Usuário com acesso operacional e de relatórios.
|
||||||
|
|
||||||
|
- **Funcionário Administrativo:** Usuário com acesso a módulos específicos (e.g., estoque, folha de pagamento).
|
||||||
|
|
||||||
|
- **Sistema de Pagamento:** Serviço externo para processamento de transações.
|
||||||
|
|
||||||
|
- **Sistema de Cozinha:** Sistema responsável pelo gerenciamento de pedidos na cozinha.
|
||||||
|
|
||||||
|
|
||||||
|
## Casos de Uso
|
||||||
|
|
||||||
|
### 1. Gerenciamento de Usuários (Clientes e Garçons)
|
||||||
|
|
||||||
|
#### CUGSA001: Gerenciar Clientes
|
||||||
|
|
||||||
|
- **Nome:** Gerenciar Clientes
|
||||||
|
|
||||||
|
- **Ator:** Administrador
|
||||||
|
|
||||||
|
- **Descrição:** Permite ao administrador visualizar, editar e excluir informações de clientes do BarApp.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Administrador acessa o módulo de "Clientes".
|
||||||
|
|
||||||
|
2. Sistema exibe lista de clientes.
|
||||||
|
|
||||||
|
3. Administrador seleciona cliente para visualizar/editar/excluir.
|
||||||
|
|
||||||
|
4. Sistema realiza a ação solicitada.
|
||||||
|
|
||||||
|
|
||||||
|
#### CUGSA002: Gerenciar Garçons
|
||||||
|
|
||||||
|
- **Nome:** Gerenciar Garçons
|
||||||
|
|
||||||
|
- **Ator:** Administrador
|
||||||
|
|
||||||
|
- **Descrição:** Permite ao administrador cadastrar, editar e excluir garçons.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Administrador acessa o módulo de "Garçons".
|
||||||
|
|
||||||
|
2. Sistema exibe lista de garçons.
|
||||||
|
|
||||||
|
3. Administrador seleciona opção para "Cadastrar Novo Garçom", "Editar Garçom" ou "Excluir Garçom".
|
||||||
|
|
||||||
|
4. Sistema realiza a ação e atualiza o registro de garçons.
|
||||||
|
|
||||||
|
|
||||||
|
### 2. Gerenciamento de Cardápio e Produtos
|
||||||
|
|
||||||
|
#### CUGSA003: Gerenciar Produtos do Cardápio
|
||||||
|
|
||||||
|
- **Nome:** Gerenciar Produtos do Cardápio
|
||||||
|
|
||||||
|
- **Ator:** Administrador, Gerente
|
||||||
|
|
||||||
|
- **Descrição:** Permite gerenciar produtos, incluindo cadastro, edição, exclusão e status de disponibilidade.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Ator acessa o módulo de "Cardápio/Produtos".
|
||||||
|
|
||||||
|
2. Sistema exibe lista de produtos.
|
||||||
|
|
||||||
|
3. Ator seleciona opção para "Adicionar Produto", "Editar Produto", "Excluir Produto" ou "Alterar Disponibilidade".
|
||||||
|
|
||||||
|
4. Sistema realiza a ação e atualiza o cardápio.
|
||||||
|
|
||||||
|
|
||||||
|
### 3. Gerenciamento de Tickets e Ingressos
|
||||||
|
|
||||||
|
#### CUGSA004: Consultar Tickets
|
||||||
|
|
||||||
|
- **Nome:** Consultar Tickets
|
||||||
|
|
||||||
|
- **Ator:** Administrador, Gerente
|
||||||
|
|
||||||
|
- **Descrição:** Permite visualizar e consultar detalhes de tickets vendidos e seus históricos.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Ator acessa o módulo de "Tickets".
|
||||||
|
|
||||||
|
2. Sistema exibe lista de tickets.
|
||||||
|
|
||||||
|
3. Ator pode filtrar por produto, usuário, status, data.
|
||||||
|
|
||||||
|
4. Ator seleciona ticket para ver histórico de uso/transferência.
|
||||||
|
|
||||||
|
|
||||||
|
#### CUGSA005: Gerenciar Eventos e Ingressos
|
||||||
|
|
||||||
|
- **Nome:** Gerenciar Eventos e Ingressos
|
||||||
|
|
||||||
|
- **Ator:** Administrador, Gerente
|
||||||
|
|
||||||
|
- **Descrição:** Permite gerenciar eventos e os ingressos associados.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Ator acessa o módulo de "Eventos".
|
||||||
|
|
||||||
|
2. Sistema exibe lista de eventos.
|
||||||
|
|
||||||
|
3. Ator seleciona opção para "Cadastrar Novo Evento", "Editar Evento", "Excluir Evento".
|
||||||
|
|
||||||
|
4. Ator pode visualizar lista de ingressos vendidos para um evento específico.
|
||||||
|
|
||||||
|
|
||||||
|
### 4. Gerenciamento da Fila do Karaokê
|
||||||
|
|
||||||
|
#### CUGSA006: Gerenciar Fila do Karaokê (Admin)
|
||||||
|
|
||||||
|
- **Nome:** Gerenciar Fila do Karaokê (Admin)
|
||||||
|
|
||||||
|
- **Ator:** Administrador, Gerente
|
||||||
|
|
||||||
|
- **Descrição:** Permite o controle total da fila do karaokê.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Ator acessa o módulo de "Karaokê".
|
||||||
|
|
||||||
|
2. Sistema exibe a fila em tempo real.
|
||||||
|
|
||||||
|
3. Ator pode adicionar, editar, remover ou reordenar pessoas na fila.
|
||||||
|
|
||||||
|
|
||||||
|
### 5. Gerenciamento de Comandas
|
||||||
|
|
||||||
|
#### CUGSA007: Gerenciar Comandas (Admin)
|
||||||
|
|
||||||
|
- **Nome:** Gerenciar Comandas (Admin)
|
||||||
|
|
||||||
|
- **Ator:** Administrador, Gerente
|
||||||
|
|
||||||
|
- **Descrição:** Permite visualizar, editar e fechar comandas.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Ator acessa o módulo de "Comandas".
|
||||||
|
|
||||||
|
2. Sistema exibe lista de comandas com seus status.
|
||||||
|
|
||||||
|
3. Ator seleciona comanda para ver detalhes, editar itens, alterar status ou fechar.
|
||||||
|
|
||||||
|
|
||||||
|
### 6. Gerenciamento de Funcionários
|
||||||
|
|
||||||
|
#### CUGSA008: Gerenciar Dados de Funcionários
|
||||||
|
|
||||||
|
- **Nome:** Gerenciar Dados de Funcionários
|
||||||
|
|
||||||
|
- **Ator:** Administrador, Funcionário Administrativo (RH)
|
||||||
|
|
||||||
|
- **Descrição:** Permite o cadastro e a manutenção dos dados dos funcionários.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Ator acessa o módulo de "Funcionários".
|
||||||
|
|
||||||
|
2. Sistema exibe lista de funcionários.
|
||||||
|
|
||||||
|
3. Ator seleciona opção para "Cadastrar Novo Funcionário", "Editar Dados" ou "Excluir Funcionário".
|
||||||
|
|
||||||
|
4. Sistema atualiza o cadastro de funcionários.
|
||||||
|
|
||||||
|
|
||||||
|
### 7. Gestão de Pagamentos de Salário
|
||||||
|
|
||||||
|
#### CUGSA009: Registrar Pagamento de Salário
|
||||||
|
|
||||||
|
- **Nome:** Registrar Pagamento de Salário
|
||||||
|
|
||||||
|
- **Ator:** Administrador, Funcionário Administrativo (RH)
|
||||||
|
|
||||||
|
- **Descrição:** Permite registrar os pagamentos de salário e gerar holerites.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Ator acessa o módulo de "Folha de Pagamento".
|
||||||
|
|
||||||
|
2. Ator seleciona funcionário e insere detalhes do pagamento (valor, período).
|
||||||
|
|
||||||
|
3. Sistema registra o pagamento e gera o holerite.
|
||||||
|
|
||||||
|
|
||||||
|
#### CUGSA010: Consultar Histórico de Pagamentos
|
||||||
|
|
||||||
|
- **Nome:** Consultar Histórico de Pagamentos
|
||||||
|
|
||||||
|
- **Ator:** Administrador, Funcionário Administrativo (RH)
|
||||||
|
|
||||||
|
- **Descrição:** Permite visualizar o histórico de pagamentos de salário por funcionário.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Ator acessa o módulo de "Folha de Pagamento".
|
||||||
|
|
||||||
|
2. Ator seleciona funcionário para ver seu histórico de pagamentos.
|
||||||
|
|
||||||
|
|
||||||
|
### 8. Gestão de Estoque e Entrada de Mercadorias
|
||||||
|
|
||||||
|
#### CUGSA011: Registrar Entrada de Mercadoria
|
||||||
|
|
||||||
|
- **Nome:** Registrar Entrada de Mercadoria
|
||||||
|
|
||||||
|
- **Ator:** Administrador, Funcionário Administrativo (Estoque)
|
||||||
|
|
||||||
|
- **Descrição:** Permite registrar a entrada de novos produtos no estoque.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Ator acessa o módulo de "Estoque/Entrada de Mercadorias".
|
||||||
|
|
||||||
|
2. Ator seleciona produto, quantidade, fornecedor e custo.
|
||||||
|
|
||||||
|
3. Sistema registra a entrada e atualiza o estoque do produto.
|
||||||
|
|
||||||
|
|
||||||
|
#### CUGSA012: Gerenciar Estoque
|
||||||
|
|
||||||
|
- **Nome:** Gerenciar Estoque
|
||||||
|
|
||||||
|
- **Ator:** Administrador, Funcionário Administrativo (Estoque)
|
||||||
|
|
||||||
|
- **Descrição:** Permite visualizar o estoque atual e gerenciar fornecedores.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Ator acessa o módulo de "Estoque".
|
||||||
|
|
||||||
|
2. Sistema exibe o estoque atual de todos os produtos.
|
||||||
|
|
||||||
|
3. Ator pode gerenciar fornecedores (cadastrar, editar, excluir).
|
||||||
|
|
||||||
|
|
||||||
|
### 9. Dashboard de Resultados e Relatórios
|
||||||
|
|
||||||
|
#### CUGSA013: Visualizar Dashboard de Vendas
|
||||||
|
|
||||||
|
- **Nome:** Visualizar Dashboard de Vendas
|
||||||
|
|
||||||
|
- **Ator:** Administrador, Gerente
|
||||||
|
|
||||||
|
- **Descrição:** Permite visualizar gráficos e métricas de vendas.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Ator acessa o "Dashboard de Vendas".
|
||||||
|
|
||||||
|
2. Sistema exibe métricas como total de vendas, vendas por produto/período/garçom.
|
||||||
|
|
||||||
|
|
||||||
|
#### CUGSA014: Visualizar Dashboard de Lucratividade
|
||||||
|
|
||||||
|
- **Nome:** Visualizar Dashboard de Lucratividade
|
||||||
|
|
||||||
|
- **Ator:** Administrador, Gerente
|
||||||
|
|
||||||
|
- **Descrição:** Permite visualizar gráficos e métricas de lucratividade.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Ator acessa o "Dashboard de Lucratividade".
|
||||||
|
|
||||||
|
2. Sistema exibe receita, custos e lucro bruto.
|
||||||
|
|
||||||
|
|
||||||
|
#### CUGSA015: Gerar Relatórios
|
||||||
|
|
||||||
|
- **Nome:** Gerar Relatórios
|
||||||
|
|
||||||
|
- **Ator:** Administrador, Gerente, Funcionário Administrativo
|
||||||
|
|
||||||
|
- **Descrição:** Permite gerar diversos relatórios para análise.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Ator acessa o módulo de "Relatórios".
|
||||||
|
|
||||||
|
2. Ator seleciona o tipo de relatório (estoque, financeiro, desempenho de funcionários).
|
||||||
|
|
||||||
|
3. Ator define filtros (período, funcionário, produto).
|
||||||
|
|
||||||
|
4. Sistema gera o relatório e permite exportação.
|
||||||
165
doc/App Gestão/Histórias de Usuário - Aplicativo de Gestão.md
Normal file
165
doc/App Gestão/Histórias de Usuário - Aplicativo de Gestão.md
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
# Histórias de Usuário do Aplicativo de Gestão do Bar
|
||||||
|
|
||||||
|
Este documento apresenta as histórias de usuário para o aplicativo de gestão do bar, focando na perspectiva dos usuários de gestão (Administradores, Gerentes, Funcionários Administrativos) e no valor que cada funcionalidade entrega.
|
||||||
|
|
||||||
|
## 1. Gerenciamento de Usuários (Clientes e Garçons)
|
||||||
|
|
||||||
|
- **HUGSA001 - Gerenciar Clientes:**
|
||||||
|
|
||||||
|
- **Como um** administrador,
|
||||||
|
|
||||||
|
- **Eu quero** visualizar e gerenciar os cadastros dos clientes do BarApp,
|
||||||
|
|
||||||
|
- **Para que** eu possa ter controle sobre a base de usuários e realizar manutenções.
|
||||||
|
|
||||||
|
- **HUGSA002 - Gerenciar Garçons:**
|
||||||
|
|
||||||
|
- **Como um** administrador,
|
||||||
|
|
||||||
|
- **Eu quero** cadastrar e gerenciar os garçons que usam o GarçomApp,
|
||||||
|
|
||||||
|
- **Para que** eu possa controlar o acesso da equipe e suas informações.
|
||||||
|
|
||||||
|
|
||||||
|
## 2. Gerenciamento de Cardápio e Produtos
|
||||||
|
|
||||||
|
- **HUGSA003 - Gerenciar Produtos:**
|
||||||
|
|
||||||
|
- **Como um** gerente,
|
||||||
|
|
||||||
|
- **Eu quero** cadastrar, editar e remover produtos do cardápio,
|
||||||
|
|
||||||
|
- **Para que** o cardápio no aplicativo do cliente esteja sempre atualizado com os itens disponíveis.
|
||||||
|
|
||||||
|
- **HUGSA004 - Gerenciar Disponibilidade de Produtos:**
|
||||||
|
|
||||||
|
- **Como um** gerente,
|
||||||
|
|
||||||
|
- **Eu quero** marcar produtos como disponíveis ou indisponíveis,
|
||||||
|
|
||||||
|
- **Para que** os clientes vejam apenas o que está sendo servido no momento.
|
||||||
|
|
||||||
|
|
||||||
|
## 3. Gerenciamento de Tickets e Ingressos
|
||||||
|
|
||||||
|
- **HUGSA005 - Consultar Vendas de Tickets:**
|
||||||
|
|
||||||
|
- **Como um** gerente,
|
||||||
|
|
||||||
|
- **Eu quero** visualizar todos os tickets vendidos e seus status de uso,
|
||||||
|
|
||||||
|
- **Para que** eu possa acompanhar as vendas de tickets e o consumo dos clientes.
|
||||||
|
|
||||||
|
- **HUGSA006 - Gerenciar Eventos:**
|
||||||
|
|
||||||
|
- **Como um** administrador,
|
||||||
|
|
||||||
|
- **Eu quero** cadastrar e gerenciar os eventos do bar,
|
||||||
|
|
||||||
|
- **Para que** os clientes possam comprar ingressos e participar das festas.
|
||||||
|
|
||||||
|
|
||||||
|
## 4. Gerenciamento da Fila do Karaokê
|
||||||
|
|
||||||
|
- **HUGSA007 - Gerenciar Fila do Karaokê (Admin):**
|
||||||
|
|
||||||
|
- **Como um** gerente,
|
||||||
|
|
||||||
|
- **Eu quero** ter controle total sobre a fila do karaokê,
|
||||||
|
|
||||||
|
- **Para que** eu possa organizar as apresentações e garantir a fluidez do evento.
|
||||||
|
|
||||||
|
|
||||||
|
## 5. Gerenciamento de Comandas
|
||||||
|
|
||||||
|
- **HUGSA008 - Visualizar e Gerenciar Comandas:**
|
||||||
|
|
||||||
|
- **Como um** gerente,
|
||||||
|
|
||||||
|
- **Eu quero** visualizar todas as comandas abertas e fechadas,
|
||||||
|
|
||||||
|
- **Para que** eu possa acompanhar o consumo das mesas e o status dos pagamentos.
|
||||||
|
|
||||||
|
|
||||||
|
## 6. Gerenciamento de Funcionários
|
||||||
|
|
||||||
|
- **HUGSA009 - Cadastrar Funcionário:**
|
||||||
|
|
||||||
|
- **Como um** administrador,
|
||||||
|
|
||||||
|
- **Eu quero** cadastrar novos funcionários,
|
||||||
|
|
||||||
|
- **Para que** eu possa manter um registro completo da equipe.
|
||||||
|
|
||||||
|
- **HUGSA010 - Gerenciar Dados de Funcionários:**
|
||||||
|
|
||||||
|
- **Como um** administrador,
|
||||||
|
|
||||||
|
- **Eu quero** editar os dados dos funcionários,
|
||||||
|
|
||||||
|
- **Para que** as informações da equipe estejam sempre atualizadas.
|
||||||
|
|
||||||
|
|
||||||
|
## 7. Gestão de Pagamentos de Salário
|
||||||
|
|
||||||
|
- **HUGSA011 - Registrar Pagamento de Salário:**
|
||||||
|
|
||||||
|
- **Como um** funcionário administrativo (RH),
|
||||||
|
|
||||||
|
- **Eu quero** registrar os pagamentos de salário dos funcionários,
|
||||||
|
|
||||||
|
- **Para que** a folha de pagamento seja organizada e os holerites gerados corretamente.
|
||||||
|
|
||||||
|
- **HUGSA012 - Consultar Histórico de Pagamentos:**
|
||||||
|
|
||||||
|
- **Como um** funcionário administrativo (RH),
|
||||||
|
|
||||||
|
- **Eu quero** consultar o histórico de pagamentos de salário de cada funcionário,
|
||||||
|
|
||||||
|
- **Para que** eu possa verificar registros passados e resolver dúvidas.
|
||||||
|
|
||||||
|
|
||||||
|
## 8. Gestão de Estoque e Entrada de Mercadorias
|
||||||
|
|
||||||
|
- **HUGSA013 - Registrar Entrada de Mercadoria:**
|
||||||
|
|
||||||
|
- **Como um** funcionário administrativo (estoque),
|
||||||
|
|
||||||
|
- **Eu quero** registrar a entrada de novas mercadorias,
|
||||||
|
|
||||||
|
- **Para que** o estoque seja atualizado e eu tenha controle sobre o que entra no bar.
|
||||||
|
|
||||||
|
- **HUGSA014 - Visualizar Estoque e Alertas:**
|
||||||
|
|
||||||
|
- **Como um** gerente,
|
||||||
|
|
||||||
|
- **Eu quero** visualizar o estoque atual de produtos e receber alertas de estoque baixo,
|
||||||
|
|
||||||
|
- **Para que** eu possa garantir que nunca falte produto e planejar novas compras.
|
||||||
|
|
||||||
|
|
||||||
|
## 9. Dashboard de Resultados e Relatórios
|
||||||
|
|
||||||
|
- **HUGSA015 - Visualizar Dashboard de Vendas:**
|
||||||
|
|
||||||
|
- **Como um** gerente,
|
||||||
|
|
||||||
|
- **Eu quero** ver um dashboard com os resultados de vendas,
|
||||||
|
|
||||||
|
- **Para que** eu possa analisar o desempenho do bar e identificar tendências.
|
||||||
|
|
||||||
|
- **HUGSA016 - Visualizar Dashboard de Lucratividade:**
|
||||||
|
|
||||||
|
- **Como um** administrador,
|
||||||
|
|
||||||
|
- **Eu quero** ver um dashboard com a lucratividade do bar,
|
||||||
|
|
||||||
|
- **Para que** eu possa tomar decisões financeiras estratégicas.
|
||||||
|
|
||||||
|
- **HUGSA017 - Gerar Relatórios:**
|
||||||
|
|
||||||
|
- **Como um** administrador,
|
||||||
|
|
||||||
|
- **Eu quero** gerar relatórios detalhados (estoque, financeiro, desempenho de funcionários),
|
||||||
|
|
||||||
|
- **Para que** eu possa ter informações precisas para auditorias e planejamento.
|
||||||
225
doc/App Gestão/Requisitos - Aplicativo de Gestão.md
Normal file
225
doc/App Gestão/Requisitos - Aplicativo de Gestão.md
Normal file
@@ -0,0 +1,225 @@
|
|||||||
|
# Documento de Requisitos do Aplicativo de Gestão do Bar
|
||||||
|
|
||||||
|
## 1. Introdução
|
||||||
|
|
||||||
|
### 1.1. Propósito
|
||||||
|
|
||||||
|
Este documento detalha os requisitos funcionais, não funcionais, regras de negócio e requisitos de sistema para o desenvolvimento de um aplicativo web de gestão para o bar, a ser desenvolvido em Django/Python. Este aplicativo centralizará o controle de todas as operações do bar, incluindo as funcionalidades já existentes nos aplicativos mobile (BarApp e GarçomApp), além de novas funcionalidades de gestão empresarial.
|
||||||
|
|
||||||
|
### 1.2. Escopo
|
||||||
|
|
||||||
|
O aplicativo de gestão será uma plataforma web acessível por navegadores, destinada a administradores e gerentes do bar. Ele englobará a gestão de clientes, produtos, tickets, ingressos, karaokê, comandas, funcionários, salários, estoque e dashboards de resultados.
|
||||||
|
|
||||||
|
### 1.3. Público-alvo
|
||||||
|
|
||||||
|
- **Administradores:** Usuários com acesso total ao sistema, responsáveis pela configuração e gestão estratégica.
|
||||||
|
|
||||||
|
- **Gerentes:** Usuários com acesso a funcionalidades operacionais e de relatórios.
|
||||||
|
|
||||||
|
- **Funcionários Administrativos:** Usuários com acesso a funcionalidades específicas, como gestão de estoque ou folha de pagamento.
|
||||||
|
|
||||||
|
|
||||||
|
## 2. Requisitos Funcionais (RF)
|
||||||
|
|
||||||
|
Os requisitos funcionais descrevem as funcionalidades que o sistema deve oferecer aos usuários do aplicativo de gestão.
|
||||||
|
|
||||||
|
### 2.1. Gerenciamento de Usuários (Clientes e Garçons)
|
||||||
|
|
||||||
|
- **RFGSA001 - Gerenciar Clientes (BarApp):** O sistema deve permitir que o administrador visualize, edite e exclua cadastros de clientes do BarApp.
|
||||||
|
|
||||||
|
- **RFGSA002 - Gerenciar Garçons (GarçomApp):** O sistema deve permitir que o administrador cadastre, edite (nome, usuário, senha) e exclua garçons que utilizarão o GarçomApp.
|
||||||
|
|
||||||
|
- **RFGSA003 - Gerenciar Permissões de Garçons:** O sistema deve permitir que o administrador atribua diferentes níveis de permissão aos garçons (e.g., acesso a comandas, acesso a karaokê).
|
||||||
|
|
||||||
|
|
||||||
|
### 2.2. Gerenciamento de Cardápio e Produtos
|
||||||
|
|
||||||
|
- **RFGSA004 - Cadastrar Produto:** O sistema deve permitir que o administrador cadastre novos produtos no cardápio (nome, descrição, preço, imagem, categoria).
|
||||||
|
|
||||||
|
- **RFGSA005 - Editar Produto:** O sistema deve permitir que o administrador edite informações de produtos existentes.
|
||||||
|
|
||||||
|
- **RFGSA006 - Excluir Produto:** O sistema deve permitir que o administrador exclua produtos do cardápio.
|
||||||
|
|
||||||
|
- **RFGSA007 - Gerenciar Categorias de Produtos:** O sistema deve permitir o cadastro, edição e exclusão de categorias de produtos.
|
||||||
|
|
||||||
|
- **RFGSA008 - Gerenciar Disponibilidade de Produtos:** O sistema deve permitir que o administrador marque produtos como disponíveis ou indisponíveis no cardápio do BarApp.
|
||||||
|
|
||||||
|
|
||||||
|
### 2.3. Gerenciamento de Tickets
|
||||||
|
|
||||||
|
- **RFGSA009 - Visualizar Tickets Vendidos:** O sistema deve exibir uma lista de todos os tickets vendidos, com detalhes (produto, comprador, data de compra, status).
|
||||||
|
|
||||||
|
- **RFGSA010 - Consultar Histórico de Tickets:** O sistema deve permitir a consulta do histórico de uso e transferência de tickets.
|
||||||
|
|
||||||
|
- **RFGSA011 - Configurar Prazo de Validade de Tickets:** O sistema deve permitir que o administrador configure o prazo de validade padrão para os tickets.
|
||||||
|
|
||||||
|
- **RFGSA012 - Configurar Limite de Compra de Tickets:** O sistema deve permitir que o administrador configure o limite de compra de tickets por produto por usuário.
|
||||||
|
|
||||||
|
|
||||||
|
### 2.4. Gerenciamento de Eventos e Ingressos
|
||||||
|
|
||||||
|
- **RFGSA013 - Cadastrar Evento:** O sistema deve permitir que o administrador cadastre novos eventos (nome, data, hora, descrição, preço do ingresso, imagem).
|
||||||
|
|
||||||
|
- **RFGSA014 - Editar Evento:** O sistema deve permitir que o administrador edite informações de eventos existentes.
|
||||||
|
|
||||||
|
- **RFGSA015 - Excluir Evento:** O sistema deve permitir que o administrador exclua eventos.
|
||||||
|
|
||||||
|
- **RFGSA016 - Visualizar Ingressos Vendidos:** O sistema deve exibir uma lista de todos os ingressos vendidos para eventos.
|
||||||
|
|
||||||
|
- **RFGSA017 - Consultar Status de Ingressos:** O sistema deve permitir verificar o status de uso de cada ingresso.
|
||||||
|
|
||||||
|
|
||||||
|
### 2.5. Gerenciamento da Fila do Karaokê
|
||||||
|
|
||||||
|
- **RFGSA018 - Visualizar Fila do Karaokê:** O sistema deve exibir a fila do karaokê em tempo real, permitindo ao administrador acompanhar e gerenciar.
|
||||||
|
|
||||||
|
- **RFGSA019 - Gerenciar Fila do Karaokê (Admin):** O sistema deve permitir que o administrador adicione, edite, exclua e altere a posição de pessoas na fila do karaokê.
|
||||||
|
|
||||||
|
|
||||||
|
### 2.6. Gerenciamento de Comandas
|
||||||
|
|
||||||
|
- **RFGSA020 - Visualizar Todas as Comandas:** O sistema deve exibir uma lista completa de todas as comandas (abertas, aguardando pagamento, pagas, fechadas).
|
||||||
|
|
||||||
|
- **RFGSA021 - Detalhes da Comanda:** O sistema deve permitir que o administrador visualize os detalhes de cada comanda (itens, valores, histórico de pagamentos).
|
||||||
|
|
||||||
|
- **RFGSA022 - Editar Comanda (Admin):** O sistema deve permitir que o administrador edite qualquer informação de uma comanda (itens, status, etc.).
|
||||||
|
|
||||||
|
- **RFGSA023 - Fechar Comanda (Admin):** O sistema deve permitir que o administrador feche uma comanda manualmente.
|
||||||
|
|
||||||
|
- **RFGSA024 - Gerar Relatório de Comandas:** O sistema deve gerar relatórios de comandas por período, garçom, status, etc.
|
||||||
|
|
||||||
|
|
||||||
|
### 2.7. Gerenciamento de Funcionários
|
||||||
|
|
||||||
|
- **RFGSA025 - Cadastrar Funcionário:** O sistema deve permitir o cadastro de novos funcionários (nome, CPF, cargo, data de contratação, salário base, dados bancários).
|
||||||
|
|
||||||
|
- **RFGSA026 - Editar Dados do Funcionário:** O sistema deve permitir a edição dos dados cadastrais dos funcionários.
|
||||||
|
|
||||||
|
- **RFGSA027 - Excluir Funcionário:** O sistema deve permitir a exclusão de registros de funcionários.
|
||||||
|
|
||||||
|
- **RFGSA028 - Gerenciar Cargos:** O sistema deve permitir o cadastro, edição e exclusão de cargos e suas descrições.
|
||||||
|
|
||||||
|
|
||||||
|
### 2.8. Gestão de Pagamentos de Salário
|
||||||
|
|
||||||
|
- **RFGSA029 - Registrar Pagamento de Salário:** O sistema deve permitir o registro de pagamentos de salário para funcionários (valor, data, período de referência).
|
||||||
|
|
||||||
|
- **RFGSA030 - Gerar Holerite:** O sistema deve gerar holerites (recibos de pagamento) para os funcionários, contendo detalhes do salário, descontos e benefícios.
|
||||||
|
|
||||||
|
- **RFGSA031 - Visualizar Histórico de Pagamentos:** O sistema deve exibir o histórico de pagamentos de salário por funcionário.
|
||||||
|
|
||||||
|
|
||||||
|
### 2.9. Gestão de Estoque e Entrada de Mercadorias
|
||||||
|
|
||||||
|
- **RFGSA032 - Registrar Entrada de Mercadoria:** O sistema deve permitir o registro de entrada de mercadorias no estoque (produto, quantidade, data, fornecedor, custo unitário).
|
||||||
|
|
||||||
|
- **RFGSA033 - Atualizar Estoque:** O sistema deve atualizar automaticamente o estoque dos produtos após a entrada de mercadorias.
|
||||||
|
|
||||||
|
- **RFGSA034 - Visualizar Estoque Atual:** O sistema deve exibir o estoque atual de todos os produtos.
|
||||||
|
|
||||||
|
- **RFGSA035 - Alerta de Estoque Baixo:** O sistema deve gerar alertas quando o estoque de um produto atingir um nível mínimo configurável.
|
||||||
|
|
||||||
|
- **RFGSA036 - Gerenciar Fornecedores:** O sistema deve permitir o cadastro, edição e exclusão de informações de fornecedores.
|
||||||
|
|
||||||
|
|
||||||
|
### 2.10. Dashboard de Resultados e Relatórios
|
||||||
|
|
||||||
|
- **RFGSA037 - Dashboard de Vendas:** O sistema deve exibir um dashboard com métricas de vendas (total de vendas, vendas por produto, vendas por período, vendas por garçom).
|
||||||
|
|
||||||
|
- **RFGSA038 - Dashboard de Lucratividade:** O sistema deve exibir um dashboard com métricas de lucratividade (receita, custo de mercadoria vendida, lucro bruto).
|
||||||
|
|
||||||
|
- **RFGSA039 - Relatório de Estoque:** O sistema deve gerar relatórios detalhados sobre o estoque (movimentação, valor do estoque).
|
||||||
|
|
||||||
|
- **RFGSA040 - Relatório de Desempenho de Funcionários:** O sistema deve gerar relatórios sobre o desempenho dos garçons (e.g., número de comandas abertas, valor total de vendas).
|
||||||
|
|
||||||
|
- **RFGSA041 - Relatório Financeiro:** O sistema deve gerar relatórios financeiros consolidados (receitas, despesas, fluxo de caixa).
|
||||||
|
|
||||||
|
|
||||||
|
## 3. Requisitos Não Funcionais (RNF)
|
||||||
|
|
||||||
|
### 3.1. Usabilidade
|
||||||
|
|
||||||
|
- **RNFGSA001 - Interface Web Intuitiva:** A interface web deve ser intuitiva, responsiva e fácil de navegar para administradores e gerentes.
|
||||||
|
|
||||||
|
- **RNFGSA002 - Painéis de Controle Claros:** Os dashboards e relatórios devem apresentar informações de forma clara e visualmente atraente.
|
||||||
|
|
||||||
|
- **RNFGSA003 - Geração de Relatórios:** Relatórios devem ser exportáveis em formatos comuns (e.g., PDF, CSV, Excel).
|
||||||
|
|
||||||
|
|
||||||
|
### 3.2. Desempenho
|
||||||
|
|
||||||
|
- **RNFGSA004 - Tempo de Resposta:** O tempo de resposta para operações de gestão e carregamento de dashboards não deve exceder 5 segundos.
|
||||||
|
|
||||||
|
- **RNFGSA005 - Capacidade de Processamento:** O sistema deve ser capaz de processar um grande volume de dados de vendas, estoque e funcionários sem lentidão.
|
||||||
|
|
||||||
|
|
||||||
|
### 3.3. Segurança
|
||||||
|
|
||||||
|
- **RNFGSA006 - Autenticação de Administradores:** O sistema deve garantir que apenas usuários autorizados (administradores, gerentes) possam acessar o painel de gestão.
|
||||||
|
|
||||||
|
- **RNFGSA007 - Controle de Acesso Baseado em Papéis (RBAC):** O sistema deve implementar um controle de acesso robusto, onde diferentes papéis de usuário (administrador, gerente, etc.) têm permissões específicas.
|
||||||
|
|
||||||
|
- **RNFGSA008 - Proteção de Dados Sensíveis:** Informações financeiras, de funcionários e de clientes devem ser armazenadas e transmitidas de forma criptografada e segura.
|
||||||
|
|
||||||
|
- **RNFGSA009 - Auditoria:** O sistema deve registrar logs de auditoria para ações críticas realizadas pelos usuários de gestão.
|
||||||
|
|
||||||
|
|
||||||
|
### 3.4. Confiabilidade
|
||||||
|
|
||||||
|
- **RNFGSA010 - Disponibilidade:** O sistema deve estar disponível 99,5% do tempo.
|
||||||
|
|
||||||
|
- **RNFGSA011 - Integridade dos Dados:** O sistema deve garantir a integridade e consistência de todos os dados financeiros e de estoque.
|
||||||
|
|
||||||
|
- **RNFGSA012 - Backup e Recuperação:** Deve haver um plano de backup e recuperação de desastres para os dados do sistema.
|
||||||
|
|
||||||
|
|
||||||
|
### 3.5. Manutenibilidade
|
||||||
|
|
||||||
|
- **RNFGSA013 - Arquitetura Modular:** O sistema deve ser desenvolvido com uma arquitetura modular para facilitar a manutenção e a adição de novas funcionalidades.
|
||||||
|
|
||||||
|
- **RNFGSA014 - Documentação Interna:** O código e a arquitetura do sistema devem ser bem documentados.
|
||||||
|
|
||||||
|
|
||||||
|
### 3.6. Compatibilidade
|
||||||
|
|
||||||
|
- **RNFGSA015 - Compatibilidade com Navegadores:** O sistema deve ser compatível com os principais navegadores web modernos (Chrome, Firefox, Edge, Safari).
|
||||||
|
|
||||||
|
- **RNFGSA016 - Responsividade Web:** A interface deve ser responsiva e adaptável a diferentes tamanhos de tela (desktops, tablets).
|
||||||
|
|
||||||
|
|
||||||
|
## 4. Regras de Negócio (RN)
|
||||||
|
|
||||||
|
### 4.1. Funcionários e Salários
|
||||||
|
|
||||||
|
- **RNGSA001 - Salário Base:** Cada funcionário deve ter um salário base definido.
|
||||||
|
|
||||||
|
- **RNGSA002 - Período de Pagamento:** Salários são pagos em períodos definidos (e.g., mensalmente).
|
||||||
|
|
||||||
|
- **RNGSA003 - Descontos Legais:** O sistema deve calcular e aplicar descontos legais (e.g., impostos, previdência) nos holerites.
|
||||||
|
|
||||||
|
|
||||||
|
### 4.2. Estoque
|
||||||
|
|
||||||
|
- **RNGSA004 - Atualização de Estoque:** A venda de produtos (via tickets ou comandas) deve decrementar automaticamente o estoque.
|
||||||
|
|
||||||
|
- **RNGSA005 - Custo Médio Ponderado:** O sistema deve calcular o custo médio ponderado dos produtos em estoque para fins de lucratividade.
|
||||||
|
|
||||||
|
|
||||||
|
## 5. Requisitos de Sistema (RS)
|
||||||
|
|
||||||
|
### 5.1. Tecnologia
|
||||||
|
|
||||||
|
- **RSGSA001 - Framework:** O sistema será desenvolvido utilizando o framework Django (Python).
|
||||||
|
|
||||||
|
- **RSGSA002 - Banco de Dados:** Será utilizado um banco de dados relacional (e.g., PostgreSQL, MySQL).
|
||||||
|
|
||||||
|
- **RSGSA003 - Servidor Web:** O sistema será hospedado em um servidor web (e.g., Nginx, Apache).
|
||||||
|
|
||||||
|
|
||||||
|
### 5.2. Integrações
|
||||||
|
|
||||||
|
- **RSGSA004 - Integração com BarApp e GarçomApp:** O sistema de gestão atuará como o backend central para os aplicativos mobile, gerenciando seus dados.
|
||||||
|
|
||||||
|
- **RSGSA005 - Integração com Gateway de Pagamento:** O sistema de gestão deve ter acesso às informações de transações do gateway de pagamento.
|
||||||
|
|
||||||
|
- **RSGSA006 - Integração com Sistema de Cozinha:** O sistema de gestão deve se comunicar com o sistema da cozinha para gerenciar o status dos pedidos.
|
||||||
1
doc/App Gestão/db.json
Normal file
1
doc/App Gestão/db.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[]
|
||||||
38
doc/App Interno/App Interno - Visão Geral.md
Normal file
38
doc/App Interno/App Interno - Visão Geral.md
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
# GarçomApp - Visão Geral
|
||||||
|
|
||||||
|
O **GarçomApp** é um aplicativo mobile de uso interno, exclusivo para a equipe de garçons do bar. Seu propósito é otimizar as operações diárias, agilizando o atendimento, o gerenciamento de pedidos e a interação com os clientes de forma eficiente.
|
||||||
|
|
||||||
|
## Principais Funcionalidades:
|
||||||
|
|
||||||
|
- **Validação de Tickets e Ingressos:** Leia e valide QR Codes de tickets de produtos e ingressos de eventos apresentados pelos clientes no BarApp.
|
||||||
|
|
||||||
|
- **Gestão da Fila do Karaokê:** Visualize, adicione, edite e remova pessoas da fila do karaokê em tempo real.
|
||||||
|
|
||||||
|
- **Gestão de Comandas:**
|
||||||
|
|
||||||
|
- Visualize todas as comandas abertas e aguardando pagamento.
|
||||||
|
|
||||||
|
- Abra novas comandas e associe-as a mesas ou clientes.
|
||||||
|
|
||||||
|
- Adicione produtos às comandas.
|
||||||
|
|
||||||
|
- Gere QR Codes para que os clientes paguem suas comandas (total ou parcial) via Pix no BarApp.
|
||||||
|
|
||||||
|
- Feche comandas.
|
||||||
|
|
||||||
|
- **Acompanhamento de Pedidos:** Monitore o status dos pedidos enviados para a cozinha (na fila, preparando, pronto).
|
||||||
|
|
||||||
|
- **Notificações:** Receba alertas em tempo real sobre pagamentos de comandas efetuados pelos clientes e quando os pedidos da cozinha estiverem prontos.
|
||||||
|
|
||||||
|
|
||||||
|
## Documentos Relacionados:
|
||||||
|
|
||||||
|
- [[Requisitos - Aplicativo Interno]]
|
||||||
|
|
||||||
|
- [[Casos de Uso - Aplicativo Interno]]
|
||||||
|
|
||||||
|
- [[Histórias de Usuário - Aplicativo Interno]]
|
||||||
|
|
||||||
|
- [[Modelagem de Banco de Dados]]
|
||||||
|
|
||||||
|
- [[Visão Geral do Projeto]]
|
||||||
291
doc/App Interno/Casos de Uso - Aplicativo Interno.md
Normal file
291
doc/App Interno/Casos de Uso - Aplicativo Interno.md
Normal file
@@ -0,0 +1,291 @@
|
|||||||
|
# Casos de Uso do Aplicativo GarçomApp
|
||||||
|
|
||||||
|
Este documento descreve os principais casos de uso do aplicativo GarçomApp, detalhando as interações entre os atores (garçons) e o sistema.
|
||||||
|
|
||||||
|
## Atores
|
||||||
|
|
||||||
|
- **Garçom:** Funcionário do bar que utiliza o aplicativo.
|
||||||
|
|
||||||
|
- **Cliente (BarApp):** Usuário do aplicativo do cliente que interage com o garçom via QR Codes.
|
||||||
|
|
||||||
|
- **Sistema de Cozinha:** Sistema responsável pelo gerenciamento de pedidos na cozinha.
|
||||||
|
|
||||||
|
- **Sistema de Pagamento:** Serviço externo para processamento de pagamentos.
|
||||||
|
|
||||||
|
|
||||||
|
## Casos de Uso
|
||||||
|
|
||||||
|
### 1. Autenticação
|
||||||
|
|
||||||
|
#### CUG001: Realizar Login
|
||||||
|
|
||||||
|
- **Nome:** Realizar Login
|
||||||
|
|
||||||
|
- **Ator:** Garçom
|
||||||
|
|
||||||
|
- **Descrição:** Permite que o garçom acesse o aplicativo com suas credenciais.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Garçom acessa a tela de login.
|
||||||
|
|
||||||
|
2. Garçom insere usuário e senha.
|
||||||
|
|
||||||
|
3. Sistema valida as credenciais.
|
||||||
|
|
||||||
|
4. Sistema autentica o garçom e o redireciona para a tela principal.
|
||||||
|
|
||||||
|
|
||||||
|
### 2. Gerenciamento de Tickets e Ingressos
|
||||||
|
|
||||||
|
#### CUG002: Validar Ticket de Produto
|
||||||
|
|
||||||
|
- **Nome:** Validar Ticket de Produto
|
||||||
|
|
||||||
|
- **Ator:** Garçom, Cliente (BarApp)
|
||||||
|
|
||||||
|
- **Descrição:** Permite que o garçom valide um ticket de produto apresentado pelo cliente.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Garçom seleciona a opção "Validar Ticket".
|
||||||
|
|
||||||
|
2. Sistema ativa a câmera para leitura de QR Code.
|
||||||
|
|
||||||
|
3. Garçom escaneia o QR Code do ticket no BarApp do cliente.
|
||||||
|
|
||||||
|
4. Sistema valida o ticket (existência, validade, não utilizado).
|
||||||
|
|
||||||
|
5. Sistema exibe confirmação de validação e marca o ticket como utilizado.
|
||||||
|
|
||||||
|
|
||||||
|
#### CUG003: Validar Ingresso de Evento
|
||||||
|
|
||||||
|
- **Nome:** Validar Ingresso de Evento
|
||||||
|
|
||||||
|
- **Ator:** Garçom, Cliente (BarApp)
|
||||||
|
|
||||||
|
- **Descrição:** Permite que o garçom valide um ingresso de evento apresentado pelo cliente.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Garçom seleciona a opção "Validar Ingresso".
|
||||||
|
|
||||||
|
2. Sistema ativa a câmera para leitura de QR Code.
|
||||||
|
|
||||||
|
3. Garçom escaneia o QR Code do ingresso no BarApp do cliente.
|
||||||
|
|
||||||
|
4. Sistema valida o ingresso (existência, validade, não utilizado).
|
||||||
|
|
||||||
|
5. Sistema exibe confirmação de validação e marca o ingresso como utilizado.
|
||||||
|
|
||||||
|
|
||||||
|
### 3. Gerenciamento da Fila do Karaokê
|
||||||
|
|
||||||
|
#### CUG004: Visualizar Fila do Karaokê
|
||||||
|
|
||||||
|
- **Nome:** Visualizar Fila do Karaokê
|
||||||
|
|
||||||
|
- **Ator:** Garçom
|
||||||
|
|
||||||
|
- **Descrição:** Permite que o garçom veja a ordem das pessoas para cantar.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Garçom acessa a tela do Karaokê.
|
||||||
|
|
||||||
|
2. Sistema exibe a lista de pessoas na fila em tempo real.
|
||||||
|
|
||||||
|
|
||||||
|
#### CUG005: Gerenciar Fila do Karaokê
|
||||||
|
|
||||||
|
- **Nome:** Gerenciar Fila do Karaokê
|
||||||
|
|
||||||
|
- **Ator:** Garçom
|
||||||
|
|
||||||
|
- **Descrição:** Permite que o garçom adicione, edite ou remova pessoas da fila do karaokê.
|
||||||
|
|
||||||
|
- **Fluxo Principal - Adicionar:**
|
||||||
|
|
||||||
|
1. Garçom seleciona "Adicionar à Fila".
|
||||||
|
|
||||||
|
2. Garçom insere nome da pessoa e, opcionalmente, música.
|
||||||
|
|
||||||
|
3. Sistema adiciona a pessoa ao final da fila.
|
||||||
|
|
||||||
|
- **Fluxo Principal - Editar/Mover:**
|
||||||
|
|
||||||
|
1. Garçom seleciona uma pessoa na fila.
|
||||||
|
|
||||||
|
2. Garçom arrasta para mudar a posição ou edita os detalhes.
|
||||||
|
|
||||||
|
3. Sistema atualiza a fila.
|
||||||
|
|
||||||
|
- **Fluxo Principal - Remover:**
|
||||||
|
|
||||||
|
1. Garçom seleciona uma pessoa na fila.
|
||||||
|
|
||||||
|
2. Garçom confirma a remoção.
|
||||||
|
|
||||||
|
3. Sistema remove a pessoa da fila.
|
||||||
|
|
||||||
|
|
||||||
|
### 4. Gerenciamento de Comandas
|
||||||
|
|
||||||
|
#### CUG006: Visualizar Comandas
|
||||||
|
|
||||||
|
- **Nome:** Visualizar Comandas
|
||||||
|
|
||||||
|
- **Ator:** Garçom
|
||||||
|
|
||||||
|
- **Descrição:** Permite que o garçom veja o status de todas as comandas.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Garçom acessa a tela de Comandas.
|
||||||
|
|
||||||
|
2. Sistema exibe listas separadas de "Comandas Abertas" e "Comandas Aguardando Pagamento".
|
||||||
|
|
||||||
|
|
||||||
|
#### CUG007: Abrir Nova Comanda
|
||||||
|
|
||||||
|
- **Nome:** Abrir Nova Comanda
|
||||||
|
|
||||||
|
- **Ator:** Garçom
|
||||||
|
|
||||||
|
- **Descrição:** Permite que o garçom crie uma nova comanda para um cliente/mesa.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Garçom seleciona "Abrir Nova Comanda".
|
||||||
|
|
||||||
|
2. Garçom insere nome do cliente (opcional) e/ou número da mesa.
|
||||||
|
|
||||||
|
3. Sistema cria e exibe a nova comanda.
|
||||||
|
|
||||||
|
|
||||||
|
#### CUG008: Adicionar Produto à Comanda
|
||||||
|
|
||||||
|
- **Nome:** Adicionar Produto à Comanda
|
||||||
|
|
||||||
|
- **Ator:** Garçom
|
||||||
|
|
||||||
|
- **Descrição:** Permite que o garçom adicione itens do cardápio a uma comanda existente.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Garçom seleciona uma comanda aberta.
|
||||||
|
|
||||||
|
2. Garçom navega pelo cardápio e seleciona produtos e quantidades.
|
||||||
|
|
||||||
|
3. Sistema adiciona os produtos à comanda e atualiza o total.
|
||||||
|
|
||||||
|
4. Sistema envia o pedido para a cozinha (se aplicável).
|
||||||
|
|
||||||
|
|
||||||
|
#### CUG009: Editar Informações da Comanda
|
||||||
|
|
||||||
|
- **Nome:** Editar Informações da Comanda
|
||||||
|
|
||||||
|
- **Ator:** Garçom
|
||||||
|
|
||||||
|
- **Descrição:** Permite que o garçom atualize o nome do cliente ou a mesa associada a uma comanda.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Garçom seleciona uma comanda.
|
||||||
|
|
||||||
|
2. Garçom edita o nome do cliente ou o número da mesa.
|
||||||
|
|
||||||
|
3. Sistema atualiza as informações da comanda.
|
||||||
|
|
||||||
|
|
||||||
|
#### CUG010: Gerar QR Code para Pagamento da Comanda
|
||||||
|
|
||||||
|
- **Nome:** Gerar QR Code para Pagamento da Comanda
|
||||||
|
|
||||||
|
- **Ator:** Garçom, Cliente (BarApp), Sistema de Pagamento
|
||||||
|
|
||||||
|
- **Descrição:** Permite que o garçom gere um QR Code para o cliente pagar a comanda via Pix.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Garçom seleciona uma comanda.
|
||||||
|
|
||||||
|
2. Garçom seleciona a opção "Gerar QR Code para Pagamento".
|
||||||
|
|
||||||
|
3. Garçom pode escolher pagamento total ou parcial (informando o valor).
|
||||||
|
|
||||||
|
4. Sistema gera um QR Code (e.g., Pix) e o exibe para o cliente.
|
||||||
|
|
||||||
|
5. Cliente escaneia o QR Code e efetua o pagamento via BarApp.
|
||||||
|
|
||||||
|
6. Sistema de Pagamento notifica o GarçomApp sobre o pagamento.
|
||||||
|
|
||||||
|
|
||||||
|
#### CUG011: Fechar Comanda
|
||||||
|
|
||||||
|
- **Nome:** Fechar Comanda
|
||||||
|
|
||||||
|
- **Ator:** Garçom
|
||||||
|
|
||||||
|
- **Descrição:** Permite que o garçom marque uma comanda como paga e fechada.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Garçom verifica que a comanda foi totalmente paga.
|
||||||
|
|
||||||
|
2. Garçom seleciona a comanda e a opção "Fechar Comanda".
|
||||||
|
|
||||||
|
3. Sistema marca a comanda como fechada e a remove da lista de comandas abertas.
|
||||||
|
|
||||||
|
|
||||||
|
### 5. Acompanhamento de Pedidos e Notificações
|
||||||
|
|
||||||
|
#### CUG012: Visualizar Andamento de Pedidos da Cozinha
|
||||||
|
|
||||||
|
- **Nome:** Visualizar Andamento de Pedidos da Cozinha
|
||||||
|
|
||||||
|
- **Ator:** Garçom, Sistema de Cozinha
|
||||||
|
|
||||||
|
- **Descrição:** Permite que o garçom acompanhe o status dos pedidos enviados para a cozinha.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Garçom acessa a tela de "Pedidos da Cozinha".
|
||||||
|
|
||||||
|
2. Sistema exibe a lista de pedidos com seus status ("na fila", "preparando", "pronto").
|
||||||
|
|
||||||
|
|
||||||
|
#### CUG013: Receber Notificação de Pagamento de Comanda
|
||||||
|
|
||||||
|
- **Nome:** Receber Notificação de Pagamento de Comanda
|
||||||
|
|
||||||
|
- **Ator:** Garçom, Sistema de Pagamento
|
||||||
|
|
||||||
|
- **Descrição:** O sistema notifica o garçom quando uma comanda sob sua responsabilidade é paga pelo cliente.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Pagamento da comanda é efetuado pelo cliente via BarApp.
|
||||||
|
|
||||||
|
2. Sistema de Pagamento envia notificação ao GarçomApp.
|
||||||
|
|
||||||
|
3. GarçomApp exibe uma notificação (e.g., push notification, alerta no app) informando sobre o pagamento.
|
||||||
|
|
||||||
|
|
||||||
|
#### CUG014: Receber Notificação de Pedido Pronto
|
||||||
|
|
||||||
|
- **Nome:** Receber Notificação de Pedido Pronto
|
||||||
|
|
||||||
|
- **Ator:** Garçom, Sistema de Cozinha
|
||||||
|
|
||||||
|
- **Descrição:** O sistema notifica o garçom quando um pedido da cozinha está pronto para ser entregue.
|
||||||
|
|
||||||
|
- **Fluxo Principal:**
|
||||||
|
|
||||||
|
1. Sistema de Cozinha marca um pedido como "pronto".
|
||||||
|
|
||||||
|
2. Sistema de Cozinha envia notificação ao GarçomApp.
|
||||||
|
|
||||||
|
3. GarçomApp exibe uma notificação informando que o pedido está pronto.
|
||||||
217
doc/App Interno/Histórias de Usuário - Aplicativo Interno.md
Normal file
217
doc/App Interno/Histórias de Usuário - Aplicativo Interno.md
Normal file
@@ -0,0 +1,217 @@
|
|||||||
|
# Histórias de Usuário do Aplicativo GarçomApp
|
||||||
|
|
||||||
|
Este documento apresenta as histórias de usuário para o aplicativo GarçomApp, focando na perspectiva do garçom e no valor que cada funcionalidade entrega para a operação do bar.
|
||||||
|
|
||||||
|
## 1. Autenticação
|
||||||
|
|
||||||
|
- **HUG001 - Login:**
|
||||||
|
|
||||||
|
- **Como um** garçom,
|
||||||
|
|
||||||
|
- **Eu quero** fazer login no aplicativo,
|
||||||
|
|
||||||
|
- **Para que** eu possa acessar minhas ferramentas de trabalho.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- Garçom insere usuário e senha.
|
||||||
|
|
||||||
|
- Sistema valida as credenciais.
|
||||||
|
|
||||||
|
- Garçom é redirecionado para a tela principal do aplicativo.
|
||||||
|
|
||||||
|
|
||||||
|
## 2. Gerenciamento de Tickets e Ingressos
|
||||||
|
|
||||||
|
- **HUG002 - Validação de Ticket:**
|
||||||
|
|
||||||
|
- **Como um** garçom,
|
||||||
|
|
||||||
|
- **Eu quero** ler o QR Code de um ticket de produto do cliente,
|
||||||
|
|
||||||
|
- **Para que** eu possa validar a compra e entregar o produto.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- Câmera é ativada para leitura do QR Code.
|
||||||
|
|
||||||
|
- Sistema valida o ticket (existência, validade, não utilizado).
|
||||||
|
|
||||||
|
- Sistema exibe mensagem de sucesso ou erro na validação.
|
||||||
|
|
||||||
|
- Ticket é marcado como utilizado no sistema.
|
||||||
|
|
||||||
|
- **HUG003 - Validação de Ingresso:**
|
||||||
|
|
||||||
|
- **Como um** garçom,
|
||||||
|
|
||||||
|
- **Eu quero** ler o QR Code de um ingresso de evento do cliente,
|
||||||
|
|
||||||
|
- **Para que** eu possa validar a entrada do cliente no evento.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- Câmera é ativada para leitura do QR Code.
|
||||||
|
|
||||||
|
- Sistema valida o ingresso (existência, validade, não utilizado).
|
||||||
|
|
||||||
|
- Sistema exibe mensagem de sucesso ou erro na validação.
|
||||||
|
|
||||||
|
- Ingresso é marcado como utilizado no sistema.
|
||||||
|
|
||||||
|
|
||||||
|
## 3. Gerenciamento da Fila do Karaokê
|
||||||
|
|
||||||
|
- **HUG004 - Visualização da Fila do Karaokê:**
|
||||||
|
|
||||||
|
- **Como um** garçom,
|
||||||
|
|
||||||
|
- **Eu quero** visualizar a fila de pessoas para o karaokê,
|
||||||
|
|
||||||
|
- **Para que** eu possa gerenciar a ordem das apresentações.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- Fila é exibida em tempo real.
|
||||||
|
|
||||||
|
- Nomes das pessoas na fila são visíveis.
|
||||||
|
|
||||||
|
- **HUG005 - Gerenciamento da Fila do Karaokê:**
|
||||||
|
|
||||||
|
- **Como um** garçom,
|
||||||
|
|
||||||
|
- **Eu quero** adicionar, editar e remover pessoas da fila do karaokê,
|
||||||
|
|
||||||
|
- **Para que** eu possa manter a fila organizada e justa.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- É possível adicionar um novo nome à fila.
|
||||||
|
|
||||||
|
- É possível arrastar e soltar nomes para mudar a posição na fila.
|
||||||
|
|
||||||
|
- É possível remover um nome da fila.
|
||||||
|
|
||||||
|
- A fila é atualizada instantaneamente para todos os usuários.
|
||||||
|
|
||||||
|
|
||||||
|
## 4. Gerenciamento de Comandas
|
||||||
|
|
||||||
|
- **HUG006 - Visualização de Comandas:**
|
||||||
|
|
||||||
|
- **Como um** garçom,
|
||||||
|
|
||||||
|
- **Eu quero** visualizar todas as comandas abertas e as aguardando pagamento,
|
||||||
|
|
||||||
|
- **Para que** eu tenha controle sobre o consumo das mesas e pagamentos pendentes.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- Listas de comandas abertas e aguardando pagamento são exibidas.
|
||||||
|
|
||||||
|
- Informações básicas da comanda (mesa, nome do cliente, valor total) são visíveis.
|
||||||
|
|
||||||
|
- **HUG007 - Abrir Nova Comanda:**
|
||||||
|
|
||||||
|
- **Como um** garçom,
|
||||||
|
|
||||||
|
- **Eu quero** abrir uma nova comanda,
|
||||||
|
|
||||||
|
- **Para que** eu possa registrar o consumo de um novo cliente/mesa.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- É possível associar a comanda a uma mesa e/ou nome de cliente.
|
||||||
|
|
||||||
|
- A nova comanda é criada e aparece na lista de comandas abertas.
|
||||||
|
|
||||||
|
- **HUG008 - Adicionar Produto à Comanda:**
|
||||||
|
|
||||||
|
- **Como um** garçom,
|
||||||
|
|
||||||
|
- **Eu quero** adicionar produtos à comanda de um cliente,
|
||||||
|
|
||||||
|
- **Para que** o consumo seja registrado e o pedido enviado para a cozinha/bar.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- É possível selecionar produtos do cardápio e suas quantidades.
|
||||||
|
|
||||||
|
- O valor da comanda é atualizado automaticamente.
|
||||||
|
|
||||||
|
- Pedidos são enviados para a cozinha/bar.
|
||||||
|
|
||||||
|
- **HUG009 - Gerar QR Code para Pagamento da Comanda:**
|
||||||
|
|
||||||
|
- **Como um** garçom,
|
||||||
|
|
||||||
|
- **Eu quero** gerar um QR Code para o cliente pagar a comanda via Pix,
|
||||||
|
|
||||||
|
- **Para que** o cliente possa pagar de forma autônoma e rápida.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- É possível selecionar a comanda e a opção de gerar QR Code.
|
||||||
|
|
||||||
|
- É possível definir se o pagamento é total ou parcial.
|
||||||
|
|
||||||
|
- Um QR Code Pix válido é exibido na tela.
|
||||||
|
|
||||||
|
- **HUG010 - Fechar Comanda:**
|
||||||
|
|
||||||
|
- **Como um** garçom,
|
||||||
|
|
||||||
|
- **Eu quero** fechar uma comanda,
|
||||||
|
|
||||||
|
- **Para que** eu possa indicar que o consumo foi pago e a mesa está liberada.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- A comanda só pode ser fechada se o valor total estiver pago.
|
||||||
|
|
||||||
|
- A comanda é removida da lista de comandas abertas.
|
||||||
|
|
||||||
|
|
||||||
|
## 5. Acompanhamento de Pedidos e Notificações
|
||||||
|
|
||||||
|
- **HUG011 - Visualização do Andamento de Pedidos da Cozinha:**
|
||||||
|
|
||||||
|
- **Como um** garçom,
|
||||||
|
|
||||||
|
- **Eu quero** ver o status dos pedidos que enviei para a cozinha,
|
||||||
|
|
||||||
|
- **Para que** eu saiba quando posso buscar os produtos para entregar aos clientes.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- Lista de pedidos exibe o status ("na fila", "preparando", "pronto").
|
||||||
|
|
||||||
|
- Informações da comanda associada ao pedido são visíveis.
|
||||||
|
|
||||||
|
- **HUG012 - Receber Notificação de Pagamento de Comanda:**
|
||||||
|
|
||||||
|
- **Como um** garçom,
|
||||||
|
|
||||||
|
- **Eu quero** ser notificado quando uma comanda sob minha responsabilidade for paga pelo cliente,
|
||||||
|
|
||||||
|
- **Para que** eu possa agilizar o fechamento da mesa ou verificar o pagamento.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- Uma notificação (e.g., push, sonora) é exibida no aplicativo.
|
||||||
|
|
||||||
|
- A notificação indica qual comanda foi paga.
|
||||||
|
|
||||||
|
- **HUG013 - Receber Notificação de Pedido Pronto:**
|
||||||
|
|
||||||
|
- **Como um** garçom,
|
||||||
|
|
||||||
|
- **Eu quero** ser notificado quando um pedido da cozinha estiver pronto,
|
||||||
|
|
||||||
|
- **Para que** eu possa buscá-lo e entregar ao cliente sem demora.
|
||||||
|
|
||||||
|
- **Critérios de Aceitação:**
|
||||||
|
|
||||||
|
- Uma notificação (e.g., push, sonora) é exibida no aplicativo.
|
||||||
|
|
||||||
|
- A notificação indica qual pedido está pronto e a qual comanda pertence.
|
||||||
178
doc/App Interno/Requisitos - Aplicativo Interno.md
Normal file
178
doc/App Interno/Requisitos - Aplicativo Interno.md
Normal file
@@ -0,0 +1,178 @@
|
|||||||
|
# Documento de Requisitos do Aplicativo GarçomApp
|
||||||
|
|
||||||
|
## 1. Introdução
|
||||||
|
|
||||||
|
### 1.1. Propósito
|
||||||
|
|
||||||
|
Este documento tem como objetivo detalhar os requisitos funcionais, não funcionais, regras de negócio e requisitos de sistema para o desenvolvimento do aplicativo mobile "GarçomApp". O aplicativo visa otimizar as operações internas do bar, permitindo que os garçons gerenciem tickets, ingressos, a fila do karaokê, comandas de consumo e acompanhem o status dos pedidos da cozinha.
|
||||||
|
|
||||||
|
### 1.2. Escopo
|
||||||
|
|
||||||
|
O aplicativo GarçomApp será uma solução mobile disponível para as plataformas Android e iOS (ou uma única plataforma, a ser definida), de uso exclusivo da equipe do bar (garçons). Ele permitirá a interação com os clientes através de QR Codes e a gestão de processos internos.
|
||||||
|
|
||||||
|
### 1.3. Público-alvo
|
||||||
|
|
||||||
|
- **Garçons/Atendentes:** Profissionais do bar que utilizarão o aplicativo para gerenciar as operações diárias.
|
||||||
|
|
||||||
|
|
||||||
|
## 2. Requisitos Funcionais (RF)
|
||||||
|
|
||||||
|
Os requisitos funcionais descrevem as funcionalidades que o sistema deve oferecer aos garçons.
|
||||||
|
|
||||||
|
### 2.1. Autenticação e Acesso
|
||||||
|
|
||||||
|
- **RFG001 - Login de Garçom:** O sistema deve permitir que o garçom faça login utilizando suas credenciais de acesso (usuário e senha fornecidos pelo bar).
|
||||||
|
|
||||||
|
|
||||||
|
### 2.2. Gerenciamento de Tickets e Ingressos
|
||||||
|
|
||||||
|
- **RFG002 - Leitura e Validação de Ticket:** O sistema deve permitir que o garçom leia o QR Code de um ticket gerado pelo cliente (no BarApp) e valide seu uso.
|
||||||
|
|
||||||
|
- **RFG003 - Leitura e Validação de Ingresso:** O sistema deve permitir que o garçom leia o QR Code de um ingresso gerado pelo cliente (no BarApp) e valide sua entrada no evento.
|
||||||
|
|
||||||
|
- **RFG004 - Registro de Uso:** Após a validação, o sistema deve registrar o ticket/ingresso como utilizado, com data e hora.
|
||||||
|
|
||||||
|
|
||||||
|
### 2.3. Gerenciamento da Fila do Karaokê
|
||||||
|
|
||||||
|
- **RFG005 - Visualização da Fila do Karaokê:** O sistema deve exibir a fila atual de pessoas para o karaokê em tempo real.
|
||||||
|
|
||||||
|
- **RFG006 - Adicionar Pessoa à Fila:** O sistema deve permitir que o garçom adicione uma pessoa à fila do karaokê (e.g., nome, música).
|
||||||
|
|
||||||
|
- **RFG007 - Editar Posição na Fila:** O sistema deve permitir que o garçom altere a posição de uma pessoa na fila.
|
||||||
|
|
||||||
|
- **RFG008 - Remover Pessoa da Fila:** O sistema deve permitir que o garçom remova uma pessoa da fila.
|
||||||
|
|
||||||
|
- **RFG009 - Marcar Próximo a Cantar:** O sistema deve permitir que o garçom marque a próxima pessoa a cantar.
|
||||||
|
|
||||||
|
|
||||||
|
### 2.4. Gerenciamento de Comandas
|
||||||
|
|
||||||
|
- **RFG010 - Visualização de Comandas Abertas:** O sistema deve exibir uma lista de todas as comandas abertas no bar.
|
||||||
|
|
||||||
|
- **RFG011 - Visualização de Comandas Aguardando Pagamento:** O sistema deve exibir uma lista de comandas que foram solicitadas para pagamento pelo cliente e estão aguardando confirmação.
|
||||||
|
|
||||||
|
- **RFG012 - Abrir Nova Comanda:** O sistema deve permitir que o garçom abra uma nova comanda, associando-a a um cliente (opcional) e/ou mesa.
|
||||||
|
|
||||||
|
- **RFG013 - Editar Informações da Comanda:** O sistema deve permitir que o garçom edite informações da comanda, como nome do cliente e número da mesa.
|
||||||
|
|
||||||
|
- **RFG014 - Adicionar Produto à Comanda:** O sistema deve permitir que o garçom adicione produtos do cardápio a uma comanda aberta.
|
||||||
|
|
||||||
|
- **RFG015 - Fechar Comanda:** O sistema deve permitir que o garçom marque uma comanda como fechada após o pagamento.
|
||||||
|
|
||||||
|
- **RFG016 - Gerar QR Code para Pagamento (Comanda):** O sistema deve permitir que o garçom gere um QR Code para que o cliente pague a comanda (total ou parcial) via Pix através do BarApp.
|
||||||
|
|
||||||
|
|
||||||
|
### 2.5. Acompanhamento de Pedidos da Cozinha
|
||||||
|
|
||||||
|
- **RFG017 - Visualização do Andamento de Pedidos:** O sistema deve exibir o status dos pedidos enviados para a cozinha (e.g., "na fila", "preparando", "pronto").
|
||||||
|
|
||||||
|
- **RFG018 - Detalhes do Pedido:** O garçom deve poder visualizar os detalhes de cada pedido (itens, comanda associada).
|
||||||
|
|
||||||
|
|
||||||
|
### 2.6. Notificações
|
||||||
|
|
||||||
|
- **RFG019 - Notificação de Pagamento de Comanda:** O sistema deve notificar o garçom quando o pagamento de uma comanda sob sua responsabilidade for efetuado pelo cliente via BarApp.
|
||||||
|
|
||||||
|
- **RFG020 - Notificação de Pedido Pronto:** O sistema deve notificar o garçom quando um prato/pedido da cozinha estiver pronto para ser entregue.
|
||||||
|
|
||||||
|
|
||||||
|
## 3. Requisitos Não Funcionais (RNF)
|
||||||
|
|
||||||
|
Os requisitos não funcionais descrevem as qualidades do sistema.
|
||||||
|
|
||||||
|
### 3.1. Usabilidade
|
||||||
|
|
||||||
|
- **RNFG001 - Interface Otimizada para Garçons:** A interface deve ser projetada para uso rápido e eficiente em um ambiente de bar, com botões grandes e fluxo otimizado para as tarefas mais frequentes.
|
||||||
|
|
||||||
|
- **RNFG002 - Tempo de Resposta:** O tempo de resposta do aplicativo para todas as interações do garçom não deve exceder 2 segundos.
|
||||||
|
|
||||||
|
- **RNFG003 - Consistência Visual:** A interface deve seguir um padrão visual consistente.
|
||||||
|
|
||||||
|
- **RNFG004 - Feedback Visual e Sonoro:** O sistema deve fornecer feedback claro (visual e/ou sonoro) para ações importantes, como validação de QR Code ou recebimento de notificações.
|
||||||
|
|
||||||
|
|
||||||
|
### 3.2. Desempenho
|
||||||
|
|
||||||
|
- **RNFG005 - Carregamento Rápido:** O aplicativo deve carregar em no máximo 3 segundos.
|
||||||
|
|
||||||
|
- **RNFG006 - Sincronização em Tempo Real:** As informações de fila do karaokê, status de pedidos da cozinha e comandas devem ser atualizadas em tempo real.
|
||||||
|
|
||||||
|
- **RNFG007 - Estabilidade:** O aplicativo deve ser estável e não apresentar travamentos ou falhas frequentes durante o uso contínuo.
|
||||||
|
|
||||||
|
|
||||||
|
### 3.3. Segurança
|
||||||
|
|
||||||
|
- **RNFG008 - Autenticação de Garçons:** O sistema deve garantir que apenas garçons autorizados possam acessar o aplicativo.
|
||||||
|
|
||||||
|
- **RNFG009 - Controle de Acesso:** Diferentes níveis de permissão podem ser implementados para garçons, se necessário (e.g., apenas visualizar, ou também editar).
|
||||||
|
|
||||||
|
- **RNFG010 - Integridade dos Dados:** Os dados de tickets, ingressos e comandas devem ser protegidos contra manipulação indevida.
|
||||||
|
|
||||||
|
|
||||||
|
### 3.4. Confiabilidade
|
||||||
|
|
||||||
|
- **RNFG011 - Disponibilidade:** O aplicativo deve estar disponível 99,9% do tempo durante o horário de funcionamento do bar.
|
||||||
|
|
||||||
|
- **RNFG012 - Tratamento de Erros:** O sistema deve lidar com erros de forma robusta, exibindo mensagens claras e permitindo a recuperação.
|
||||||
|
|
||||||
|
- **RNFG013 - Persistência de Dados:** Todas as informações de comandas, fila e status de pedidos devem ser armazenadas de forma persistente.
|
||||||
|
|
||||||
|
|
||||||
|
### 3.5. Manutenibilidade
|
||||||
|
|
||||||
|
- **RNFG014 - Código Limpo:** O código-fonte deve ser bem documentado, modular e fácil de entender para futuras manutenções e evoluções.
|
||||||
|
|
||||||
|
- **RNFG015 - Atualizações:** O aplicativo deve permitir atualizações e novas funcionalidades de forma eficiente.
|
||||||
|
|
||||||
|
|
||||||
|
### 3.6. Compatibilidade
|
||||||
|
|
||||||
|
- **RNFG016 - Compatibilidade Mobile:** O aplicativo deve ser compatível com as versões mais recentes dos sistemas operacionais Android e iOS (ou a plataforma escolhida).
|
||||||
|
|
||||||
|
- **RNFG017 - Responsividade:** A interface do aplicativo deve se adaptar a diferentes tamanhos de tela de dispositivos móveis.
|
||||||
|
|
||||||
|
|
||||||
|
## 4. Regras de Negócio (RN)
|
||||||
|
|
||||||
|
As regras de negócio são as políticas e restrições que governam o funcionamento do bar e do aplicativo para garçons.
|
||||||
|
|
||||||
|
### 4.1. Tickets e Ingressos
|
||||||
|
|
||||||
|
- **RNG001 - Validação Única:** Cada QR Code de ticket ou ingresso só pode ser validado uma única vez.
|
||||||
|
|
||||||
|
- **RNG002 - Validação de Prazo:** O sistema deve verificar o prazo de validade do ticket/ingresso antes de permitir a validação.
|
||||||
|
|
||||||
|
|
||||||
|
### 4.2. Comandas
|
||||||
|
|
||||||
|
- **RNG003 - Associação de Comanda:** Cada comanda deve estar associada a uma mesa ou cliente (se identificado).
|
||||||
|
|
||||||
|
- **RNG004 - Fechamento de Comanda:** Uma comanda só pode ser fechada após o pagamento total.
|
||||||
|
|
||||||
|
- **RNG005 - Pagamento Parcial:** O sistema deve permitir o registro de pagamentos parciais em uma comanda.
|
||||||
|
|
||||||
|
|
||||||
|
### 4.3. Karaokê
|
||||||
|
|
||||||
|
- **RNG006 - Ordem da Fila:** A fila do karaokê deve seguir a ordem de adição, a menos que seja explicitamente alterada pelo garçom.
|
||||||
|
|
||||||
|
|
||||||
|
## 5. Requisitos de Sistema (RS)
|
||||||
|
|
||||||
|
Os requisitos de sistema definem as necessidades de infraestrutura e tecnologia.
|
||||||
|
|
||||||
|
### 5.1. Plataformas
|
||||||
|
|
||||||
|
- **RSG001 - Desenvolvimento Mobile:** O aplicativo deve ser desenvolvido para dispositivos móveis (Android e/ou iOS).
|
||||||
|
|
||||||
|
|
||||||
|
### 5.2. Integrações
|
||||||
|
|
||||||
|
- **RSG002 - Integração com BarApp (Cliente):** O GarçomApp deve ser capaz de ler QR Codes gerados pelo BarApp do cliente (tickets, ingressos, comandas).
|
||||||
|
|
||||||
|
- **RSG003 - Integração com Sistema de Cozinha:** O GarçomApp deve se comunicar com o sistema da cozinha para visualizar o status dos pedidos.
|
||||||
|
|
||||||
|
- **RSG004 - Integração com Sistema de Pagamento:** O GarçomApp deve interagir com o gateway de pagamento para gerar QR Codes de Pix para comandas.
|
||||||
|
|
||||||
|
- **RSG005 - Integração com Sistema de Gerenciamento do Bar:** O GarçomApp deve se integrar com o sistema de gerenciamento principal do bar para atualização de cardápio, registro de comandas e gerenciamento de usuários garçons.
|
||||||
9
doc/Banco de dados/Classes/Users.md
Normal file
9
doc/Banco de dados/Classes/Users.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
|
||||||
|
| Key | Type | Name | Relacionamento |
|
||||||
|
| ------- | ------ | ----------- | -------------- |
|
||||||
|
| Primary | Int | Id | |
|
||||||
|
| | String | Name | |
|
||||||
|
| | String | Description | |
|
||||||
|
| | String | Category | |
|
||||||
|
| | Bool | Active | |
|
||||||
|
| | Bool | Cuisine | |
|
||||||
26
doc/Banco de dados/Diagrama de relacionamento.canvas
Normal file
26
doc/Banco de dados/Diagrama de relacionamento.canvas
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"nodes":[
|
||||||
|
{"id":"51b34003d02babfc","type":"file","file":"Projeto_RRBEC/Banco de dados/Tabelas/Product.md","x":-1760,"y":-1800,"width":475,"height":340},
|
||||||
|
{"id":"cfd2916b5847fd87","type":"file","file":"Projeto_RRBEC/Banco de dados/Tabelas/ProductComanda.md","x":-1760,"y":-1220,"width":475,"height":360},
|
||||||
|
{"id":"4d7f06a28a8a7057","type":"file","file":"Projeto_RRBEC/Banco de dados/Tabelas/Category.md","x":-2440,"y":-1800,"width":460,"height":340},
|
||||||
|
{"id":"374cb381ea448aa0","type":"file","file":"Projeto_RRBEC/Banco de dados/Tabelas/Orders.md","x":-2440,"y":-1220,"width":460,"height":360},
|
||||||
|
{"id":"8fce51b4dd94dcec","type":"file","file":"Projeto_RRBEC/Banco de dados/Tabelas/Payments.md","x":-1040,"y":-1800,"width":520,"height":340},
|
||||||
|
{"id":"28728857b04ab577","type":"file","file":"Projeto_RRBEC/Banco de dados/Tabelas/TypePay.md","x":-240,"y":-1800,"width":480,"height":340},
|
||||||
|
{"id":"0921648553d53818","type":"file","file":"Projeto_RRBEC/Banco de dados/Tabelas/Client.md","x":-240,"y":-1220,"width":480,"height":360},
|
||||||
|
{"id":"21e9a170de244d60","type":"file","file":"Projeto_RRBEC/Banco de dados/Tabelas/Comanda.md","x":-1040,"y":-1220,"width":520,"height":360},
|
||||||
|
{"id":"e91a1fe3b7eb8aae","type":"file","file":"Projeto_RRBEC/Banco de dados/Tabelas/Users.md","x":-1040,"y":-640,"width":520,"height":360},
|
||||||
|
{"id":"4c481d9434b816c3","type":"file","file":"Projeto_RRBEC/Banco de dados/Tabelas/Mesas.md","x":-240,"y":-640,"width":480,"height":360}
|
||||||
|
],
|
||||||
|
"edges":[
|
||||||
|
{"id":"a4e5113b603c3e36","fromNode":"21e9a170de244d60","fromSide":"right","toNode":"4c481d9434b816c3","toSide":"left"},
|
||||||
|
{"id":"b5c5875d1d735f4f","fromNode":"8fce51b4dd94dcec","fromSide":"bottom","toNode":"21e9a170de244d60","toSide":"top"},
|
||||||
|
{"id":"85a77721fe0ea358","fromNode":"8fce51b4dd94dcec","fromSide":"right","toNode":"28728857b04ab577","toSide":"left"},
|
||||||
|
{"id":"815b116a7bfc0e10","fromNode":"51b34003d02babfc","fromSide":"left","toNode":"4d7f06a28a8a7057","toSide":"right"},
|
||||||
|
{"id":"70432be0f116ce71","fromNode":"cfd2916b5847fd87","fromSide":"right","toNode":"21e9a170de244d60","toSide":"left"},
|
||||||
|
{"id":"6ef30263dbfc831e","fromNode":"cfd2916b5847fd87","fromSide":"top","toNode":"51b34003d02babfc","toSide":"bottom"},
|
||||||
|
{"id":"0f74530a3a3ed84d","fromNode":"374cb381ea448aa0","fromSide":"right","toNode":"cfd2916b5847fd87","toSide":"left"},
|
||||||
|
{"id":"4bc60b99bf9db9e0","fromNode":"21e9a170de244d60","fromSide":"right","toNode":"0921648553d53818","toSide":"left"},
|
||||||
|
{"id":"d7656439c4fe066a","fromNode":"8fce51b4dd94dcec","fromSide":"right","toNode":"0921648553d53818","toSide":"left"},
|
||||||
|
{"id":"ef9e50c93a92c176","fromNode":"21e9a170de244d60","fromSide":"bottom","toNode":"e91a1fe3b7eb8aae","toSide":"top"}
|
||||||
|
]
|
||||||
|
}
|
||||||
425
doc/Banco de dados/Modelagem de Banco de Dados.md
Normal file
425
doc/Banco de dados/Modelagem de Banco de Dados.md
Normal file
@@ -0,0 +1,425 @@
|
|||||||
|
# Modelagem de Banco de Dados para BarApp, GarçomApp e Gestão do Bar
|
||||||
|
|
||||||
|
Este documento apresenta a modelagem de banco de dados proposta para suportar as funcionalidades dos aplicativos BarApp (cliente), GarçomApp (interno) e o novo Aplicativo de Gestão do Bar, incluindo as entidades, seus atributos e os relacionamentos entre elas.
|
||||||
|
|
||||||
|
## 1. Visão Geral do Modelo
|
||||||
|
|
||||||
|
O modelo de dados é projetado para ser relacional, utilizando chaves primárias (PK) e chaves estrangeiras (FK) para estabelecer os relacionamentos. Os tipos de dados são genéricos e devem ser adaptados ao SGBD (Sistema Gerenciador de Banco de Dados) escolhido (e.g., PostgreSQL, MySQL, SQL Server).
|
||||||
|
|
||||||
|
## 2. Tabelas e Atributos
|
||||||
|
|
||||||
|
### 2.1. `Usuarios` (Clientes do BarApp)
|
||||||
|
|
||||||
|
Armazena as informações dos usuários que utilizam o aplicativo cliente.
|
||||||
|
|
||||||
|
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||||
|
|---|---|---|
|
||||||
|
|`id_usuario`|UUID|PK (Chave Primária)|
|
||||||
|
|`nome_completo`|VARCHAR(255)|NOT NULL|
|
||||||
|
|`email`|VARCHAR(255)|NOT NULL, UNIQUE|
|
||||||
|
|`senha_hash`|VARCHAR(255)|NOT NULL (Armazenar hash da senha)|
|
||||||
|
|`id_google`|VARCHAR(255)|NULLABLE, UNIQUE (Para login social)|
|
||||||
|
|`data_cadastro`|TIMESTAMP|NOT NULL, DEFAULT CURRENT_TIMESTAMP|
|
||||||
|
|`ultimo_login`|TIMESTAMP|NULLABLE|
|
||||||
|
|`limite_tickets_produto`|INTEGER|DEFAULT 10 (Regra de negócio: limite de tickets por produto)|
|
||||||
|
|
||||||
|
### 2.2. `Garcons` (Usuários do GarçomApp)
|
||||||
|
|
||||||
|
Armazena as informações dos funcionários do bar que utilizam o aplicativo interno.
|
||||||
|
|
||||||
|
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||||
|
|---|---|---|
|
||||||
|
|`id_garcom`|UUID|PK|
|
||||||
|
|`nome_completo`|VARCHAR(255)|NOT NULL|
|
||||||
|
|`usuario`|VARCHAR(50)|NOT NULL, UNIQUE (Nome de usuário para login)|
|
||||||
|
|`senha_hash`|VARCHAR(255)|NOT NULL (Armazenar hash da senha)|
|
||||||
|
|`data_cadastro`|TIMESTAMP|NOT NULL, DEFAULT CURRENT_TIMESTAMP|
|
||||||
|
|`ativo`|BOOLEAN|NOT NULL, DEFAULT TRUE|
|
||||||
|
|
||||||
|
### 2.3. `Produtos`
|
||||||
|
![[Product]]
|
||||||
|
|
||||||
|
Armazena os itens do cardápio do bar.
|
||||||
|
|
||||||
|
| Atributo | Tipo de Dado | Restrições/Observações |
|
||||||
|
| ---------------- | -------------- | --------------------------------------------------------- |
|
||||||
|
| `id_produto` | UUID | PK |
|
||||||
|
| `nome` | VARCHAR(255) | NOT NULL |
|
||||||
|
| `descricao` | TEXT | NULLABLE |
|
||||||
|
| `preco` | DECIMAL(10, 2) | NOT NULL |
|
||||||
|
| `custo_unitario` | DECIMAL(10, 2) | NULLABLE (Para cálculo de lucratividade) |
|
||||||
|
| `estoque_atual` | INTEGER | NOT NULL, DEFAULT 0 |
|
||||||
|
| `estoque_minimo` | INTEGER | DEFAULT 0 (Para alertas de estoque baixo) |
|
||||||
|
| `url_imagem` | VARCHAR(255) | NULLABLE |
|
||||||
|
| `disponivel` | BOOLEAN | NOT NULL, DEFAULT TRUE (Indica se está no cardápio ativo) |
|
||||||
|
| `id_categoria` | UUID | FK para `CategoriasProduto` |
|
||||||
|
|
||||||
|
### 2.4. `CategoriasProduto`
|
||||||
|
|
||||||
|
Armazena as categorias dos produtos do cardápio.
|
||||||
|
|
||||||
|
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||||
|
|---|---|---|
|
||||||
|
|`id_categoria`|UUID|PK|
|
||||||
|
|`nome_categoria`|VARCHAR(100)|NOT NULL, UNIQUE|
|
||||||
|
|
||||||
|
### 2.5. `Tickets`
|
||||||
|
|
||||||
|
Armazena os tickets comprados pelos clientes.
|
||||||
|
|
||||||
|
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||||
|
|---|---|---|
|
||||||
|
|`id_ticket`|UUID|PK|
|
||||||
|
|`id_usuario`|UUID|FK para `Usuarios` (Usuário que comprou o ticket)|
|
||||||
|
|`id_produto`|UUID|FK para `Produtos`|
|
||||||
|
|`data_compra`|TIMESTAMP|NOT NULL, DEFAULT CURRENT_TIMESTAMP|
|
||||||
|
|`data_validade`|TIMESTAMP|NULLABLE (Prazo de validade do ticket)|
|
||||||
|
|`status`|ENUM|NOT NULL ('comprado', 'utilizado', 'transferido')|
|
||||||
|
|`data_uso`|TIMESTAMP|NULLABLE (Data e hora em que o ticket foi utilizado)|
|
||||||
|
|`id_comanda_origem`|UUID|NULLABLE, FK para `Comandas` (Se o ticket foi gerado de uma comanda paga)|
|
||||||
|
|
||||||
|
### 2.6. `HistoricoTickets`
|
||||||
|
|
||||||
|
Registra o histórico de eventos de cada ticket (compra, uso, transferência).
|
||||||
|
|
||||||
|
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||||
|
|---|---|---|
|
||||||
|
|`id_historico`|UUID|PK|
|
||||||
|
|`id_ticket`|UUID|FK para `Tickets`|
|
||||||
|
|`tipo_evento`|ENUM|NOT NULL ('compra', 'uso', 'transferencia_enviada', 'transferencia_recebida')|
|
||||||
|
|`data_evento`|TIMESTAMP|NOT NULL, DEFAULT CURRENT_TIMESTAMP|
|
||||||
|
|`id_usuario_origem`|UUID|NULLABLE, FK para `Usuarios` (Usuário que enviou/usou)|
|
||||||
|
|`id_usuario_destino`|UUID|NULLABLE, FK para `Usuarios` (Usuário que recebeu)|
|
||||||
|
|`observacoes`|TEXT|NULLABLE|
|
||||||
|
|
||||||
|
### 2.7. `CestasCompras`
|
||||||
|
|
||||||
|
Representa a cesta de compras temporária de um usuário.
|
||||||
|
|
||||||
|
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||||
|
|---|---|---|
|
||||||
|
|`id_cesta`|UUID|PK|
|
||||||
|
|`id_usuario`|UUID|FK para `Usuarios`|
|
||||||
|
|`data_criacao`|TIMESTAMP|NOT NULL, DEFAULT CURRENT_TIMESTAMP|
|
||||||
|
|`status`|ENUM|NOT NULL ('ativa', 'finalizada', 'cancelada')|
|
||||||
|
|
||||||
|
### 2.8. `ItensCesta`
|
||||||
|
|
||||||
|
Armazena os produtos dentro de uma cesta de compras.
|
||||||
|
|
||||||
|
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||||
|
|---|---|---|
|
||||||
|
|`id_item_cesta`|UUID|PK|
|
||||||
|
|`id_cesta`|UUID|FK para `CestasCompras`|
|
||||||
|
|`id_produto`|UUID|FK para `Produtos`|
|
||||||
|
|`quantidade`|INTEGER|NOT NULL, > 0|
|
||||||
|
|`preco_unitario`|DECIMAL(10, 2)|NOT NULL|
|
||||||
|
|
||||||
|
### 2.9. `MetodosPagamento`
|
||||||
|
|
||||||
|
Tabela de lookup para os métodos de pagamento aceitos.
|
||||||
|
|
||||||
|
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||||
|
|---|---|---|
|
||||||
|
|`id_metodo`|INTEGER|PK|
|
||||||
|
|`nome_metodo`|VARCHAR(50)|NOT NULL, UNIQUE ('Pix', 'Credito', 'Debito')|
|
||||||
|
|
||||||
|
### 2.10. `CartoesCadastrados`
|
||||||
|
|
||||||
|
Armazena os tokens de cartões de crédito/débito para pagamentos futuros. **Importante: Nunca armazenar dados sensíveis do cartão diretamente.**
|
||||||
|
|
||||||
|
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||||
|
|---|---|---|
|
||||||
|
|`id_cartao`|UUID|PK|
|
||||||
|
|`id_usuario`|UUID|FK para `Usuarios`|
|
||||||
|
|`ultimos_digitos`|VARCHAR(4)|NULLABLE (Para exibição ao usuário)|
|
||||||
|
|`bandeira`|VARCHAR(50)|NULLABLE|
|
||||||
|
|`token_pagamento`|VARCHAR(255)|NOT NULL (Token gerado pelo gateway de pagamento)|
|
||||||
|
|`data_cadastro`|TIMESTAMP|NOT NULL, DEFAULT CURRENT_TIMESTAMP|
|
||||||
|
|`ativo`|BOOLEAN|NOT NULL, DEFAULT TRUE|
|
||||||
|
|
||||||
|
### 2.11. `Eventos`
|
||||||
|
|
||||||
|
Armazena as informações dos eventos do bar.
|
||||||
|
|
||||||
|
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||||
|
|---|---|---|
|
||||||
|
|`id_evento`|UUID|PK|
|
||||||
|
|`nome_evento`|VARCHAR(255)|NOT NULL|
|
||||||
|
|`data_evento`|TIMESTAMP|NOT NULL|
|
||||||
|
|`descricao`|TEXT|NULLABLE|
|
||||||
|
|`preco_ingresso`|DECIMAL(10, 2)|NOT NULL|
|
||||||
|
|`url_imagem`|VARCHAR(255)|NULLABLE|
|
||||||
|
|`ativo`|BOOLEAN|NOT NULL, DEFAULT TRUE|
|
||||||
|
|
||||||
|
### 2.12. `Ingressos`
|
||||||
|
|
||||||
|
Armazena os ingressos comprados pelos clientes para eventos.
|
||||||
|
|
||||||
|
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||||
|
|---|---|---|
|
||||||
|
|`id_ingresso`|UUID|PK|
|
||||||
|
|`id_usuario`|UUID|FK para `Usuarios`|
|
||||||
|
|`id_evento`|UUID|FK para `Eventos`|
|
||||||
|
|`nome_ingresso`|VARCHAR(255)|NULLABLE (Ex: "Ingresso Pista", "Ingresso VIP")|
|
||||||
|
|`data_compra`|TIMESTAMP|NOT NULL, DEFAULT CURRENT_TIMESTAMP|
|
||||||
|
|`data_uso`|TIMESTAMP|NULLABLE (Data e hora em que o ingresso foi validado)|
|
||||||
|
|`status`|ENUM|NOT NULL ('comprado', 'utilizado')|
|
||||||
|
|
||||||
|
### 2.13. `FilaKaraoke`
|
||||||
|
|
||||||
|
Gerencia a fila de pessoas para o karaokê.
|
||||||
|
|
||||||
|
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||||
|
|---|---|---|
|
||||||
|
|`id_fila_karaoke`|UUID|PK|
|
||||||
|
|`nome_cantor`|VARCHAR(255)|NOT NULL|
|
||||||
|
|`nome_musica`|VARCHAR(255)|NULLABLE|
|
||||||
|
|`posicao`|INTEGER|NOT NULL, UNIQUE (Ordem na fila)|
|
||||||
|
|`data_entrada`|TIMESTAMP|NOT NULL, DEFAULT CURRENT_TIMESTAMP|
|
||||||
|
|`status`|ENUM|NOT NULL ('na_fila', 'cantando', 'cantou')|
|
||||||
|
|
||||||
|
### 2.14. `Comandas`
|
||||||
|
|
||||||
|
Armazena as comandas de consumo dos clientes.
|
||||||
|
|
||||||
|
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||||
|
|---|---|---|
|
||||||
|
|`id_comanda`|UUID|PK|
|
||||||
|
|`id_garcom`|UUID|FK para `Garcons` (Garçom que abriu a comanda)|
|
||||||
|
|`id_usuario_cliente`|UUID|NULLABLE, FK para `Usuarios` (Se o cliente for identificado no app)|
|
||||||
|
|`numero_mesa`|VARCHAR(50)|NULLABLE|
|
||||||
|
|`nome_cliente`|VARCHAR(255)|NULLABLE (Nome do cliente, se não for usuário do app)|
|
||||||
|
|`data_abertura`|TIMESTAMP|NOT NULL, DEFAULT CURRENT_TIMESTAMP|
|
||||||
|
|`data_fechamento`|TIMESTAMP|NULLABLE|
|
||||||
|
|`status`|ENUM|NOT NULL ('aberta', 'aguardando_pagamento', 'paga', 'fechada')|
|
||||||
|
|`valor_total`|DECIMAL(10, 2)|NOT NULL, DEFAULT 0.00|
|
||||||
|
|
||||||
|
### 2.15. `ItensComanda`
|
||||||
|
|
||||||
|
Armazena os produtos adicionados a cada comanda.
|
||||||
|
|
||||||
|
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||||
|
|---|---|---|
|
||||||
|
|`id_item_comanda`|UUID|PK|
|
||||||
|
|`id_comanda`|UUID|FK para `Comandas`|
|
||||||
|
|`id_produto`|UUID|FK para `Produtos`|
|
||||||
|
|`quantidade`|INTEGER|NOT NULL, > 0|
|
||||||
|
|`preco_unitario`|DECIMAL(10, 2)|NOT NULL|
|
||||||
|
|`status_cozinha`|ENUM|NOT NULL ('na_fila', 'preparando', 'pronto', 'entregue')|
|
||||||
|
|`observacoes`|TEXT|NULLABLE|
|
||||||
|
|
||||||
|
### 2.16. `PagamentosComanda`
|
||||||
|
|
||||||
|
Registra os pagamentos efetuados para as comandas (total ou parcial).
|
||||||
|
|
||||||
|
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||||
|
|---|---|---|
|
||||||
|
|`id_pagamento_comanda`|UUID|PK|
|
||||||
|
|`id_comanda`|UUID|FK para `Comandas`|
|
||||||
|
|`id_usuario`|UUID|NULLABLE, FK para `Usuarios` (Se pago via BarApp)|
|
||||||
|
|`valor_pago`|DECIMAL(10, 2)|NOT NULL|
|
||||||
|
|`id_metodo_pagamento`|INTEGER|FK para `MetodosPagamento`|
|
||||||
|
|`data_pagamento`|TIMESTAMP|NOT NULL, DEFAULT CURRENT_TIMESTAMP|
|
||||||
|
|`tipo_pagamento`|ENUM|NOT NULL ('total', 'parcial')|
|
||||||
|
|`id_transacao_gateway`|VARCHAR(255)|NULLABLE (ID da transação no gateway de pagamento)|
|
||||||
|
|
||||||
|
### 2.17. `Notificacoes`
|
||||||
|
|
||||||
|
Armazena as notificações para usuários (clientes ou garçons).
|
||||||
|
|
||||||
|
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||||
|
|---|---|---|
|
||||||
|
|`id_notificacao`|UUID|PK|
|
||||||
|
|`id_usuario_destino`|UUID|NOT NULL (FK para `Usuarios` ou `Garcons` ou `Funcionarios`)|
|
||||||
|
|`tipo_usuario_destino`|ENUM|NOT NULL ('cliente', 'garcom', 'gestao')|
|
||||||
|
|`tipo_notificacao`|ENUM|NOT NULL ('pagamento_comanda', 'pedido_pronto', 'transferencia_ticket_recebida', 'estoque_baixo', 'novo_cadastro_cliente', 'novo_evento_criado')|
|
||||||
|
|`mensagem`|TEXT|NOT NULL|
|
||||||
|
|`data_envio`|TIMESTAMP|NOT NULL, DEFAULT CURRENT_TIMESTAMP|
|
||||||
|
|`lida`|BOOLEAN|NOT NULL, DEFAULT FALSE|
|
||||||
|
|`referencia_id`|UUID|NULLABLE (ID do ticket, comanda, etc. relacionado)|
|
||||||
|
|
||||||
|
### 2.18. `Funcionarios` (Usuários do Aplicativo de Gestão)
|
||||||
|
|
||||||
|
Armazena informações de todos os funcionários, incluindo aqueles que usam o GarçomApp e os administrativos.
|
||||||
|
|
||||||
|
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||||
|
|---|---|---|
|
||||||
|
|`id_funcionario`|UUID|PK|
|
||||||
|
|`nome_completo`|VARCHAR(255)|NOT NULL|
|
||||||
|
|`cpf`|VARCHAR(14)|NOT NULL, UNIQUE|
|
||||||
|
|`data_contratacao`|DATE|NOT NULL|
|
||||||
|
|`salario_base`|DECIMAL(10, 2)|NOT NULL|
|
||||||
|
|`cargo`|VARCHAR(100)|NOT NULL|
|
||||||
|
|`dados_bancarios`|TEXT|NULLABLE (Informações para pagamento, criptografadas)|
|
||||||
|
|`usuario_sistema`|VARCHAR(50)|NULLABLE, UNIQUE (Para login no app de gestão)|
|
||||||
|
|`senha_hash_sistema`|VARCHAR(255)|NULLABLE (Hash da senha para login no app de gestão)|
|
||||||
|
|`ativo`|BOOLEAN|NOT NULL, DEFAULT TRUE|
|
||||||
|
|`id_garcom_associado`|UUID|NULLABLE, FK para `Garcons` (Se for também um garçom)|
|
||||||
|
|
||||||
|
### 2.19. `PagamentosSalario`
|
||||||
|
|
||||||
|
Registra os pagamentos de salário efetuados aos funcionários.
|
||||||
|
|
||||||
|
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||||
|
|---|---|---|
|
||||||
|
|`id_pagamento`|UUID|PK|
|
||||||
|
|`id_funcionario`|UUID|FK para `Funcionarios`|
|
||||||
|
|`valor_bruto`|DECIMAL(10, 2)|NOT NULL|
|
||||||
|
|`descontos`|DECIMAL(10, 2)|NOT NULL, DEFAULT 0.00|
|
||||||
|
|`valor_liquido`|DECIMAL(10, 2)|NOT NULL|
|
||||||
|
|`data_pagamento`|DATE|NOT NULL|
|
||||||
|
|`periodo_referencia`|VARCHAR(20)|NOT NULL (Ex: "2025-05")|
|
||||||
|
|`holerite_url`|VARCHAR(255)|NULLABLE (URL para PDF do holerite, se gerado)|
|
||||||
|
|
||||||
|
### 2.20. `Fornecedores`
|
||||||
|
|
||||||
|
Armazena informações dos fornecedores de mercadorias.
|
||||||
|
|
||||||
|
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||||
|
|---|---|---|
|
||||||
|
|`id_fornecedor`|UUID|PK|
|
||||||
|
|`nome_fantasia`|VARCHAR(255)|NOT NULL|
|
||||||
|
|`razao_social`|VARCHAR(255)|NULLABLE|
|
||||||
|
|`cnpj`|VARCHAR(18)|NULLABLE, UNIQUE|
|
||||||
|
|`contato`|VARCHAR(255)|NULLABLE (Telefone, E-mail)|
|
||||||
|
|`endereco`|TEXT|NULLABLE|
|
||||||
|
|
||||||
|
### 2.21. `EntradasMercadoria`
|
||||||
|
|
||||||
|
Registra as entradas de mercadorias no estoque.
|
||||||
|
|
||||||
|
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||||
|
|---|---|---|
|
||||||
|
|`id_entrada`|UUID|PK|
|
||||||
|
|`id_fornecedor`|UUID|FK para `Fornecedores`|
|
||||||
|
|`data_entrada`|TIMESTAMP|NOT NULL, DEFAULT CURRENT_TIMESTAMP|
|
||||||
|
|`numero_nota_fiscal`|VARCHAR(100)|NULLABLE|
|
||||||
|
|`valor_total`|DECIMAL(10, 2)|NOT NULL|
|
||||||
|
|`observacoes`|TEXT|NULLABLE|
|
||||||
|
|`id_funcionario_responsavel`|UUID|FK para `Funcionarios` (Quem registrou a entrada)|
|
||||||
|
|
||||||
|
### 2.22. `ItensEntradaMercadoria`
|
||||||
|
|
||||||
|
Detalha os itens de cada entrada de mercadoria.
|
||||||
|
|
||||||
|
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||||
|
|---|---|---|
|
||||||
|
|`id_item_entrada`|UUID|PK|
|
||||||
|
|`id_entrada`|UUID|FK para `EntradasMercadoria`|
|
||||||
|
|`id_produto`|UUID|FK para `Produtos`|
|
||||||
|
|`quantidade`|INTEGER|NOT NULL, > 0|
|
||||||
|
|`custo_unitario_compra`|DECIMAL(10, 2)|NOT NULL (Custo na data da compra)|
|
||||||
|
|
||||||
|
### 2.23. `Permissoes`
|
||||||
|
|
||||||
|
Define os tipos de permissão para os usuários do aplicativo de gestão.
|
||||||
|
|
||||||
|
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||||
|
|---|---|---|
|
||||||
|
|`id_permissao`|UUID|PK|
|
||||||
|
|`nome_permissao`|VARCHAR(100)|NOT NULL, UNIQUE (Ex: 'gerenciar_produtos', 'ver_dashboard_vendas')|
|
||||||
|
|`descricao`|TEXT|NULLABLE|
|
||||||
|
|
||||||
|
### 2.24. `FuncionarioPermissoes`
|
||||||
|
|
||||||
|
Tabela de ligação para atribuir permissões a funcionários.
|
||||||
|
|
||||||
|
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||||
|
|---|---|---|
|
||||||
|
|`id_funcionario_permissao`|UUID|PK|
|
||||||
|
|`id_funcionario`|UUID|FK para `Funcionarios`|
|
||||||
|
|`id_permissao`|UUID|FK para `Permissoes`|
|
||||||
|
|
||||||
|
## 3. Relacionamentos
|
||||||
|
|
||||||
|
Abaixo estão os principais relacionamentos entre as tabelas, incluindo as novas adições:
|
||||||
|
|
||||||
|
- **`Usuarios`**
|
||||||
|
|
||||||
|
- `Usuarios.id_usuario` 1:N `Tickets.id_usuario`
|
||||||
|
|
||||||
|
- `Usuarios.id_usuario` 1:N `CartoesCadastrados.id_usuario`
|
||||||
|
|
||||||
|
- `Usuarios.id_usuario` 1:N `Ingressos.id_usuario`
|
||||||
|
|
||||||
|
- `Usuarios.id_usuario` 1:N `HistoricoTickets.id_usuario_origem`
|
||||||
|
|
||||||
|
- `Usuarios.id_usuario` 1:N `HistoricoTickets.id_usuario_destino`
|
||||||
|
|
||||||
|
- `Usuarios.id_usuario` 1:N `CestasCompras.id_usuario`
|
||||||
|
|
||||||
|
- `Usuarios.id_usuario` 1:N `Comandas.id_usuario_cliente` (Opcional)
|
||||||
|
|
||||||
|
- `Usuarios.id_usuario` 1:N `PagamentosComanda.id_usuario` (Opcional)
|
||||||
|
|
||||||
|
- `Usuarios.id_usuario` 1:N `Notificacoes.id_usuario_destino` (quando `tipo_usuario_destino` é 'cliente')
|
||||||
|
|
||||||
|
- **`Garcons`**
|
||||||
|
|
||||||
|
- `Garcons.id_garcom` 1:N `Comandas.id_garcom`
|
||||||
|
|
||||||
|
- `Garcons.id_garcom` 1:N `Notificacoes.id_usuario_destino` (quando `tipo_usuario_destino` é 'garcom')
|
||||||
|
|
||||||
|
- `Garcons.id_garcom` 1:1 `Funcionarios.id_garcom_associado` (Opcional, se um garçom também for um funcionário de gestão)
|
||||||
|
|
||||||
|
- **`Produtos`**
|
||||||
|
|
||||||
|
- `Produtos.id_produto` 1:N `Tickets.id_produto`
|
||||||
|
|
||||||
|
- `Produtos.id_produto` 1:N `ItensCesta.id_produto`
|
||||||
|
|
||||||
|
- `Produtos.id_produto` 1:N `ItensComanda.id_produto`
|
||||||
|
|
||||||
|
- `Produtos.id_produto` 1:N `ItensEntradaMercadoria.id_produto`
|
||||||
|
|
||||||
|
- `Produtos.id_categoria` N:1 `CategoriasProduto.id_categoria`
|
||||||
|
|
||||||
|
- **`Tickets`**
|
||||||
|
|
||||||
|
- `Tickets.id_ticket` 1:N `HistoricoTickets.id_ticket`
|
||||||
|
|
||||||
|
- **`CestasCompras`**
|
||||||
|
|
||||||
|
- `CestasCompras.id_cesta` 1:N `ItensCesta.id_cesta`
|
||||||
|
|
||||||
|
- **`Eventos`**
|
||||||
|
|
||||||
|
- `Eventos.id_evento` 1:N `Ingressos.id_evento`
|
||||||
|
|
||||||
|
- **`Comandas`**
|
||||||
|
|
||||||
|
- `Comandas.id_comanda` 1:N `ItensComanda.id_comanda`
|
||||||
|
|
||||||
|
- `Comandas.id_comanda` 1:N `PagamentosComanda.id_comanda`
|
||||||
|
|
||||||
|
- `Comandas.id_comanda` 1:N `Tickets.id_comanda_origem` (Opcional)
|
||||||
|
|
||||||
|
- **`MetodosPagamento`**
|
||||||
|
|
||||||
|
- `MetodosPagamento.id_metodo` 1:N `PagamentosComanda.id_metodo_pagamento`
|
||||||
|
|
||||||
|
- **`Funcionarios`**
|
||||||
|
|
||||||
|
- `Funcionarios.id_funcionario` 1:N `PagamentosSalario.id_funcionario`
|
||||||
|
|
||||||
|
- `Funcionarios.id_funcionario` 1:N `EntradasMercadoria.id_funcionario_responsavel`
|
||||||
|
|
||||||
|
- `Funcionarios.id_funcionario` 1:N `FuncionarioPermissoes.id_funcionario`
|
||||||
|
|
||||||
|
- `Funcionarios.id_funcionario` 1:N `Notificacoes.id_usuario_destino` (quando `tipo_usuario_destino` é 'gestao')
|
||||||
|
|
||||||
|
- **`Fornecedores`**
|
||||||
|
|
||||||
|
- `Fornecedores.id_fornecedor` 1:N `EntradasMercadoria.id_fornecedor`
|
||||||
|
|
||||||
|
- **`EntradasMercadoria`**
|
||||||
|
|
||||||
|
- `EntradasMercadoria.id_entrada` 1:N `ItensEntradaMercadoria.id_entrada`
|
||||||
|
|
||||||
|
- **`Permissoes`**
|
||||||
|
|
||||||
|
- `Permissoes.id_permissao` 1:N `FuncionarioPermissoes.id_permissao`
|
||||||
|
|
||||||
|
|
||||||
|
Esta modelagem expandida fornece uma base robusta para o desenvolvimento de todos os três aplicativos, garantindo a integridade, a organização e a escalabilidade dos dados para as operações do bar.
|
||||||
16
doc/Banco de dados/Tabelas/Category.md
Normal file
16
doc/Banco de dados/Tabelas/Category.md
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
| Atributo | Tipo | Modificadores |
|
||||||
|
| -------- | --------- | ---------------- |
|
||||||
|
| id | AutoField | primary_key=True |
|
||||||
|
| name | CharField | max_length=255 |
|
||||||
|
|
||||||
|
|
||||||
|
**Modelo: `Category`**
|
||||||
|
|
||||||
|
Este modelo representa uma categoria de produto. Cada categoria possui os seguintes atributos:
|
||||||
|
|
||||||
|
* `id`: Um identificador único para cada categoria (chave primária). Este campo é preenchido automaticamente.
|
||||||
|
* `name`: O nome da categoria (texto curto, máximo de 255 caracteres).
|
||||||
|
|
||||||
|
**Relacionamento:**
|
||||||
|
|
||||||
|
Os modelos `Product` e `Category` estão relacionados por meio de uma chave estrangeira. Cada produto pertence a uma categoria, e uma categoria pode ter vários produtos associados a ela.
|
||||||
19
doc/Banco de dados/Tabelas/Client.md
Normal file
19
doc/Banco de dados/Tabelas/Client.md
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
|
||||||
|
| Atributo | Tipo | Modificadores |
|
||||||
|
| ---------- | ------------- | ------------------------------------- |
|
||||||
|
| id | AutoField | primary_key=True |
|
||||||
|
| name | CharField | max_length=255 |
|
||||||
|
| debt | DecimalField | max_digits=10, decimal_places=2 |
|
||||||
|
| created_at | DateTimeField | auto_now_add=True |
|
||||||
|
| active | BooleanField | default=True |
|
||||||
|
| contact | CharField | max_length=255, null=True, blank=True |
|
||||||
|
|
||||||
|
|
||||||
|
A classe [[Client]] define um modelo de dados para representar um cliente no sistema. Ela contém os seguintes atributos:
|
||||||
|
|
||||||
|
* **id**: Um campo AutoField que serve como chave primária, identificando unicamente cada cliente. O Django gerencia esse campo automaticamente.
|
||||||
|
* **name**: Um campo CharField que armazena o nome do cliente, com um limite máximo de 255 caracteres.
|
||||||
|
* **debt**: Um campo DecimalField que representa o débito do cliente. Ele permite armazenar números decimais com precisão de até 10 dígitos, com 2 casas decimais.
|
||||||
|
* **created\_at**: Um campo DateTimeField que registra a data e hora de criação do cliente. O valor é definido automaticamente quando o cliente é criado (auto\_now\_add=True).
|
||||||
|
* **active**: Um campo BooleanField que indica se o cliente está ativo ou não. Por padrão, o valor é True.
|
||||||
|
* **contact**: Um campo CharField para armazenar informações de contato do cliente, como telefone ou e-mail. Pode ser nulo (null=True) e em branco (blank=True) no banco de dados.
|
||||||
27
doc/Banco de dados/Tabelas/Comanda.md
Normal file
27
doc/Banco de dados/Tabelas/Comanda.md
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
|
||||||
|
| Atributo | Tipo | Modificadores |
|
||||||
|
| -------- | ------------- | ------------------------------------------------------------- |
|
||||||
|
| id | AutoField | primary_key=True |
|
||||||
|
| mesa | ForeignKey | on_delete=models.CASCADE ([[Mesas]]) |
|
||||||
|
| user | ForeignKey | on_delete=models.CASCADE ([[Projeto_RRBEC/Banco de dados/Tabelas/Users]]), null=False, blank=True |
|
||||||
|
| type_pay | ForeignKey | on_delete=models.SET_NULL (TypePay), null=True |
|
||||||
|
| dt_open | DateTimeField | auto_now_add=True |
|
||||||
|
| dt_close | DateTimeField | null=True, blank=True |
|
||||||
|
| client | ForeignKey | on_delete=models.SET_NULL ([[Client]]), null=True, blank=True |
|
||||||
|
| name | CharField | max_length=255 |
|
||||||
|
| status | CharField | max_length=255, default="OPEN" |
|
||||||
|
|
||||||
|
|
||||||
|
A classe [[Comanda]] representa um pedido ou conta em um restaurante. Ela contém informações sobre a mesa em que o pedido foi feito, o usuário (garçom) responsável, a forma de pagamento, horários de abertura e fechamento, o cliente associado (se houver), um nome para a comanda e seu status.
|
||||||
|
|
||||||
|
**Atributos:**
|
||||||
|
|
||||||
|
* `id`: Identificador único da comanda (chave primária).
|
||||||
|
* `mesa`: Mesa à qual a comanda está associada (chave estrangeira para a classe [[Mesas]]). Se a mesa for excluída, a comanda também será excluída (on\_delete=models.CASCADE).
|
||||||
|
* `user`: Usuário (garçom) que abriu a comanda (chave estrangeira para a classe [[Projeto_RRBEC/Banco de dados/Tabelas/Users]]). Se o usuário for excluído, a comanda também será excluída (on\_delete=models.CASCADE). Pode ser nulo e em branco.
|
||||||
|
* `type_pay`: Forma de pagamento utilizada na comanda (chave estrangeira para a classe TypePay ). Se a forma de pagamento for excluída, o campo `type_pay` da comanda será definido como `NULL` (on_delete=models.SET_NULL).
|
||||||
|
* `dt_open`: Data e hora em que a comanda foi aberta. O valor é definido automaticamente ao criar a comanda (auto\_now\_add=True).
|
||||||
|
* `dt_close`: Data e hora em que a comanda foi fechada. Pode ser nulo e em branco.
|
||||||
|
* `client`: Cliente associado à comanda (chave estrangeira para a classe [[Client]]). Se o cliente for excluído, o campo `client` da comanda será definido como `NULL` (on\_delete=models.SET\_NULL). Pode ser nulo e em branco.
|
||||||
|
* `name`: Nome da comanda (por exemplo, "Comanda da Mesa 5").
|
||||||
|
* `status`: Status da comanda (por exemplo, "ABERTA", "FECHADA"). O valor padrão é "OPEN".
|
||||||
14
doc/Banco de dados/Tabelas/Mesas.md
Normal file
14
doc/Banco de dados/Tabelas/Mesas.md
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
| Atributo | Tipo | Modificadores |
|
||||||
|
| -------- | ------------ | ------------------------------------- |
|
||||||
|
| id | AutoField | primary_key=True |
|
||||||
|
| name | CharField | max_length=100 |
|
||||||
|
| location | CharField | max_length=255, null=True, blank=True |
|
||||||
|
| active | BooleanField | default=False |
|
||||||
|
|
||||||
|
|
||||||
|
A classe [[Mesas]] representa uma mesa dentro do sistema. Cada mesa possui os seguintes atributos:
|
||||||
|
|
||||||
|
* `id`: Um identificador único para cada mesa, gerado automaticamente. Este campo é a chave primária da tabela.
|
||||||
|
* `name`: O nome da mesa. Este campo é do tipo texto, com um limite de 100 caracteres.
|
||||||
|
* `location`: A localização da mesa. Este campo é do tipo texto, com um limite de 255 caracteres. Pode ser nulo ou vazio.
|
||||||
|
* `active`: Um indicador booleano que indica se a mesa está ativa ou não. Por padrão, é definido como `False`.
|
||||||
40
doc/Banco de dados/Tabelas/Orders.md
Normal file
40
doc/Banco de dados/Tabelas/Orders.md
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
| Atributo | Tipo | Modificadores |
|
||||||
|
| -------------- | ------------- | --------------------------------------------------------- |
|
||||||
|
| id | AutoField | primary_key=True |
|
||||||
|
| productComanda | ForeignKey | on_delete=models.SET_NULL ([[ProductComanda]]), null=True |
|
||||||
|
| id_product | ForeignKey | on_delete=models.CASCADE ([[Product]]) |
|
||||||
|
| id_comanda | ForeignKey | on_delete=models.CASCADE ([[Comanda]]) |
|
||||||
|
| obs | TextField | blank=True, null=True |
|
||||||
|
| queue | DateTimeField | auto_now_add=True |
|
||||||
|
| preparing | DateTimeField | null=True, blank=True |
|
||||||
|
| finished | DateTimeField | null=True, blank=True |
|
||||||
|
| delivered | DateTimeField | null=True, blank=True |
|
||||||
|
| canceled | DateTimeField | null=True, blank=True |
|
||||||
|
|
||||||
|
**Modelo: `Orders`**
|
||||||
|
|
||||||
|
A classe apresentada no arquivo [[Orders]] representa um modelo para rastrear o status de um pedido ao longo do tempo.
|
||||||
|
|
||||||
|
**Atributos:**
|
||||||
|
|
||||||
|
* `id`: Um identificador único para cada atualização de status do pedido (chave primária).
|
||||||
|
* `productComanda`: Uma chave estrangeira que referencia o modelo [[ProductComanda]]. Se o `ProductComanda` for excluído, este campo será definido como `NULL`.
|
||||||
|
* `id_product`: Uma chave estrangeira que referencia o modelo [[Product]]. Se o produto for excluído, o `ProductComanda` e, portanto, este pedido serão excluídos.
|
||||||
|
* `id_comanda`: Uma chave estrangeira que referencia o modelo [[Comanda]]. Se a comanda for excluída, este pedido será excluído.
|
||||||
|
* `obs`: Campo de texto para observações sobre o pedido.
|
||||||
|
* `queue`: Data e hora em que o pedido foi colocado na fila.
|
||||||
|
* `preparing`: Data e hora em que o pedido começou a ser preparado.
|
||||||
|
* `finished`: Data e hora em que o pedido foi finalizado.
|
||||||
|
* `delivered`: Data e hora em que o pedido foi entregue.
|
||||||
|
* `canceled`: Data e hora se o pedido for cancelado. Campo pode ser nulo
|
||||||
|
|
||||||
|
**Relacionamentos:**
|
||||||
|
|
||||||
|
* `Orders` possui um relacionamento ForeignKey com [[ProductComanda]].
|
||||||
|
* `Orders` possui um relacionamento ForeignKey com [[Product]].
|
||||||
|
* `Orders` possui um relacionamento ForeignKey com [[Comanda]].
|
||||||
|
|
||||||
|
**Uso:**
|
||||||
|
|
||||||
|
Este modelo permite rastrear o progresso de um pedido desde o momento em que é colocado na fila até a entrega ou cancelamento. Ele fornece informações valiosas para análise de tempo de preparo, gargalos no processo e eficiência da equipe.
|
||||||
|
|
||||||
22
doc/Banco de dados/Tabelas/Payments.md
Normal file
22
doc/Banco de dados/Tabelas/Payments.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
| Atributo | Tipo | Modificadores |
|
||||||
|
| ----------- | ------------- | ------------------------------------------------ |
|
||||||
|
| id | AutoField | primary_key=True |
|
||||||
|
| value | DecimalField | max_digits=10, decimal_places=2 |
|
||||||
|
| type_pay | ForeignKey | on_delete=models.PROTECT ([[TypePay]]) |
|
||||||
|
| comanda | ForeignKey | on_delete=models.PROTECT ([[Comanda]]) |
|
||||||
|
| client | ForeignKey | null=True, on_delete=models.PROTECT ([[Client]]) |
|
||||||
|
| description | CharField | max_length=255 |
|
||||||
|
| datetime | DateTimeField | auto_now_add=True |
|
||||||
|
|
||||||
|
|
||||||
|
A classe `Payments` é um modelo Django que representa os pagamentos realizados no sistema.
|
||||||
|
|
||||||
|
**Atributos:**
|
||||||
|
|
||||||
|
* `id`: Campo de identificação único para cada pagamento. É um `AutoField`, o que significa que é um campo que se incrementa automaticamente, definido como chave primária (`primary_key=True`).
|
||||||
|
* `value`: Campo que armazena o valor do pagamento. É um `DecimalField` com um máximo de 10 dígitos, sendo 2 casas decimais (`max_digits=10, decimal_places=2`).
|
||||||
|
* `type_pay`: Campo que armazena o tipo de pagamento. É um `ForeignKey` que se relaciona com o modelo [[TypePay]]. Quando um tipo de pagamento é excluído, o campo `type_pay` é protegido, impedindo a exclusão do tipo de pagamento se houver pagamentos associados a ele (`on_delete=models.PROTECT (TypePay)`).
|
||||||
|
* `comanda`: Campo que armazena a comanda relacionada ao pagamento. É um `ForeignKey` que se relaciona com o modelo [[Comanda]]. Quando uma comanda é excluída, o campo `comanda` é protegido, impedindo a exclusão da comanda se houver pagamentos associados a ela (`on_delete=models.PROTECT (Comanda)`).
|
||||||
|
* `client`: Campo que armazena o cliente relacionado ao pagamento. É um `ForeignKey` que se relaciona com o modelo [[Client]]. Pode ser nulo e, quando um cliente é excluído, o campo `client` é protegido, definindo o campo como `NULL` (`null=True, on_delete=models.PROTECT (Client)`).
|
||||||
|
* `description`: Campo que armazena uma descrição do pagamento. É um `CharField` com um comprimento máximo de 255 caracteres (`max_length=255`).
|
||||||
|
* `datetime`: Campo que armazena a data e hora em que o pagamento foi realizado. O valor é definido automaticamente ao criar o pagamento (`auto_now_add=True`).
|
||||||
55
doc/Banco de dados/Tabelas/Product.md
Normal file
55
doc/Banco de dados/Tabelas/Product.md
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
|
||||||
|
| Atributo | Tipo de Dado | Restrições/Observações |
|
||||||
|
| ---------------- | -------------- | --------------------------------------------------------- |
|
||||||
|
| `id_produto` | UUID | PK |
|
||||||
|
| `nome` | VARCHAR(255) | NOT NULL |
|
||||||
|
| `descricao` | TEXT | NULLABLE |
|
||||||
|
| `preco` | DECIMAL(10, 2) | NOT NULL |
|
||||||
|
| `custo_unitario` | DECIMAL(10, 2) | NULLABLE (Para cálculo de lucratividade) |
|
||||||
|
| `estoque_atual` | INTEGER | NOT NULL, DEFAULT 0 |
|
||||||
|
| `estoque_minimo` | INTEGER | DEFAULT 0 (Para alertas de estoque baixo) |
|
||||||
|
| `url_imagem` | VARCHAR(255) | NULLABLE |
|
||||||
|
| `disponivel` | BOOLEAN | NOT NULL, DEFAULT TRUE (Indica se está no cardápio ativo) |
|
||||||
|
| `id_categoria` | UUID | FK para `CategoriasProduto` |
|
||||||
|
|
||||||
|
| Atributo | Tipo | Modificadores |
|
||||||
|
| ----------- | ------------ | --------------------------------------- |
|
||||||
|
| id | AutoField | primary_key=True |
|
||||||
|
| name | CharField | max_length=100 |
|
||||||
|
| description | TextField | null=True, blank=True |
|
||||||
|
| image | ImageField | null=True, blank=True |
|
||||||
|
| price | DecimalField | max_digits=10, decimal_places=2 |
|
||||||
|
| quantity | IntegerField | null=False, default=0 |
|
||||||
|
| category | ForeignKey | on_delete=models.CASCADE ([[Category]]) |
|
||||||
|
| cuisine | BooleanField | default=False |
|
||||||
|
| active | BooleanField | default=True |
|
||||||
|
|
||||||
|
|
||||||
|
**Modelo: `Product`**
|
||||||
|
|
||||||
|
Este modelo representa um produto no sistema. Cada produto possui os seguintes atributos:
|
||||||
|
|
||||||
|
* `id`: Um identificador único para cada produto (chave primária). Este campo é preenchido automaticamente.
|
||||||
|
* `name`: O nome do produto (texto curto, máximo de 100 caracteres).
|
||||||
|
* `description`: Uma descrição detalhada do produto (texto longo). Pode ser deixada em branco.
|
||||||
|
* `image`: Uma imagem associada ao produto. Pode ser deixada em branco.
|
||||||
|
* `price`: O preço do produto (valor decimal com um total de 10 dígitos, incluindo 2 casas decimais).
|
||||||
|
* `quantity`: A quantidade disponível em estoque (número inteiro). Por padrão, é 0.
|
||||||
|
* `category`: A categoria à qual o produto pertence. É uma chave estrangeira que se relaciona ao modelo [[Category]]. Se uma categoria for excluída, todos os produtos associados a essa categoria também serão excluídos (`on_delete=models.CASCADE`).
|
||||||
|
* `cuisine`: Um campo booleano que indica se o produto é preparado na cozinha. O valor padrão é `False`.
|
||||||
|
* `active`: Um campo booleano que indica se o produto está ativo e disponível para venda. O valor padrão é `True`.
|
||||||
|
|
||||||
|
**Modelo: `Category`**
|
||||||
|
|
||||||
|
Este modelo representa uma categoria de produto. Cada categoria possui os seguintes atributos:
|
||||||
|
|
||||||
|
* `id`: Um identificador único para cada categoria (chave primária). Este campo é preenchido automaticamente.
|
||||||
|
* `name`: O nome da categoria (texto curto, máximo de 255 caracteres).
|
||||||
|
|
||||||
|
**Relacionamento:**
|
||||||
|
|
||||||
|
Os modelos `Product` e `Category` estão relacionados por meio de uma chave estrangeira. Cada produto pertence a uma categoria, e uma categoria pode ter vários produtos associados a ela.
|
||||||
|
|
||||||
|
**Uso:**
|
||||||
|
|
||||||
|
Esses modelos são usados para definir a estrutura do banco de dados e facilitar a criação, leitura, atualização e exclusão (CRUD) de produtos e categorias no sistema. Eles são componentes essenciais para gerenciar o catálogo de produtos.
|
||||||
31
doc/Banco de dados/Tabelas/ProductComanda.md
Normal file
31
doc/Banco de dados/Tabelas/ProductComanda.md
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
|
||||||
|
| Atributo | Tipo | Modificadores |
|
||||||
|
| --------- | ------------- | -------------------------------------- |
|
||||||
|
| id | AutoField | primary_key=True |
|
||||||
|
| comanda | ForeignKey | on_delete=models.CASCADE ([[Comanda]]) |
|
||||||
|
| data_time | DateTimeField | auto_now_add=True |
|
||||||
|
| product | ForeignKey | on_delete=models.PROTECT ([[Product]]) |
|
||||||
|
| applicant | CharField | max_length=255, null=True, blank=True |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**Modelo: `ProductComanda`**
|
||||||
|
|
||||||
|
Este modelo representa um item individual dentro de um pedido (comanda). Ele atua como uma tabela de junção entre os modelos `Product` e `Comanda`, permitindo que uma comanda contenha múltiplos produtos e que um produto possa aparecer em múltiplas comandas.
|
||||||
|
|
||||||
|
**Atributos:**
|
||||||
|
|
||||||
|
* `id`: Um identificador único para cada entrada de produto em um pedido (chave primária). Este campo é preenchido automaticamente.
|
||||||
|
* `comanda`: Uma chave estrangeira que referencia o modelo [[Comanda]]. Define a qual comanda este produto está associado. Se a comanda relacionada for excluída, todos os `ProductComanda` associados a ela também serão excluídos (`on_delete=models.CASCADE`).
|
||||||
|
* `data_time`: A data e hora em que o produto foi adicionado à comanda. Este campo é preenchido automaticamente no momento da criação (`auto_now_add=True`).
|
||||||
|
* `product`: Uma chave estrangeira que referencia o modelo [[Product]]. Define qual produto está sendo incluído na comanda. Se o produto relacionado for excluído, o `ProductComanda` permanecerá, mas o produto será protegido contra exclusão (`on_delete=models.PROTECT`).
|
||||||
|
* `applicant`: Um campo de texto (CharField) que armazena o nome de quem solicitou o produto. Pode ser nulo ou em branco.
|
||||||
|
|
||||||
|
**Relacionamentos:**
|
||||||
|
|
||||||
|
* `ProductComanda` possui um relacionamento ForeignKey com [[Comanda]] (uma comanda pode ter vários produtos).
|
||||||
|
* `ProductComanda` possui um relacionamento ForeignKey com [[Product]] (um produto pode estar em vários pedidos).
|
||||||
|
|
||||||
|
**Uso:**
|
||||||
|
|
||||||
|
Este modelo é crucial para rastrear quais produtos foram incluídos em cada pedido, bem como quando cada produto foi adicionado. Ele permite gerar relatórios de vendas por produto, analisar quais produtos são mais populares em determinados horários e gerenciar o estoque de forma eficiente. Através do campo `applicant` é possível saber quem solicitou o produto dentro da comanda.
|
||||||
10
doc/Banco de dados/Tabelas/TypePay.md
Normal file
10
doc/Banco de dados/Tabelas/TypePay.md
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
| Atributo | Tipo | Modificadores |
|
||||||
|
| -------- | --------- | ---------------- |
|
||||||
|
| id | AutoField | primary_key=True |
|
||||||
|
| name | CharField | max_length=255 |
|
||||||
|
|
||||||
|
|
||||||
|
A classe [[TypePay]] (TipoPagamento) é um modelo Django que representa as formas de pagamento aceitas no sistema.
|
||||||
|
|
||||||
|
* **`id`**: Campo de identificação único para cada forma de pagamento. É um `AutoField`, o que significa que é um campo que se incrementa automaticamente, definido como chave primária (`primary_key=True`).
|
||||||
|
* **`name`**: Campo que armazena o nome da forma de pagamento (ex: "Cartão de Crédito", "Boleto Bancário", "Pix"). É um `CharField` com um comprimento máximo de 255 caracteres (`max_length=255`).
|
||||||
9
doc/Banco de dados/Tabelas/Users.md
Normal file
9
doc/Banco de dados/Tabelas/Users.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
|
||||||
|
| Key | Type | Name | Relacionamento |
|
||||||
|
| ------- | ------ | ----------- | -------------- |
|
||||||
|
| Primary | Int | Id | |
|
||||||
|
| | String | Name | |
|
||||||
|
| | String | Description | |
|
||||||
|
| | String | Category | |
|
||||||
|
| | Bool | Active | |
|
||||||
|
| | Bool | Cuisine | |
|
||||||
35
doc/Infraestrutura/Infra.canvas
Normal file
35
doc/Infraestrutura/Infra.canvas
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"nodes":[
|
||||||
|
{"id":"f070a6042894264f","type":"group","x":-420,"y":440,"width":1560,"height":600,"label":"Rede Local"},
|
||||||
|
{"id":"2e478a5617ee1373","type":"group","x":-200,"y":-400,"width":740,"height":547,"label":"VPS"},
|
||||||
|
{"id":"b361d7f4e687df1a","type":"group","x":330,"y":507,"width":670,"height":493,"label":"SERVER"},
|
||||||
|
{"id":"59d24657234b7fe1","type":"group","x":-280,"y":-1080,"width":400,"height":400,"label":"Gatway de Pagamento"},
|
||||||
|
{"id":"180e2c68c69d47d0","type":"group","x":340,"y":-1080,"width":400,"height":400,"label":"Google Drive"},
|
||||||
|
{"id":"6e48d897c550bf39","type":"group","x":-300,"y":600,"width":305,"height":360,"label":"Dispositivo"},
|
||||||
|
{"id":"a1a5aa8846094293","type":"text","text":"NginX","x":-140,"y":40,"width":640,"height":60},
|
||||||
|
{"id":"4f8a9cfb945675c2","type":"text","text":"Backend","x":-140,"y":-210,"width":140,"height":100},
|
||||||
|
{"id":"0dfaf61f472cda82","type":"text","text":"App de backup db","x":170,"y":-360,"width":160,"height":110},
|
||||||
|
{"id":"78ca5bf8073a03e1","type":"text","text":"TicketBar - App Cliente","x":-820,"y":-190,"width":250,"height":60},
|
||||||
|
{"id":"2a2df4345147f6b7","type":"text","text":"NginX","x":360,"y":540,"width":50,"height":420},
|
||||||
|
{"id":"7cb7b6de3ef0025d","type":"text","text":"App de sync","x":758,"y":600,"width":195,"height":100},
|
||||||
|
{"id":"b384f36edca5d401","type":"text","text":"TicketBar - App Interno","x":-265,"y":650,"width":250,"height":60},
|
||||||
|
{"id":"2aaa0b16e4b1fbae","type":"text","text":"RRBEC - Web Page","x":-265,"y":740,"width":250,"height":60},
|
||||||
|
{"id":"4c2ba60d1183adb8","type":"text","text":"Backend","x":500,"y":800,"width":140,"height":100},
|
||||||
|
{"id":"68713d8d97d055d4","type":"text","text":"Data Base","x":800,"y":810,"width":110,"height":80},
|
||||||
|
{"id":"99ad714c3dc84a33","type":"text","text":"Data Base\n![[Diagrama de relacionamento.canvas|Diagrama de classes]]","x":220,"y":-190,"width":280,"height":190}
|
||||||
|
],
|
||||||
|
"edges":[
|
||||||
|
{"id":"d2ea1046b7e6d5b3","fromNode":"78ca5bf8073a03e1","fromSide":"right","toNode":"a1a5aa8846094293","toSide":"left"},
|
||||||
|
{"id":"9e9b93717d1234ab","fromNode":"4f8a9cfb945675c2","fromSide":"right","toNode":"99ad714c3dc84a33","toSide":"left"},
|
||||||
|
{"id":"852a3f782350a6fe","fromNode":"0dfaf61f472cda82","fromSide":"bottom","toNode":"99ad714c3dc84a33","toSide":"top"},
|
||||||
|
{"id":"42b3f76de8c037a4","fromNode":"6e48d897c550bf39","fromSide":"top","toNode":"a1a5aa8846094293","toSide":"bottom"},
|
||||||
|
{"id":"fba8dc99a3ca9ffc","fromNode":"4c2ba60d1183adb8","fromSide":"right","toNode":"68713d8d97d055d4","toSide":"left"},
|
||||||
|
{"id":"8cad9ad9422360a8","fromNode":"68713d8d97d055d4","fromSide":"top","toNode":"7cb7b6de3ef0025d","toSide":"bottom"},
|
||||||
|
{"id":"743d5cdcb29a1971","fromNode":"7cb7b6de3ef0025d","fromSide":"top","toNode":"99ad714c3dc84a33","toSide":"right"},
|
||||||
|
{"id":"b8e6c407baa7497a","fromNode":"6e48d897c550bf39","fromSide":"right","toNode":"2a2df4345147f6b7","toSide":"left"},
|
||||||
|
{"id":"50e185355d6da817","fromNode":"2a2df4345147f6b7","fromSide":"right","toNode":"4c2ba60d1183adb8","toSide":"left"},
|
||||||
|
{"id":"634bd04bb885c07d","fromNode":"a1a5aa8846094293","fromSide":"top","toNode":"4f8a9cfb945675c2","toSide":"bottom"},
|
||||||
|
{"id":"128e592181b4c28c","fromNode":"4f8a9cfb945675c2","fromSide":"top","toNode":"59d24657234b7fe1","toSide":"bottom"},
|
||||||
|
{"id":"13567ba7893ad3c6","fromNode":"0dfaf61f472cda82","fromSide":"top","toNode":"180e2c68c69d47d0","toSide":"bottom"}
|
||||||
|
]
|
||||||
|
}
|
||||||
39
doc/Visão Geral do Projeto.md
Normal file
39
doc/Visão Geral do Projeto.md
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
# Resumo Geral do Projeto Bar Digital
|
||||||
|
|
||||||
|
Este documento serve como um resumo consolidado de todo o projeto de digitalização e gestão do bar, abrangendo os três aplicativos principais e a modelagem de banco de dados que os interliga. O objetivo é fornecer uma visão de alto nível das soluções propostas e facilitar a navegação pelos documentos detalhados.
|
||||||
|
|
||||||
|
## 1. Visão Geral do Projeto
|
||||||
|
|
||||||
|
O projeto "Bar Digital" visa transformar a experiência de clientes e a eficiência operacional de um bar através de um ecossistema de três aplicativos integrados:
|
||||||
|
|
||||||
|
1. **BarApp ([[App Cliente - Visão Geral|Aplicativo Cliente]]):** Destinado aos clientes finais, focado em autoatendimento e facilidade de consumo.
|
||||||
|
|
||||||
|
2. **GarçomApp ([[App Interno - Visão Geral|Aplicativo Interno]]):** Ferramenta para os garçons, otimizando o atendimento e a gestão de mesas.
|
||||||
|
|
||||||
|
3. **Aplicativo de Gestão do Bar (Web):** Plataforma central para administradores e gerentes, abrangendo todas as operações do negócio.
|
||||||
|
|
||||||
|
|
||||||
|
A integração entre esses aplicativos é fundamental, permitindo um fluxo de informações contínuo e uma gestão unificada.
|
||||||
|
|
||||||
|
## 2. Componentes do Ecossistema
|
||||||
|
|
||||||
|
### 2.1. BarApp ([[App Cliente - Visão Geral|Aplicativo Cliente]])
|
||||||
|
|
||||||
|
### 2.2. GarçomApp ([[App Interno - Visão Geral|Aplicativo Interno]])
|
||||||
|
|
||||||
|
### 2.3. Aplicativo de Gestão do Bar ([[App Gestão - Visão Geral|Aplicativo de Gestão do Bar]])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## 3. Modelagem de Banco de Dados
|
||||||
|
|
||||||
|
A base de dados unificada é o coração do sistema, garantindo a consistência e a integridade dos dados entre os três aplicativos. Ela inclui tabelas para usuários, produtos, tickets, eventos, comandas, funcionários, estoque e muito mais, com relacionamentos bem definidos para suportar todas as funcionalidades.
|
||||||
|
|
||||||
|
**Documento Detalhado:**
|
||||||
|
|
||||||
|
- [[Modelagem de Banco de Dados]]
|
||||||
|
|
||||||
|
|
||||||
|
## 4. Conclusão
|
||||||
|
|
||||||
|
Este conjunto de documentos fornece uma visão abrangente e detalhada do projeto "Bar Digital", desde a perspectiva do usuário final até a gestão interna e a estrutura de dados. Eles servirão como guia essencial para as fases de desenvolvimento, teste e implantação dos aplicativos, garantindo que todas as necessidades e expectativas sejam atendidas.
|
||||||
Reference in New Issue
Block a user