Início Institucional Stack & Sparse Storage Modelagem de Metadados Grid & Cell Audit Mockups & Telas Reais Plugin Google Planilhas Políticas de Uso & Privacidade Falar com Arquiteto de Software Acessar Plataforma Web ↗
🛠️ ARQUITETURA TÉCNICA E FUNCIONAL • STACK CORPORATIVA

Engenharia de Alta Performance para Cálculo Multidimensional

Documentação de arquitetura detalhada da plataforma Salvum (antigo APPPlan). Conheça a camada de persistência em Sparse Storage, o isolamento físico Database-per-Tenant, a validação síncrona de interseções e o motor de regras de negócio com árvore de sintaxe abstrata (AST).

BACKEND RUNTIME

Java 21 & Tomcat 11

Servidor corporativo otimizado para concorrência multi-thread, processamento paralelo de regras e baixa latência.

PERSISTÊNCIA SQL

Sparse Storage Native

Gravação exclusiva de células com fatos preenchidos, gerando índices ultracompactos e consultas instantâneas.

ISOLAMENTO FISICO

Database-per-Tenant

Bases de dados MySQL segregadas por cliente, eliminando risco de vazamento cruzado e facilitando auditoria.

SECURITY & RBAC

Validação Síncrona

IntersectionValidationEngine intercepta gravações em tempo real e aplica a regra mais restritiva de segurança.

Visão Geral da Stack & Sparse Storage

O Salvum opera sob uma arquitetura de microsserviços e módulos web acoplados a um servidor Apache Tomcat 11 sobre a JVM Java 21 LTS. O tráfego de entrada é gerido por proxies reversos Nginx com terminação criptográfica TLS 1.3 e balanceamento estrito de requisições.

Isolamento Físico Database-per-Tenant Ao contrário da abordagem clássica multi-tenant lógica (coluna tenant_id compartilhada), o Salvum aloca um banco de dados MySQL independente por cliente com credenciais e pools de conexão JDBC dedicados.
Camada Analítica Sparse Storage Em cubos multidimensionais de 6 a 12 dimensões, a densidade média de preenchimento de dados é inferior a 1%. O motor Sparse Storage persiste apenas células que possuem valores reais, descartando combinações nulas e viabilizando agregações de milhões de nós em poucos milissegundos.
API Gateway & Reverse Proxy Nginx Terminação SSL segura, compressão de payloads JSON e roteamento dinâmico para os endpoints REST do core analítico.
architecture_stack_diagram.sys TLS 1.3 / JDBC / JVM
// Fluxo de Requisição Transacional EPM
[Browser Client / Google Sheets Add-on]
│ (HTTPS / Bearer JWT Token)
▼
[Nginx Reverse Proxy & SSL Termination]
│ (Roteamento Interno / HTTP/2)
▼
[Apache Tomcat 11 - JVM 21 LTS]
├── IntersectionValidationEngine (Validação Síncrona)
├── AST Formula Compiler Engine (@SUMRANGE, @AVGRANGE)
├── DataEngine API (Exportador Vetorial & JSON)
└── HikariCP Dedicated Connection Pool
│ (Hikari JDBC Physical Connection)
▼
[MySQL 8.x Engine - Database-per-Tenant]
├── APP_FACT_DATA (Sparse Storage - Fatos Esparsos)
├── APP_TEXT_DATA (Mapeamento de Textos Desacoplado)
└── APP_CELL_AUDIT_LOG (Trilha Imutável de Mutações)
Tela de Login e Roteamento do Salvum
🔍 Ver Tela de Login da Plataforma
ROTA: /appplan/manage_dimensions.jsp • /appplan/manage_members.jsp

Modelagem Multidimensional e Resolução Relacional

A estrutura analítica do Salvum suporta dimensões ilimitadas (Conta, Centro de Custo, Cenário, Ano, Período, Entidade, Projeto e Moeda). Cada membro de dimensão possui metadados com operadores de consolidação e tipagem estrita de dados.

Membros Store vs. Shared (Ponteiros Dinâmicos) Membros com propriedade Store representam o ponto físico de gravação na tabela de fatos. Membros virtuais Shared atuam como ponteiros referenciais em hierarquias alternativas, direcionando automaticamente gravações para o membro primário correspondente e prevenindo ciclos de recursão infinita na consolidação.
Tipagem de Dados de Membros Suporte nativo a tipos específicos: Currency (moeda com precisão decimal), Percent (taxas percentuais e indexadores), Number (quantidades inteiras ou decimais) e TEXT (anotações e justificativas).
Mapeamento Desacoplado na Tabela APP_TEXT_DATA Células de texto livre não são misturadas aos fatos numéricos. O texto é persistido na tabela central APP_TEXT_DATA gerando um ponteiro inteiro na coordenada de fato, permitindo que o motor de agregação matemática ignore o valor sem lentidão.
SmartLists (Enums Textuais com IDs Inteiros) Permite listas suspensas (dropdowns) em células. O sistema grava um número inteiro no fato e renderiza a descrição legível na interface web e na planilha.
Tela manage_dimensions.jsp do Salvum
🔍 manage_dimensions.jsp Real
● manage_members.jsp: Gerencia a árvore de agregação, operadores (+, -, ~, *), tipos de dados e nós Shared.
ROTA: /appplan/general_module.jsp • /appplan/general_form.jsp

