BP-Insight DOCS v1.0
Acessar App

Documentação Técnica

O BP-Insight é uma ferramenta de engenharia de software desenvolvida para analisar, visualizar e auditar esquemas de banco de dados SQL. Diferente de ferramentas low-code, todo o motor de processamento foi construído com JavaScript Vanilla e PHP 8, focando em performance e privacidade (Client-side processing).

1. Arquitetura do Sistema

O projeto segue um padrão MVC Simplificado sem frameworks pesados. A estrutura de diretórios foi desenhada para separar claramente a lógica de negócios da interface.


/public_html
├── /app            # Views e Controllers (Lógica de Autenticação e Dashboard)
├── /assets         # Core Engine (Parser JS, Canvas Logic)
├── /config         # Conexão segura com Banco de Dados (Singleton)
└── /libs           # Bibliotecas auxiliares
                

2. O Motor de Parsing (Regex Engine)

O coração do sistema é o parser.js. Em vez de enviar o código SQL para o servidor (o que seria lento e inseguro), o processamento ocorre no navegador do usuário usando Expressões Regulares avançadas.

Como identificamos tabelas:

Utilizamos um padrão de captura não-guloso para isolar blocos CREATE TABLE e extrair definições de colunas.


// assets/js/parser.js

const tableRegex = /CREATE\s+TABLE\s+(?:IF\s+NOT\s+EXISTS\s+)?[`"]?(\w+)[`"]?\s*\(([\s\S]*?)\);/gim;

while ((match = tableRegex.exec(cleanSQL)) !== null) {
    const tableName = match[1]; // Captura o nome (ex: "users")
    const content = match[2];   // Captura o corpo (colunas)
    
    // Processa as colunas recursivamente...
}
                

3. Algoritmo de Auditoria (Security-First)

O módulo auditor.js aplica regras de conformidade (LGPD/GDPR) e boas práticas de segurança em tempo real. Ele varre os metadados das colunas em busca de padrões de risco.

Exemplo de Regra (Detecção de Senhas Fracas):


// assets/js/auditor.js

// Dicionário de padrões sensíveis
const rules = {
    auth: /^(password|senha|secret|token|hash)$/i,
    pii: /^(cpf|rg|passport|email)$/i
};

// Verifica tamanho do campo de senha
if (rules.auth.test(colName)) {
    // Se for VARCHAR(50) ou menos, alerta risco de hash fraco (MD5)
    if (colSize < 60) {
        report.alerts.push({
            level: 'critical',
            msg: 'Coluna de senha muito curta. Use VARCHAR(255) para suportar Argon2/Bcrypt.'
        });
    }
}
                

4. Calculadora de Volumetria

Para estimar custos de infraestrutura (AWS RDS/Azure SQL), o sistema calcula o Row Size (tamanho da linha) somando os bytes primitivos de cada tipo de dado.

  • INT: 4 bytes
  • DATETIME: 8 bytes
  • VARCHAR(N): N * média de uso (60%) + overhead