Repository navigation
Data Model
A persistência usa SQLite. O esquema inicial está em db/schema.sql; regras de domínio adicionais são aplicadas pela API.
| 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 |
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.
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,reservedouout_of_stock. - O campo
activecontrola 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.
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.
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.
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.
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.
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.
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.