Descrição do Problema / Contexto
Permitir a definição e importação de datas customizadas de criação (data_criacao) e modificação (data_modificacao) a partir dos arquivos de recursos JSON originais (ex: pages.json, layouts, componentes e manifestos JSON dos módulos) para o banco de dados.
Proposta de Alterações Detalhada
1. Mapeamento Condicional no Extrator (atualizacao-dados-recursos.php)
Dentro da função coletarRecursos() em gestor/controladores/agents/arquitetura/atualizacao-dados-recursos.php, para cada loop de coleta de recursos (tanto os globais quanto os de módulos), a array resultante de cada item deve receber as chaves de data apenas se elas existirem na fonte JSON de origem.
-
Regra estrita: Use
isset()para validar a existência da chave no elemento de origem. Se não existir, a chave correspondente de data não deve ser incluída na array resultante (evitar popular comnull). Isso garante que o banco de dados possa aplicar os valores padrãoCURRENT_TIMESTAMPna inserção e não tente sobrescrever registros comNULLdurante atualizações. -
Recursos que devem cobrir esta regra:
-
layouts(globais e módulos) -
componentes/components(globais e módulos) -
paginas/pages(globais e módulos) -
templates(globais e módulos) -
variaveis/variables(globais e módulos) -
ai_prompts(módulos) -
ai_modes(módulos) -
ai_prompts_targets(módulos) -
forms(módulos) -
widgets(módulos)
-
Exemplo conceitual do mapeamento de dados:
$paginaData = [
'id' => $id,
'nome' => $p['name'] ?? $id,
// ... demais campos ...
];
if (isset($p['data_criacao'])) $paginaData['data_criacao'] = $p['data_criacao'];
if (isset($p['data_modificacao'])) $paginaData['data_modificacao'] = $p['data_modificacao'];
$paginas[] = $paginaData;Análise de Segurança no Sincronizador (atualizacoes-banco-de-dados.php)
-
Não são necessárias alterações no atualizador de banco de dados: A função
sincronizarTabela()no arquivoatualizacoes-banco-de-dados.phpjá possui um sistema de detecção de schema dinâmico (SHOW COLUMNS FROM). -
Segurança de Integridade: O script filtra as chaves do payload JSON fazendo interseção com as colunas reais da tabela antes de disparar o SQL. Portanto, se um desenvolvedor definir
"data_criacao"no JSON de uma tabela que não possui fisicamente essa coluna no banco de dados, o sincronizador ignorará o campo de forma silenciosa, eliminando qualquer risco de quebra ou erro de banco.
Validação e Testes
-
Verificação Estática:
-
Rodar
php -l gestor/controladores/agents/arquitetura/atualizacao-dados-recursos.phppara garantir sintaxe válida.
-
-
Validação de Funcionamento (Importação de Datas):
-
Criar um caso de teste (ou ajustar teste existente) na suíte onde um recurso JSON (ex: página ou layout) possui
"data_criacao": "2026-01-01 12:00:00"e verificar se a array resultante do compilador carrega essa chave. -
Verificar que um recurso JSON sem a chave
"data_criacao"não a possui definida na array final (a chave inexiste no array, em vez de sernull).
-
-
Regressão:
-
Executar
composer teste verificar se a suíte permanece verde.
-