Conn2Flow
Navegação das docs

SDD

Human Request: Correções Visuais, Simulação, Mapeamento de Variáveis e Fallback (req-006)

Durante a validação visual e de fluxo do módulo publisher-highlights, foram identificados problemas de consistência no preenchimento de dropdowns, ausência de atualização no…

Durante a validação visual e de fluxo do módulo publisher-highlights, foram identificados problemas de consistência no preenchimento de dropdowns, ausência de atualização no visualizador iframe, falha na simulação de variáveis, problemas de espaçamento no mapeamento de variáveis, um erro conceitual na exposição dos campos do publicador e a necessidade de suportar um bloco de exibição alternativa (fallback) caso nenhuma publicação atenda aos critérios.


Detalhes das Correções e Melhorias Solicitadas

1. Dropdown de "Itens selecionados (ordem)" Vazio na Regra Manual

  • Problema: O dropdown .ui.multiple.search.selection.dropdown para a regra de alimentação Manual exibe uma lista vazia, impedindo a seleção de páginas do publicador selecionado, mesmo quando há registros ativos correspondentes no banco de dados.

  • Ajuste:

    • Em gestor/modulos/publisher-highlights/publisher-highlights.php, nas funções de AJAX publisher_highlights_ajax_publisher_pages_search e publisher_highlights_ajax_publisher_pages_fetch, ajustar a consulta SQL.

    • Em vez de fazer uma seleção isolada na tabela paginas (onde o publisher_id pode não estar preenchido ou estar desalinhado), realizar um INNER JOIN com a tabela publisher_pages usando a correlação pp.page_id = p.id AND pp.language = p.language.

    • Filtrar no WHERE usando pp.publisher_id para garantir o vínculo correto da página ao publicador e verificar o status ativo (p.status = 'A') na linguagem atual.


2. Atualização Automática do Visualizador Iframe ao Mudar o Modelo (Recurso)

  • Problema: Ao selecionar um novo modelo no select template_id, o editor de código carrega o HTML e o CSS corretos nos editores CodeMirror, mas o visualizador (iframe) correspondente não atualiza a renderização de forma automática.

  • Ajuste:

    • Investigar os gatilhos no arquivo gestor/assets/interface/html-editor-interface.js.

    • Garantir que, após o CodeMirror atualizar seu valor a partir da resposta do AJAX de carregamento de template (template-load), a função de atualização do visualizador (previewHtml()) seja chamada imediatamente.


