Conn2Flow
Navegação das docs

SDD

req-084: Preservação de Datas Customizadas (data_criacao/data_modificacao) na Compilação de Recursos

Exemplo conceitual do mapeamento de dados: php $paginaData = [ 'id' => $id, 'nome' => $p['name'] ?? $id, // ... demais campos ... ];

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 com null). Isso garante que o banco de dados possa aplicar os valores padrão CURRENT_TIMESTAMP na inserção e não tente sobrescrever registros com NULL durante 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 arquivo atualizacoes-banco-de-dados.php já 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

  1. Verificação Estática:

    • Rodar php -l gestor/controladores/agents/arquitetura/atualizacao-dados-recursos.php para garantir sintaxe válida.

  2. 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 ser null).

  3. Regressão:

    • Executar composer test e verificar se a suíte permanece verde.

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