Conn2Flow
Navegação das docs

SDD

req-144: Tela de variáveis com ações indevidas sobre módulos e tipo de campo com nome de fornecedor

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…

  • 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-texto ou 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 adicionar que configuracao_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

  1. A tela variables/?id=<modulo> não emite nenhum link para adicionar/, editar/, opcao=status ou opcao=excluir.

  2. A tela continua respondendo 200 e mantendo o card de inclusão de variável.

  3. O tipo de campo aparece como editor-texto no seletor, no componente e no JS.

  4. 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).

  5. Nenhum resíduo do editor licenciado no repositório.

O Futuro é Híbrido: Humano + IA.

O Conn2Flow é a ferramenta. Se você precisa do Arquiteto para desenhar a estratégia da sua empresa usando essa tecnologia...

Contrate Consultoria Especializada