Manual do usuário

Mapa de Ligações

Uma tela que mostra, num só desenho, quais projetos e páginas do SIGEEDU usam quais tabelas do banco, com qual módulo de permissão, e se cada tabela está protegida como deveria (RLS e policies). Aponta as falhas, explica como resolver e cria as policies que faltam.

00O que é

O SIGEEDU tem vários sites e módulos (eventos, chamados, atribuição, protocolo...) que usam o mesmo banco. Esta tela junta tudo num mapa.

Fluxograma

Projeto → página → tabela, com o que cada página faz (lê, inclui, altera, exclui) e por onde passa: direto pela tela, por função do banco, pelo n8n ou pelo Storage.

Entidades e relacionamentos

Cada tabela com as colunas, a chave primária e as chaves estrangeiras lidas do próprio banco.

Mapa mental

Projetos no centro, os módulos de permissão em volta e as tabelas de cada módulo na ponta.

Segurança

Para cada tabela: o que deveria ter (policies por verifica_permissao_modulo) e o que o banco tem de verdade. Diferenças viram inconsistências com gravidade e solução.

Quem usa: só quem tem o módulo permus no nível 4. A tela pode criar policies no banco de produção.

01Acesso e login

Endereço: site.semecol.com.br/permus-ligacoes-tabelas-modulos/. O login é o mesmo do SIGEEDU (código de página permus.ligacoes).

  • Sem o módulo permus, ou com nível 5: tela Sem permissão.
  • Com permus nível 1, 2 ou 3: a página abre com o aviso Só para o nível 4 do permus e não mostra nada do banco.
  • Nível 4: tudo liberado. O banco confere de novo o nível em cada ação (a tela não basta).

A sessão vencida leva ao login com o aviso de sessão expirada; queda de internet não desloga.

02Conhecendo a tela

Menu à esquerda (minimizar/maximizar, lembrado no navegador), cabeçalho fixo com os filtros de cada aba e, embaixo, o conteúdo. No celular, as abas principais ficam na barra do topo e as outras no botão ⋮.

Embaixo do e-mail aparece o seu nível. O botão sol/lua troca o tema claro/escuro (o padrão segue o sistema).

Ao abrir, a página lê o catálogo e audita o banco (alguns segundos). Para ler de novo depois de mudar algo no banco, use Auditar o banco.

03Mapa

Visões

  • Tudo junto: fluxograma + colunas das tabelas + chaves estrangeiras + o módulo (🔒) que protege cada tabela.
  • Fluxograma: projeto → páginas → tabelas.
  • Entidades (ER): só as tabelas, com colunas e chaves estrangeiras.
  • Mapa mental: projetos → módulos → tabelas, em círculo.

Como ler o desenho

  • Cor da borda da tabela = situação: verde em ordem, âmbar atenção, laranja problema alto, vermelho crítico, cinza tracejado não existe no banco.
  • Seta cheia = a página usa a tabela direto (passa pelo RLS); tracejada = por função do banco; pontilhada = n8n, Storage ou Edge Function.
  • Letras na seta: L lê, I inclui, A altera, E exclui.
  • Nas colunas: ◆ chave primária, → chave estrangeira. Formas: ◇ view, ▣ bucket do Storage. Página com borda tracejada = pública.

Clicar, filtrar e exportar

Clique num item para ver os detalhes à direita e destacar o caminho dele (o resto fica apagado). Passe o mouse para destacar sem clicar. Roda do mouse = zoom; arraste para mover.

Filtros: projeto, módulo, situação e busca pelo nome. Em telas menores, os filtros ficam atrás do botão Filtros. Botões: ajustar, tela cheia, PNG (baixa a imagem do desenho inteiro).

04Tabelas e policies

Um cartão por tabela: o tipo de acesso esperado, o módulo dono, quem usa, as policies esperadas (com a situação de cada uma: existe, parcial, diferente ou falta), as policies que existem no banco, os privilégios dos papéis anon/authenticated e os problemas com a solução.

Tipos de acesso: Tela lê/grava direto (precisa de RLS e policies), Só por funções (RLS ligado, sem policies), Só serviço (n8n), Leitura pública (exceção documentada) e De outro módulo.

Criar a policy que falta

Botão Criar ao lado da policy esperada (ou Criar as N que faltam no cartão). A janela mostra o SQL exato antes de confirmar. Quem monta o SQL é o banco, a partir do catálogo, sempre com verifica_permissao_modulo. SQL copia o texto para rodar à mão.

Se a tabela pertencer a outro usuário do banco, a criação pela tela não é possível: aparece o SQL para rodar no editor SQL como esse usuário.

Ligar o RLS

No problema RLS desligado, botão Ligar o RLS. Crie antes as policies esperadas: com RLS ligado e sem policy, a tela do sistema deixa de ver os dados. A janela avisa quantas faltam.

05Inconsistências

Todos os problemas, do mais grave para o mais leve, com como resolver e o SQL. Os quadros do topo contam por gravidade (clique para filtrar).

