Skip to content

Schema e relações ​

A fonte do schema, a definição da estrutura do banco, é packages/db/prisma/schema.prisma. Prisma está na versão 6 neste projeto.

Relações entre catálogo, amostras e auditoria bruta

Inventário e telemetria ​

Modelo / tabelaIdentidade e campos importantesPapel
InverterSource / inverter_sourcesserialNumber único; adapterKey; host/port; enabledFonte de coleta física, configuração restrita
Device / devicesPar único type + externalId; name, active, metadata, lastSeenAtCatálogo reconhecido pela ingestão
MetricDefinition / metric_definitionskey; unit, description, activeCatálogo global de grandezas
Measurement / measurementsdeviceId, metricKey, valueNum, measuredAt, receivedAtUma amostra por grandeza
RawMessage / raw_messagestopic, payloadRaw, payloadJson, valid, error; deviceId opcionalAuditoria de chegada e validação

Measurement referencia Device e MetricDefinition. RawMessage pode não ter Device, sobretudo quando a mensagem é inválida.

O par deviceId + metricKey + measuredAt é indexado, não único. Uma repetição MQTT pode criar outra linha.

Catálogo ativo não comanda o hardware ​

InverterSource.enabled decide elegibilidade no coletor. Device.active é uma revisão do catálogo e pode influenciar consultas/painéis. MetricDefinition.active também é catálogo; a persistência atual não usa esse campo para rejeitar valores recebidos.

A ingestão preserva campos já revisados pelo operador.

Administração ​

ModeloO que guardaO que não deve expor
AdminUserConta, papel, status e hash de senhaHash e dados restritos
AdminSessionHash de token, expiração, revogação e estado CSRFToken de sessão
AdminAuditLogAtor, ação, recurso e nomes dos campos alteradosValores sensíveis e credenciais

As transações administrativas incluem atualização e auditoria. Sessões revogadas não voltam a valer apenas porque uma conta foi reativada.

Horários e retenção ​

Separar measuredAt e receivedAt permite observar atraso, mas exige consistência de relógio/fuso nas consultas. Não interpretar lastSeenAt como potência atual.

O armazenamento não possui deduplicação automática de medições nem uma política automática de retenção/particionamento implementada. Mudanças de schema e migrations são operações próprias, com revisão e confirmação.

Revisão editorial: 07/10/2026. Fontes: schema.prisma, persistence.ts e repositórios do Admin.

IFSP Campus Boituva · Energia, automação e software em um mesmo projeto