Origem: REQ-085 do conn2flow-site (sdd/human-requests/release-hardening/req-085-correcoes-integradas-homologacao-site-core-hostmanager.md), aprovada pelo Engenheiro Chefe Humano em 2026-10-01 e atualizada no commit df21f40. A REQ-085 nomeia este repositório para os ajustes de usuarios-perfis e admin-paginas; esta requisição é o intake da parte que cabe ao core.
Lote Vinculado: BATCH-212 (conn2flow core). Lote irmão: BATCH-079 no conn2flow-site.
Status: in-review.
Repositório: [REDACTED]
Modo: autonomo_monitorado.
1. Contexto
A homologação do portal do cliente no Lab ([REDACTED]) mostrou quatro defeitos que só o core resolve:
-
Sugestões da página inicial sempre visíveis (
usuarios-perfis): a caixa#pagina-inicial-suggestionstem o atributohidden, mas odisplaydo Fomantic (.ui.menu) vence o atributo. A caixa aparece aberta sobre o formulário e cobre os botões. -
Mapeamento de layout por perfil sobrescreve (
admin-paginas/publisher-pages, req-196): o JSON depaginas.layouts_users_profilesera{layout: perfil}. Dar o mesmo layout a um segundo perfil apagava o primeiro. -
Página sob layout alternativo sai sem o CSS do layout: a página bundle (
tailwind_bundle) descarta o sidecar do layout, e o bundle foi compilado só com o layout padrão. Sob o layout trocado por perfil, as classes dele ficam sem regra. -
A API de sistema não informa a versão instalada: quem orquestra uma frota ([REDACTED] do
conn2flow-site) não tem como saber de onde cada instalação parte.
2. Escopo
Item 1 — Popup de sugestões (usuarios-perfis)
-
Componente
home-page-autocomplete(pt-br e en): a caixa e o botão "limpar" usam o partransition hiddendo Fomantic, além do atributohidden. -
usuarios-perfis.js: abrir, fechar ao escolher, ao clicar fora e noEscalternam classe e atributo juntos.
Item 2 — Mapa indexado por perfil
-
paginas.layouts_users_profilespassa a{perfil: layout}. Perfil repetido no formulário fica com a primeira linha. -
Leitura única em
gestor_layouts_perfis_mapa()(bibliotecas/gestor.php), usada pelo roteador, pelo formulário e pelos compiladores. -
Migração Phinx inverte os registros gravados no formato antigo; registro já no formato novo, ou ambíguo, não é tocado.
Item 3 — Compilação multi-layout
-
css:rebuild(css-regenerar.php): página com mapeamento é compilada com o HTML dela, o do layout padrão e o de cada layout alternativo, lidos do banco, num CSS só; entra no escopo mesmo semuser_modified. -
Build offline (
tailwind-recursos.php): página cujo manifesto declaralayouts_users_profilesrecebe os layouts que existirem na árvore como fontes. -
O CSS gerado começa com o marcador
/*! c2f-layouts:a,b */. O runtime usa o CSS da página sozinho (modo bundle) só quando o layout em uso está no marcador; layout trocado e ainda não compilado mantém o sidecar do layout.
Item 4 — action=version em /_api/system/update
-
Autenticada como as demais ações; devolve
versao($_GESTOR['versao']).
3. Fora de escopo
-
Página bundle sem mapeamento editada online: o
css:rebuildcontinua compilando só utilities para ela (comportamento anterior; achado registrado no BATCH-212). -
Listagens e demais telas de
usuarios-perfis.
4. Critérios de aceite
-
A caixa de sugestões nasce fechada, abre sob o campo ao digitar e fecha ao escolher, ao clicar fora e no
Esc. -
Dois perfis recebem o mesmo layout na mesma página e os dois pares são gravados e relidos.
-
Registros no formato antigo são convertidos pela migração.
-
Página mapeada, depois do
css:rebuild, renderiza sob o layout padrão e sob o alternativo com as classes dos dois. -
action=versionresponde a versão instalada com autenticação. -
PHPUnit, Vitest e pipeline do projeto local com exit 0.