GravidadeExemplos
CríticaRLS desligado com acesso pela API; policy true para o público (anon); view sem filtro lida pelo público.
AltaPolicy obrigatória faltando; policy aberta para qualquer login; tabela não existe; RLS ligado sem policy.
MédiaPolicy sem verifica_permissao_modulo; módulo/operação diferente do esperado; comando não previsto.
BaixaPolicy recomendada faltando; privilégio desnecessário do anon; módulo fora de main_modulos.
InformaçãoDono diferente; bucket público; tabela sem uso no mapa.

Criar todas as que faltam cria de uma vez as policies obrigatórias (não liga o RLS). SQL de tudo copia o SQL de todas as correções para revisar; as remoções (drop policy) vêm comentadas.

O quadro O banco inteiro lista todas as tabelas do schema public, inclusive as que ainda não estão no catálogo de nenhum projeto: sem RLS, com o anon lendo, com policy aberta.

06Projetos e módulos

Um cartão por projeto: páginas, módulos, tabelas, quantas estão com problema e a barra de situação. Mapa filtra o desenho, .json baixa o catálogo e Tirar do mapa remove o projeto (só do mapa: nada muda no banco).

Importar um catálogo

Importar catálogo → escolha o .json. A janela valida o arquivo e mostra o resumo antes de gravar. Importar de novo o mesmo projeto troca as páginas e ligações dele.

Adicionar outro projeto

Prompt para adicionar projeto → Copiar. Cole na sessão do Claude Code aberta em F:\CLAUDE, trocando a pasta do projeto. A sessão levanta as tabelas, gera o catálogo e faz o commit; depois é só importar aqui.

07Documentação

Dicionário de dados gerado na hora: projetos e páginas, módulos, cada tabela (descrição, acesso, quem usa, policies esperadas com o SQL, o que existe no banco, inconsistências, colunas e chaves) e como corrigir.

Botões: abrir em outra aba, Imprimir / PDF e Baixar (arquivo .html que abre em qualquer navegador).

08Apresentação

No menu, Apresentação monta slides em tela cheia: capa, visão geral (números e situação), mapa mental, um slide por projeto com o fluxograma, segurança, o banco inteiro e próximos passos.

Teclas: →/espaço avança, ← volta, F tela cheia, Esc fecha. Clique na metade direita avança e na esquerda volta. PDF imprime um slide por página; Baixar salva a apresentação (.html) para mostrar fora do sistema.

09Atividade e log

Online agora: quem está com o mapa aberto, em qual aba e o que está fazendo (renova a cada 15 s).

Registro de atividades (níveis 3 e 4): quem fez o quê e quando: entrou/saiu, auditou, importou catálogo, criou policy (com o SQL executado), ligou RLS, copiou SQL, abriu a apresentação, baixou a documentação. Filtros de período, pessoa, ação e texto; Excel com até 5.000 linhas. O registro não pode ser alterado nem apagado.

10Mensagens do sistema

MensagemO que fazer
Atualização do banco pendenteRode os scripts sql/001 a 003 no editor SQL.
Só para o nível 4 do permusPeça o nível 4 no Controle de Permissões.
Já existe a policy "..."Já há uma policy com esse nome: confira se ela faz o esperado.
A tabela ... pertence a "..."Rode o SQL mostrado no editor SQL como esse usuário.
A tabela ... não existe no bancoRode o SQL do projeto que cria a tabela, ou corrija o catálogo.
O arquivo tem N problema(s)O .json está fora do formato: veja a lista e corrija o arquivo.

11Perguntas frequentes

Importar um catálogo muda o banco?

Não. Só o mapa. O banco muda quando você clica em Criar ou em Ligar o RLS.

Posso desfazer uma policy criada?

Pelo editor SQL: drop policy <nome> on <tabela>;. O SQL que foi executado fica no registro de atividades.

Por que a tabela X está "crítica" se o sistema funciona?

Funcionar não é estar protegido: sem RLS, qualquer pessoa com a chave pública lê a tabela pela API, sem passar pela tela.

O mapa mostra só o site_5?

No começo, sim. Os outros projetos entram pelo prompt padrão (aba Projetos e módulos).

12Glossário

TermoSignificado
RLSRow Level Security: com ele ligado, só passam pela API as linhas que as policies permitem.
PolicyRegra do banco que diz quem pode ler/incluir/alterar/excluir. No SIGEEDU, sempre por verifica_permissao_modulo.
verifica_permissao_moduloFunção que confere o nível do usuário no módulo (1 consulta, 2 inclui/altera, 3 exclui, 4 tudo em todos os locais, 5 nada).
CatálogoArquivo .json de um projeto com páginas, tabelas, usos e policies esperadas.
Função SECURITY DEFINERFunção do banco que roda com os direitos de quem a criou; confere a permissão por dentro.
anon / authenticatedPapéis do banco: visitante sem login / usuário logado.
View security_invokerView que respeita as policies das tabelas de quem consulta.