Grid Operacional "Excel-Like" e Trilha de Auditoria Celular

A interface de digitação orçamentária do Salvum emula a velocidade e ergonomia de planilhas locais, mas com validação síncrona transacional e rastreabilidade celular completa.

Comportamento "Excel-Like" Avançado Navegação intuitiva por teclado (setas direcionais, Tab, Enter, Shift+Tab), seleção retangular de intervalos, alça de preenchimento contínuo (Fill-Handle) e suporte a colagem em lote (Ctrl+V) com sanitização automática de quebras de linha (\n) e tabulações (\t).
Três Modos de Acesso na Célula 1. Write: Edição permitida com persistência imediata.
2. Read-Only: Célula bloqueada com fundo acinzentado contra digitação acidental.
3. None: Supressão visual do membro no POV para usuários sem privilégio.
Write-Back Atômico e Auditoria na Tabela APP_CELL_AUDIT_LOG Cada mutação de dado gravada via web ou plugin gera uma inserção atômica na tabela APP_CELL_AUDIT_LOG, capturando: identificador do usuário, timestamp UTC, coordenadas multidimensionais completas, valor anterior e novo valor.
Grid Operacional general_form.jsp
🔍 general_form.jsp Real
APP_CELL_AUDIT_LOG (Amostra de Trilha) TABLE LOG DUMP
Timestamp User ID Coordenada POV Valor Anterior Novo Valor
2026-10-22 14:32:08 luiz@mail.com Receita_Bruta::Jan::Real R$ 1.250.000 R$ 1.320.000
2026-10-22 14:35:12 luiz@mail.com Custos_Oper::Fev::Orcado R$ 450.000 R$ 442.000
2026-10-22 14:41:55 admin@salvum Deducoes::Mar::Orcado R$ 180.000 R$ 195.000
ROTA: /appplan/valid_intersec.jsp

IntersectionValidationEngine: Validação Síncrona de Regras

Integridade orçamentária requer bloqueio preventivo de coordenadas incompatíveis. O IntersectionValidationEngine executa a validação síncrona em milissegundos tanto na renderização da grade quanto na submissão de dados.

Bloqueio de Cenários (Block Scenario) Cenários de dados fechados (como "Realizado 2025" ou "Orçamento Aprovado Diretoria") são travados globalmente contra escrita. O motor rejeita qualquer requisição de alteração HTTP mesmo que submetida via API.
Interseções Inválidas na Interface (.grid-cell-locked) Combinações que não possuem lógica de negócio (ex.: Centro de Custo Fabril associado a Contas de Vendas de Serviços) são interceptadas na renderização do grid, recebendo a classe visual .grid-cell-locked com cursor de bloqueio e desativação de listeners.
Validação Pré-Persistência em Lote Antes de acionar a gravação no banco, o motor compila todas as coordenadas do payload e rejeita transações inteiras caso qualquer célula viole as regras cadastradas.
Tela valid_intersec.jsp do Salvum
🔍 valid_intersec.jsp Real
ROTA: /appplan/calculation_library_details.jsp • /appplan/job.jsp

Compilação AST e Biblioteca de Funções Avançadas

O motor de regras do Salvum processa cálculos complexos através de um compilador de Árvore de Sintaxe Abstrata (AST) com avaliação aninhada de dentro para fora (Inside-Out), garantindo ordem matemática rigorosa e otimização de laços de repetição.

Biblioteca de Funções Multidimensionais ● @SUMRANGE(range): Agregação rápida sobre vetores temporais ou dimensionais.
● @AVGRANGE(range, FLAGS): Média aritmética com suporte a flags avançadas: SKIPNONE, SKIPMISSING, SKIPZERO e SKIPBOTH.
● @ROUND(expr, dec), @ABS(expr), @MIN(a, b), @MAX(a, b).
● @NEXT(member, offset) e @LIST(args...) para defasagens temporais e projeções de fluxo de caixa.
Encadeamento de Regras & Execução Assíncrona Regras dependentes podem ser encadeadas em sequências lógicas. Tarefas volumosas são despachadas assincronamente para a fila de execução, com telemetria monitorada em tempo real na tela job.jsp (status: QUEUED, RUNNING, COMPLETED, FAILED).
Tela calculation_library_details.jsp do Salvum
🔍 calculation_library_details.jsp Real
ROTA: /appplan/security.jsp

Perfis RBAC e Regra da Precedência Mais Restritiva

A segurança da plataforma opera sob governança de Controle de Acesso Baseado em Papéis (RBAC) com herança dimensional granular para garantir que dados confidenciais nunca sejam expostos.

