Feature: Configuração de Colunas Visíveis
Introdução ao documento
Este documento descreve a funcionalidade de configuração de colunas visíveis para controle de acesso a dados sensíveis.
Versionamento
- Versão do documento: 1.0.0
- Última atualização: 2026-03-09
- Responsável: Marivaldo Vinicius
Referencial teórico
Visão geral
A feature de colunas visíveis permite controlar quais colunas de dados podem ser visualizadas por usuários com role Facilitador_Limitado. Sistema armazena configuração única (singleton) que define lista de colunas permitidas. Por padrão, email é oculto para facilitadores limitados.
Atores envolvidos
- Administrador Geral: Configura quais colunas são visíveis
- Facilitador Limitado: Visualiza apenas colunas permitidas
- Sistema: Aplica filtro de colunas baseado na configuração
Pré-condições
- Permissão
Administração_Geralpara configurar colunas - Tabela
visible_columns_configcriada - Role
Facilitador_Limitadoconfigurada no sistema - Frontend implementa lógica de filtro de colunas
Fluxo principal
Configuração de Colunas
-
Administrador acessa interface
- Acessa página de configuração de colunas (via admin panel)
- Visualiza configuração atual ou null se não configurado
-
Definição de colunas permitidas
- Administrador seleciona colunas que devem ser visíveis
- Sistema valida que
columnsé array de strings - Salva configuração na tabela
visible_columns_config
-
Aplicação da configuração
- Frontend consulta
/api/v1/colunaspara obter lista permitida - Filtra colunas exibidas baseado na configuração
- Colunas não permitidas são ocultadas da visualização
- Frontend consulta
Visualização com Restrição
-
Usuário com role limitada acessa dados
- Frontend identifica role do usuário
- Se
Facilitador_Limitado, consulta configuração de colunas
-
Filtro de colunas
- Frontend aplica filtro removendo colunas não permitidas
- Email é sempre oculto por padrão (mesmo se não configurado)
- Apenas colunas na lista são exibidas
Fluxos alternativos
Configuração não existe
- Se nenhuma configuração foi salva, API retorna
columns: null - Frontend aplica configuração padrão (todas exceto email)
- Sistema funciona normalmente mesmo sem configuração explícita
Atualização de configuração
- PUT e POST têm mesmo comportamento (upsert)
- Se configuração existe, é atualizada
- Se não existe, é criada
- Apenas um registro é mantido (singleton)
Validação de dados
- Se
columnsnão é array, sistema retorna erro 422 - Se array contém valores não-string, validação falha
- Mensagem de erro detalhada é retornada
Regras de negócio
- Configuração única: Apenas uma configuração é mantida (singleton)
- Email sempre oculto: Email nunca é exibido para facilitadores limitados, mesmo se na lista
- Validação de array: Colunas devem ser array de strings
- Aplicação no frontend: Filtro é aplicado no frontend, não no backend
- Colunas padrão: Se não configurado, todas exceto email são permitidas (conforme migration)
Estados possíveis
- Configurado: Lista de colunas definida e ativa
- Não configurado: Nenhuma configuração salva (usa padrão)
- Erro de validação: Dados inválidos, configuração não salva
Endpoints envolvidos
-
GET
/api/v1/colunas- Retorna configuração atual- Response:
{ success: boolean, columns: array|null }
- Response:
-
POST
/api/v1/colunas- Salva ou atualiza configuração- Request body:
{ columns: string[] } - Response:
{ success: boolean, message: string, columns: array }
- Request body:
-
PUT
/api/v1/colunas- Atualiza configuração (mesmo comportamento do POST)- Request body:
{ columns: string[] } - Response:
{ success: boolean, message: string, columns: array }
- Request body:
Admin Panel
- GET
/admin/colunas- Interface de configuração (requer permissão)
Dados afetados
- Tabela
visible_columns_config: Armazena configuração única- Campo
columns: Array JSON com lista de colunas permitidas - Apenas um registro é mantido (singleton)
- Campo
Colunas padrão
Conforme migration inicial, colunas permitidas por padrão (exceto email):
name,phone,city,uf,progress,pcd,cnpj,companyName,classSchedule,cycleName,is_enroll_canceled,cancel_description,ch_percentual,segment,companySize,aliName