3. Simulação de Variáveis no Visualizador para Destaques (publisher-highlights)

  • Problema: Ao acionar a aba/botão "Simulação" no editor de HTML, as variáveis do tipo loop de destaques (@[[item#VAR_NAME]]@) não são preenchidas com dados fictícios. A lógica de simulação atual foi feita estritamente para o alvo publisher (com sintaxe [[publisher#TIPO#ID]]).

  • Ajuste:

    • Em gestor/assets/interface/html-editor-interface.js, na função publisherVariablesOrSimulation (ou criando um método auxiliar), estender a lógica para dar suporte ao alvo publisher-highlights.

    • Se a simulação estiver ativa e o alvo for destaques:

      1. Localizar o bloco de loop <!-- item < --> ... <!-- item > -->. Se existir, replicá-lo dinamicamente count vezes (valor do campo de quantidade máxima ou padrão de 3).

      2. Acessar o mapeamento de variáveis ativo (variable_mapping), que pode ser lido do input oculto fields_schema.

      3. Para cada variável @[[item#VAR_NAME]]@ encontrada no template repetido, buscar o campo do publicador correspondente (fieldId).

      4. Obter o tipo do campo do publicador no schema carregado (publisher_fields_schema.fields) e extrair uma massa de dados fictícia aleatória (ex: .hep-simulation-${tipo} .item). Caso o tipo não seja encontrado ou a variável não esteja mapeada, fazer uma detecção baseada no nome (ex: nomes com image usam .hep-simulation-image, nomes com titulo usam .hep-simulation-text, etc.).


4. Segmento Fomantic UI e Espaçamento no Mapeamento de Variáveis

  • Problema: O container onde as variáveis e botões de mapeamento são exibidos não possui fundo branco (diferindo de outros componentes do painel), e os botões dinâmicos (.item-var e .publisher-field) aparecem sem margens, colados uns aos outros.

  • Ajuste:

    • No arquivo HTML/PHP que define a interface (ver PaginasData.json), alterar as classes do container .template-options-wrapper de ui segment basic fitted para ui segment (removendo basic e fitted) para dar borda e fundo branco coerentes.

    • No JavaScript do mapeamento (gestor/modulos/publisher-highlights/publisher-highlights.js), aplicar margens inferiores e laterais (ex: classe adicional do Fomantic UI ou estilo inline dinâmico com margin-bottom: 6px; margin-right: 6px;) aos botões das variáveis e campos do publicador.


5. Ajuste de Margens e Espaçamento nos Auxiliares ui label

  • Problema: As etiquetas informativas/descritivas (ui label posicionadas logo abaixo dos cabeçalhos dos campos, como em "Itens selecionados (ordem)" e "Modelo (Recurso)") estão visualmente coladas nos selects e títulos adjacentes.

  • Ajuste:

    • Adicionar margem superior e inferior nestas etiquetas descritivas para garantir um layout mais limpo e legível (ex: aplicar estilo ou classe com margin: 8px 0; display: block;).


6. Correção Conceitual dos Campos Disponíveis para Mapeamento

  • Problema: O sidebar de Mapeamento exibe todas as variáveis cruas pertencentes ao modelo do publicador. Conceitualmente, deveriam ser exibidos apenas os campos reais do publicador instanciado que estão ativamente mapeados com a flag linked_template: true (e os campos automáticos sempre disponíveis: titulo, url, data).

  • Ajuste:

    • Em gestor/modulos/publisher-highlights/publisher-highlights.php, na função publisher_highlights_ajax_publisher_load, acessar o JSON fields_schema do publicador de origem.

    • Ler o array template_map e filtrar a coleção de campos disponíveis (fields) de forma a reter apenas os campos cujo id esteja associado no template_map com a propriedade linked_template igual a true (ou truthy).

    • Retornar no JSON de resposta (campos) apenas esta lista de campos ativamente vinculáveis, além de manter os campos padrão (titulo, url, data).


7. Suporte ao Bloco no-item para Mensagem de Fallback

  • Problema: Quando dinamicamente não houver nenhuma publicação correspondente às regras configuradas (ex: publicador de notas sem nenhum registro ativo), o widget deve exibir um conteúdo amigável definido no editor em vez de renderizar um bloco em branco ou quebrar o layout.

  • Ajuste:

    • Suportar no engine de renderização uma marcação delimitadora específica: <!-- no-item < --> HTML Alternativo <!-- no-item > -->.


8. Atualização dos 12 Templates Físicos de Destaques

  • Problema: Com a adição do suporte a mensagens de fallback para blocos sem itens, é necessário incluir um layout padrão de fallback nos templates físicos do sistema.

  • Ajuste:

    • Atualizar todos os 12 templates físicos (6 em gestor/modulos/publisher-highlights/resources/pt-br/templates/ e suas 6 cópias em inglês em gestor/modulos/publisher-highlights/resources/en/templates/).

    • Inserir o bloco <!-- no-item < -->...<!-- no-item > --> contendo uma mensagem de fallback adequada (ex: <h3>Nenhuma publicação encontrada</h3> / <h3>No publications found</h3>) e estilizada de acordo com o design do template correspondente.

    • Atualizar o arquivo de metadados publisher-highlights.json, limpando os checksums das chaves html, css e combined dos templates alterados para permitir a regeneração/compilação dos hashes e deploy atualizado.


9. Processamento do Bloco no-item no Engine do Widget

  • Problema: O arquivo de renderização do widget precisa identificar se existem ou não publicações para decidir qual bloco exibir e qual remover da saída final.

  • Ajuste:

    • No arquivo gestor/modulos/publisher-highlights/publisher-highlights.widget.php:

    • Caso a busca por publicações retorne vazia (empty($publicacoes)):

      1. Verificar a existência do bloco no-item no template usando regex.

      2. Se existir, remover completamente o bloco delimitador de loop item do template.

      3. Extrair o conteúdo interno de no-item e substituir a marcação por este conteúdo (removendo as tags de comentário delimitadoras).

      4. Retornar este HTML resultante junto do CSS correspondente.

      5. Se não existir o bloco no-item, retornar string vazia ''.

    • Caso existam publicações:

      1. Remover inteiramente o bloco no-item (incluindo as tags delimitadoras de comentário) do template.

      2. Executar a repetição e substituição de variáveis no bloco item normalmente como já implementado.

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