Quatro Perfis Hierárquicos de Acesso ● User: Leitura e escrita restrita aos formulários e coordenadas do seu centro de custo.
● Advanced: Permissão para execução local de cálculos e parametrização de drivers.
● Administrator: Gestão completa de dimensões, formulários, regras e validações.
● Super_Admin: Gestão global da instância corporativa, criação de tenants e auditoria.
Regra da Precedência Mais Restritiva (Most Restrictive Selection) Quando um usuário pertence a múltiplos grupos com permissões conflitantes em uma mesma dimensão (ex.: Grupo A = Write, Grupo B = Read-Only), o motor resolve automaticamente aplicando o nível mais restritivo, blindando a integridade dos dados.
Escopos de Herança Dimensional por Membro Permissões podem ser delegadas nos escopos: Member (apenas o nó), Descendants (todos os filhos e netos), Descendants Inclusive (o nó e todos abaixo), Children (filhos diretos) e Base Level (apenas folhas operacionais).
RBAC Inheritance Resolver SECURITY ENGINE
// Exemplo de Resolução de Permissão em Conta Contábil
Usuário: mariana.duarte@empresa.com.br
Grupo 1 (Controladoria Geral): WRITE em "Despesas_Gerais"
Grupo 2 (Auditoria Interna): READ-ONLY em "Despesas_Diretoria"
Interseção Avaliada: "Despesas_Diretoria"
Ação do IntersectionValidationEngine:
✓ APLICADO: READ-ONLY (Precedência Mais Restritiva)
➔ Célula renderizada com classe .cell-readonly
➔ Gravação bloqueada na API REST
ROTA: /appplan/general_dashboard_details.jsp • /appplan/general_report_details.jsp

Consumo Desacoplado: Grid, Gráficos e Exportação PDF

O Salvum implementa uma arquitetura de dados desacoplada baseada no serviço DataEngine API. Um único motor central atende simultaneamente múltiplos canais de saída sem duplicidade de processamento.

Serviço Unificado DataEngine API Fornece endpoints JSON de alto débito que alimentam o grid operacional, os cartões de KPI e gráficos vetoriais (barras, linhas e dispersão) em HTML5 Canvas/SVG.
Exportação Vetorial Limpa em PDF Pipeline de renderização server-side de alta fidelidade para relatórios executivos diagramados com paginação automática, cabeçalhos corporativos e tabelas comparativas prontas para impressão e apresentação ao Conselho.
Módulos Gerenciais general_module.jsp
🔍 general_module.jsp Real

Demonstração Interativa das Telas do Salvum

Explore as interfaces operacionais fundamentais do sistema reproduzidas com fidelidade técnica:

manage_members.jsp — Hierarquia da Dimensão "Conta / DRE" METADATA MANAGER
▼ 📁 DRE_Consolidada
STORE CURRENCY
▼ 📁 Receita_Bruta (+)
STORE CURRENCY
📄 Venda_Produtos_Mercado_Interno (+)
STORE CURRENCY
📄 Venda_Exportacao (+)
STORE CURRENCY
▼ 📁 Deducoes_Receita (-)
STORE CURRENCY
📄 Impostos_Sobre_Vendas (+)
STORE CURRENCY
🔗 Devolucoes_Comerciais_Shared (~)
SHARED ➔ #2041 CURRENCY
📄 Anotacoes_Justificativa_CFO
STORE APP_TEXT_DATA
general_module.jsp — Grid Operacional de Entrada & Restrições POV: Orçado 2026 | BRL
Conta Contábil / Linha Jan/2026 Fev/2026 Mar/2026 1º Trimestre Status Interseção
1. Receita Bruta Total 1.320.000,00 1.450.000,00 1.510.000,00 4.280.000,00 Consolidado (+)
└─ Vendas Região Sul 450.000,00 490.000,00 510.000,00 1.450.000,00 Write Habilitado
└─ Vendas Corporativas SP 870.000,00 960.000,00 1.000.000,00 2.830.000,00 Write Habilitado
2. Dedução Fiscal Bloqueada 🔒 BLOQUEADO 🔒 BLOQUEADO 🔒 BLOQUEADO 🔒 BLOQUEADO .grid-cell-locked
3. Margem de Contribuição 680.000,00 740.000,00 775.000,00 2.195.000,00 Fórmula AST
Painel de Auditoria de Células (APP_CELL_AUDIT_LOG) IMMUTABLE LEDGER
Data/Hora (UTC) Usuário Origem Coordenada EPM Valor Anterior Novo Valor Gravado Motivo / Evento
2026-10-22 14:15:33 cfo@empresa.com.br Web Grid Receita::Sul::Jan::Orcado 420.000,00 450.000,00 Ajuste meta comercial Q1
2026-10-22 14:18:02 controller@empresa.com.br Google Sheets Add-on OPEX_Marketing::Fev::Orcado 85.000,00 92.000,00 Submit Data via Planilha
2026-10-22 14:22:19 sistema@salvum.internal AST Rule Engine EBITDA_Consolidado::Mar::Orcado 740.000,00 775.000,00 job.jsp #4092 Recálculo

Agende uma Sessão Técnica de Arquitetura

Converse diretamente com o Arquiteto de Software responsável pelo Salvum. Tire dúvidas aprofundadas sobre dimensionamento de instâncias, isolamento de banco de dados, conformidade LGPD e migração de modelos legados.

Solicitar Avaliação Técnica / POC

Preencha os dados da sua organização para receber a documentação de infraestrutura: