Conn2Flow
Navegação das docs

SDD

Human Request: Correção de Persistência, Preview Mapeado, Simulação Completa e Remoção de Arrobas no Front (req-010)

Esta especificação detalha os ajustes finos necessários para corrigir o salvamento do template_id no banco de dados, solucionar o bug de dados vazios nos campos customizados do…

Esta especificação detalha os ajustes finos necessários para corrigir o salvamento do template_id no banco de dados, solucionar o bug de dados vazios nos campos customizados do preview do widget, garantir fallbacks robustos na simulação Javascript, forçar a atualização da aba de preview ao trocar de modelo, e concluir a limpeza visual de arrobas (@@) em todos os textos explicativos das telas do administrador.


Detalhes das Correções e Ajustes Solicitados

1. Persistência de template_id no fields_schema (Banco de Dados)

  • Problema: O template_id (o identificador do modelo selecionado pelo usuário) não está sendo persistido no backend, pois a tabela publisher_highlights não possui essa coluna no banco de dados.

  • Ajuste:

    • No Frontend (publisher-highlights.js):

    • Ao interceptar o submit do formulário (#_gestor-interface-edit-dados e #_gestor-interface-insert-dados), adicionar a propriedade template_id ao objeto schema serializado no input hidden fields_schema: schema.template_id = $('#template_id').val() || '';

    • Na inicialização da página (hidratar UI), restaurar o valor do select do template a partir do schema: $('#template_id').val(schema.template_id || ''); $('#template_id').dropdown('set selected', schema.template_id || '');

    • No Backend (publisher-highlights.php):

    • Na definição do $schema_inicial (ação adicionar) e no re-preenchimento (ações editar e clonar), garantir o valor padrão 'template_id' => '' na mesclagem de chaves de $fields_schema_decoded.

    • Chamar a função de carregamento das opções do template passando o valor recuperado: publisher_highlights_template_options($fields_schema_decoded['template_id'] ?? null);


2. Correção de Dados Vazios nos Campos Customizados do Preview do Widget

  • Problema: Ao mapear variáveis a campos do publicador, os campos customizados/dinâmicos (como subtitulo, conteudo, etc.) renderizam vazios no preview do widget. Isso ocorre porque o backend no publisher-highlights.widget.php decodifica $row['pp.fields_values'] (que no banco de dados é um array de objetos [{"id": "campo", "value": "valor"}]) e executa array_merge diretamente nele, resultando em chaves numéricas no array de publicação, falhando ao buscar chaves associativas no mapeamento.

  • Ajuste:

    • Em gestor/modulos/publisher-highlights/publisher-highlights.widget.php, dentro da função publisher_highlights_widget_buscar_publicacoes:

    • Antes de mesclar os campos com os dados da página (linhas 218–227), converter a lista de objetos do fields_values em um dicionário associativo no formato ['id_do_campo' => 'valor_do_campo']:

      $campos_originais = json_decode($row['pp.fields_values'] ?? '[]', true);
      $campos_publisher = [];
      if(is_array($campos_originais)){
        foreach($campos_originais as $item_field){
            if(isset($item_field['id']) && isset($item_field['value'])){
                $campos_publisher[$item_field['id']] = $item_field['value'];
            }
        }
      }
    • Realizar o array_merge usando o array $campos_publisher associativo normalizado.


3. Fallbacks Robustos de Simulação no Editor HTML (Simulação Completa)

  • Problema: Ao clicar no botão de Simulação do editor HTML, as variáveis [[item#titulo]] e [[item#resumo]] continuam aparecendo textualmente sem substituição se as divs de simulação correspondentes no DOM não forem encontradas (por exemplo, se o deploy do componente de simulação simplificada ainda não ocorreu no Docker).

  • Ajuste:

    • Em gestor/assets/interface/html-editor-interface.js, na função de simulação publisherVariablesOrSimulation (dentro da substituição das variáveis de item para publisher-highlights):

    • Garantir fallbacks de texto estático diretamente no Javascript para todos os tipos se a lista simulItems retornar vazia (length 0):

      • Se fieldType === 'image', retornar uma URL de imagem picsum padrão: 'https://picsum.photos/seed/highlights/800/450'.

      • Se fieldType === 'url', retornar '#' ou 'javascript:void(0);'.

      • Se fieldType === 'date', retornar uma data simulada '27/05/2026'.

      • Para outros tipos (como text ou textarea), retornar um texto simulado apropriado (ex: 'Título Simulado de Destaque' ou 'Resumo simulado curto e direto do bloco de destaques.') em vez do match bruto da variável.

    • Isso garante que a simulação sempre funcione 100% no preview interno, independentemente do estado do DOM.


4. Forçar Atualização do Preview ao Alterar o template_id

  • Problema: Ao selecionar ou alterar o modelo visual de destaque (#template_id) na interface de edição, o preview interno não recarrega automaticamente se a aba "Pré-Visualização" estiver ativa.

  • Ajuste:

    • Em publisher-highlights.js, no tratador do evento change do elemento $template (#template_id):

    • Invocar a função global de atualização do editor HTML para recarregar o estado do editor e do preview: if (typeof window.html_editor_refresh_preview === 'function') { window.html_editor_refresh_preview(); }


5. Limpeza Final de Arrobas (@@) em Textos Explicativos do Admin

  • Problema: Títulos e explicações estáticas nas páginas do admin continuam exibindo o formato @[[item#...]]@.

  • Ajuste:

    • Remover os arrobas de todas as variáveis e placeholders de exibição em textos estáticos, explicações e títulos nos arquivos HTML das páginas de adicionar, editar e clonar (idiomas pt-br e en) do módulo publisher-highlights:

    • Mudar Mapeamento de Variáveis @[[item#...]]@ -> Mapeamento de Variáveis [[item#...]]

    • Mudar Variáveis do Modelo @[[item#...]]@ -> Variáveis do Modelo [[item#...]]

    • Mudar placeholders @[[item#nome_da_variavel]]@ -> placeholders [[item#nome_da_variavel]]

    • Executar a compilação do Core após os ajustes nos HTMLs físicos para atualizar as sementes em gestor/db/data/PaginasData.json e o banco de dados.

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