🗄️ Banco de Dados — PegasusImpercia¶
- Motor: SQL Server 2017+
- Banco:
PegasusImpercia - Acesso:
pymssql(api/analyzer/db.py),as_dict=True,tds_version=7.0 - Padrão de acesso: o backend só lê/escreve via T-SQL direto — não há ORM sobre esse banco (o Django ORM só é usado para o sqlite interno de autenticação do painel)
Este catálogo é parcial
As tabelas abaixo foram documentadas conforme investigadas durante o desenvolvimento/suporte. Para um catálogo completo e atualizado, use a própria aba Estrutura BD do painel (lista todas as tabelas, views, procedures e índices em tempo real) ou rode struct_tools.list_tables() — ver Como gerar o inventário completo.
Funções analíticas¶
Todas recebem @DATA1 (início) e @DATA2 (fim) como parâmetros de período, e são consumidas pela aba Análises BI via api/analyzer/tools.py.
| Função SQL | Uso no painel |
|---|---|
FN_DESPESAS_PAGAS_CENTRO_CUSTO(@DATA1, @DATA2) |
Despesas pagas agrupadas por centro de custo |
FN_FATURAMENTO(@DATA1, @DATA2) |
Faturamento no período |
FN_PRODUTIVIDADE_OBRA(@DATA1, @DATA2) |
Produtividade por obra |
FN_RESERVAS_POR_MOVIMENTOS(@DATA1, @DATA2) |
Reservas de estoque por movimento |
FN_RESERVAS_POR_MOVIMENTOS_USOECONSUMO(@DATA1, @DATA2) |
Idem, para materiais de uso e consumo |
Tabelas conhecidas¶
MATERIAL¶
Cadastro geral de materiais/produtos (chave CODMATERIAL). Um material só existe "de verdade" numa filial quando também tem uma linha correspondente em MATERIALFILIAL.
MATERIALFILIAL¶
Vínculo material × filial — preço, CMV, estoque mínimo/máximo e flags específicos de cada filial. Chave composta (CODMATERIAL, FILIAL).
Causa comum de erro no Pegasus Corporate
"Material não encontrado na Filial!" significa que existe o material em MATERIAL, mas falta a linha correspondente em MATERIALFILIAL para aquela filial — geralmente porque o material foi cadastrado numa filial e nunca replicado/habilitado nas demais.
BLOQUEIOMOVIMENTO¶
Log de bloqueios de movimentação (ex: reserva insuficiente). Campo COMENTARIO (varchar) concatena uma linha por material/lote sem disponibilidade — pode crescer bastante em movimentos com muitos itens; se o campo for pequeno demais, o SQL Server trunca a inserção (String or binary data would be truncated).
Backup & manutenção¶
O ambiente usa os scripts de manutenção do Ola Hallengren (DatabaseBackup, IndexOptimize, DatabaseIntegrityCheck) via SQL Agent, com jobs próprios:
- Backup FULL diário, DIFF a cada 4h, LOG a cada 15min (recovery model FULL)
IndexOptimizediário,CHECKDBsemanal- Um job de restore diário (
Baseteste) valida a cadeia de backup restaurando numa base de teste
Detalhes de incidentes e ajustes já feitos nesses jobs estão em Operações → Diagnóstico de Backups.
Como gerar o inventário completo¶
Com o backend rodando e conectado ao banco:
curl "http://localhost:8001/api/struct/tables/" # todas as tabelas, linhas, tamanho
curl "http://localhost:8001/api/struct/columns/?table=NOME_DA_TABELA"
curl "http://localhost:8001/api/struct/views/"
curl "http://localhost:8001/api/struct/procedures/"
Ou direto pela aba Estrutura BD do painel.