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.
Neste manual
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.
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.
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).
| Gravidade | Exemplos |
|---|---|
| Crítica | RLS desligado com acesso pela API; policy true para o público (anon); view sem filtro lida pelo público. |
| Alta | Policy obrigatória faltando; policy aberta para qualquer login; tabela não existe; RLS ligado sem policy. |
| Média | Policy sem verifica_permissao_modulo; módulo/operação diferente do esperado; comando não previsto. |
| Baixa | Policy recomendada faltando; privilégio desnecessário do anon; módulo fora de main_modulos. |
| Informação | Dono 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
| Mensagem | O que fazer |
|---|---|
| Atualização do banco pendente | Rode os scripts sql/001 a 003 no editor SQL. |
| Só para o nível 4 do permus | Peç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 banco | Rode 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
| Termo | Significado |
|---|---|
| RLS | Row Level Security: com ele ligado, só passam pela API as linhas que as policies permitem. |
| Policy | Regra do banco que diz quem pode ler/incluir/alterar/excluir. No SIGEEDU, sempre por verifica_permissao_modulo. |
| verifica_permissao_modulo | Funçã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álogo | Arquivo .json de um projeto com páginas, tabelas, usos e policies esperadas. |
| Função SECURITY DEFINER | Função do banco que roda com os direitos de quem a criou; confere a permissão por dentro. |
| anon / authenticated | Papéis do banco: visitante sem login / usuário logado. |
| View security_invoker | View que respeita as policies das tabelas de quem consulta. |