-
Status do intake: implemented-pending-homologation
-
Data: 2026-08-29
-
Origem: retorno de homologação do Engenheiro Chefe ("O ponto 5 tah com defeitos de falta de páginas... Também não tem nenhum tipo no banco que era tipo tinymce... o ideal é modificar para um tipo novo
editor-textoou outro similar") -
Classificação: defeito funcional, risco de perda de dados, dívida de nomenclatura
-
Batch: BATCH-147
1. O relato e o que ele escondia
O relato foi de páginas faltando: /[REDACTED]/variables/adicionar/ e
/[REDACTED]/variables/editar/?id=usuarios-perfis devolvendo 404 (302 para a raiz, medido com
sessão autenticada).
As páginas realmente nunca existiram — o manifesto variables.json declara uma única página
(variables/). Mas o achado grave estava ao lado dos dois links quebrados.
A tela renderiza quatro botões, herdados por cópia do scaffold CRUD genérico, e os quatro
operam sobre a tabela modulos:
| Botão | URL emitida | Efeito real |
|---|---|---|
| Adicionar | variables/adicionar/ |
página inexistente → redirect |
| Editar | variables/editar/?id=<mod> |
página inexistente → redirect |
| Desativar | ?opcao=status&status=I&id=<mod> |
modulos.status = 'I' — desativa o módulo |
| Excluir | ?opcao=excluir&id=<mod> |
modulos.status = 'D' — exclui o módulo |
interface_excluir_finalizar() (bibliotecas/interface.php) aplica o soft-delete na tabela do
módulo corrente. Um clique em "Excluir" na tela de variáveis do usuarios-perfis apagava o
módulo usuarios-perfis.
Criar as duas páginas faltantes, que era o pedido literal, teria deixado de pé as duas ações destrutivas.
2. Por que os botões não pertencem a esta tela
A tela variables não é um CRUD de módulos. Ela edita as VARIÁVEIS de um módulo:
-
interface-opcaoéalteracoes— ela já é a tela de edição, o que torna o botão "Editar" redundante além de quebrado; -
a inclusão de variável já acontece dentro dela, pelo card
adicionarqueconfiguracao_administracao()renderiza (confirmado no HTML servido:class="card adicionar"); -
desativar ou excluir um módulo é competência do módulo de administração de módulos, não desta tela.
3. Tipo de campo tinymce
O TinyMCE saiu do sistema no req-142 (licenciado, carregado de [REDACTED], com a chave de API
versionada). O tipo de campo continuou chamado tinymce: o operador escolhia "TinyMCE" na lista
e recebia o Quill.
Um tipo de campo descreve o que o campo é — um editor de texto rico —, não quem o fabrica. Enquanto o nome do fornecedor for a chave, cada troca de editor vira ou uma mentira na interface ou uma migração de dados.
Ocorrências mapeadas: bibliotecas/configuracao.php (valor e rótulo), assets/configuracao/configuracao.js
(9 pontos), resources/{pt-br,en}/components/configuracao-campos/ (marcador e classe do campo),
resources/{pt-br,en}/variables.json (rótulo) e a coluna variaveis.tipo.
4. Critérios de aceite
-
A tela
variables/?id=<modulo>não emite nenhum link paraadicionar/,editar/,opcao=statusouopcao=excluir. -
A tela continua respondendo 200 e mantendo o card de inclusão de variável.
-
O tipo de campo aparece como
editor-textono seletor, no componente e no JS. -
Dados existentes com
tipo='tinymce'são migrados, e o valor antigo continua sendo LIDO enquanto a migração não rodou (janela entre deploy e migração). -
Nenhum resíduo do editor licenciado no repositório.