Skip to content

Data Model

Manoel edited this page Oct 13, 2026 · 1 revision

Modelo de dados

A persistência usa SQLite. O esquema inicial está em db/schema.sql; regras de domínio adicionais são aplicadas pela API.

Entidades principais

Tabela Finalidade
app_users Contas locais, hash de senha, papel e estado ativo
app_sessions Hash de token de sessão, token CSRF, usuário e expiração
auth_login_limits Limitação temporária de tentativas inválidas por identificador derivado
clients Dados cadastrais dos clientes
products Catálogo, SKU, categoria, marca, fornecedor, preço, quantidade e estado
stock_thresholds Limite mínimo individual de estoque por produto
stock_alert_acknowledgements Reconhecimento de alerta, quantidade observada, usuário e horário
finance_entries Receitas/despesas previstas, realizadas ou canceladas
work_items Registro interno de bugs e riscos
audit_log Ator, ação, entidade, identificador e data/hora

Cliente

A tabela clients inclui nome, username, e-mail, telefone, CPF, estado, cidade, papel/função, observações e metadados de criação. Username e CPF são únicos; a API valida o CPF como 11 dígitos. Campos de cadastro indicados no esquema são obrigatórios, salvo observações.

Produto

A tabela products inclui nome, categoria, SKU, referência, marca, estado, preço, quantidade, fornecedor, observações, metadados de criação e indicador de ativo.

  • SKU é obrigatório e único.
  • Preço não pode ser negativo.
  • Quantidade é inteira e não pode ser negativa.
  • O estado de domínio pode ser available, reserved ou out_of_stock.
  • O campo active controla o ciclo de vida do registro; desativação preserva o cadastro.

O dashboard calcula valor de estoque como preço multiplicado pela quantidade. O campo de preço do produto é REAL no SQLite; no financeiro, os valores usam centavos inteiros.

Usuários e sessões

app_users.role aceita admin, operator, finance ou viewer. Senhas são armazenadas como derivação scrypt. app_sessions guarda o hash do token de sessão, o token CSRF e a expiração; desativar usuário revoga sessões associadas.

Financeiro operacional

finance_entries armazena tipo (income ou expense), categoria, descrição, amount_cents, data, estado (planned, paid ou cancelled), autor e data de criação. amount_cents deve ser maior que zero, reduzindo problemas de arredondamento monetário. O módulo não é um sistema contábil/fiscal.

Alertas de estoque

stock_thresholds armazena o mínimo por produto. stock_alert_acknowledgements registra a quantidade no momento do reconhecimento, usuário e horário. As referências a produtos usam chaves estrangeiras com exclusão em cascata para essas tabelas auxiliares.

Bugs e riscos

work_items distingue bug e risk, com título, descrição, severidade, probabilidade/impacto (quando aplicável), estado, responsável, prazo opcional e autoria. Estados possíveis: open, in_progress, resolved e closed.

Integridade e migrações

O esquema habilita chaves estrangeiras. Há índices para expiração de sessões, datas financeiras e estado/tipo de itens de trabalho. A API possui lógica de atualização compatível com versões anteriores do banco. Faça backup antes de atualizar o aplicativo e teste restauração em ambiente controlado.

Privacidade

O banco pode conter CPF, telefone, e-mail e informações financeiras. Restrinja permissões de arquivo, proteja backups e não envie banco ou dados reais em issues públicas.

Clone this wiki locally