Origem: Engenheiro Chefe Humano, 2026-10-01.
Lotes Vinculados: BATCH-210 (Core: Migração de sementes, tables_config.json, gerador determinístico, flags --only/--skip-css/--resource e otimização Tailwind).
Status: complete (2026-10-01; homologação técnica concluída pelo Executor)
Repositório: [REDACTED]
1. Contexto & Motivação
Atualmente, o ecossistema Conn2Flow adota o princípio de que resources/ é a Fonte Única da Verdade para autoria, enquanto gestor/db/data/ serve como artefato compilado determinístico consumido pelo instalador e pelo pipeline de migrações (db:update).
A maioria das tabelas principais (PaginasData.json, ComponentesData.json, LayoutsData.json, VariaveisData.json, PromptsIaData.json, etc.) já é compilada automaticamente. No entanto, 8 tabelas centrais ainda permanecem como arquivos JSON estáticos mantidos manualmente em gestor/db/data/:
-
ModulosData.json(modulos) -
ModulosGruposData.json(modulos_grupos) -
ModulosOperacoesData.json(modulos_operacoes) -
UsuariosData.json(usuarios) -
UsuariosPerfisData.json(usuarios_perfis) -
UsuariosPerfisModulosData.json(usuarios_perfis_modulos) -
UsuariosPerfisModulosOperacoesData.json(usuarios_perfis_modulos_operacoes) -
CategoriasData.json(categorias)
Além disso, os comandos de compilação de recursos (./c2f resources:sync, project:update-all, manager:update-all) forçam uma reconstrução monolítica e acionam o pipeline de Tailwind CSS para todo o sistema, tornando a iteração pesada e provocando timeouts em agentes durante alterações pontuais de dados.
2. Objetivos Arquiteturais
Frente A: Autoria 100% em resources/ & Compilação Determinística
-
Sementes Autorais Multi-Idioma:
-
Criar os arquivos de semente em
gestor/resources/pt-br/egestor/resources/en/:-
modules.json -
module_groups.json -
module_operations.json -
users.json -
user_profiles.json -
user_profiles_modules.json -
user_profiles_modules_operations.json -
categories.json
-
-
Atualizar
gestor/resources/resources.map.phppara registrar os novos arquivos no mapa de idiomas.
-
-
Contrato Declarativo em
tables_config.json:-
Declarar todas as 8 tabelas em
gestor/resources/tables_config.jsonusandosync_resources: true,strategy: "natural_key"emetadata_file. -
Blindagem de Produção: Configurar
insert_only: trueepreserve_on_user_modifiedparausuarios(preservando credenciais, hashes de senha e dados de produção). -
Configurar
natural_key_columnscanônicas:-
modulos:["language", "id"] -
modulos_grupos:["language", "id"] -
modulos_operacoes:["language", "modulo_id", "id"] -
usuarios:["id"] -
usuarios_perfis:["language", "id"] -
usuarios_perfis_modulos:["perfil", "modulo"] -
usuarios_perfis_modulos_operacoes:["perfil", "operacao"] -
categorias:["id"]
-
-
-
Pipeline do Compilador (
atualizacao-dados-recursos.php):-
Remover os 8 arquivos estáticos de qualquer lista de exclusão/reserva manual.
-
Garantir ordenação estável (por chave primária natural) e integridade dos JSONs gerados em
gestor/db/data/. -
Garantir que
gestor/db/data/schema-metadata.jsonreflita perfeitamente as novas tabelas e regras de preservação.
-
Frente B: Compilação Granular/Seletiva & Cache do Tailwind CSS
-
Flags CLI no Gerador e no
c2f resources:sync:-
Suporte a
--only=<alvo>(ex:--only=variaveis,--only=paginas,--only=modulos,--only=usuarios). -
Suporte a
--skip-css(ignora a etapa 3 de compilação do Tailwind para builds ultra-rápidos de dados). -
Suporte a
--resource=<id>(restringe a compilação a um único componente/página/layout). -
Repasse transparente de parâmetros CLI de
ResourcesSyncCommand.phppara o subprocesso PHP.
-
-
Otimização de Cache do Tailwind CSS:
-
Assegurar que
tailwind_recursos_compilar()consulte o manifest.tailwind-build-manifest.jsone pule imediatamente execuções detailwindcsspara recursos cujos checksums de template e classes não foram alterados.
-
3. Especificação dos Schemas de Semente em resources/
3.1. modules.json (gestor/resources/{lang}/modules.json)
[
{
"modulo_grupo_id": "administracao-sistema",
"nome": "Módulos",
"id": "modulos",
"titulo": null,
"icone": "cog",
"icone_tailwind": "blocks",
"icone2": null,
"icone2_tailwind": null,
"nao_menu_principal": null,
"plugin": null,
"host": null,
"status": "A"
}
]3.2. module_groups.json (gestor/resources/{lang}/module_groups.json)
[
{
"nome": "Bibliotecas",
"id": "bibliotecas",
"host": null,
"status": "A",
"ordemMenu": null
}
]3.3. module_operations.json (gestor/resources/{lang}/module_operations.json)
[
{
"modulo_id": "admin-paginas",
"nome": "Modificar Permissão da Página",
"id": "modificar-permissao-da-pagina",
"operacao": "permissao-pagina",
"status": "A"
}
]3.4. users.json (gestor/resources/{lang}/users.json)
[
{
"nome_conta": "Administrador",
"nome": "Administrador",
"id": "administrador",
"usuario": "admin",
"senha": "$argon2i$v=19$m=65536,t=4,p=1$N0pjcGRSLzBic0lEa283cQ$sJ+NqlPTDoZxCU95GZggRIxXEMFihzbm5Fc8aiE5FQY",
"email": "admin@admin",
"primeiro_nome": "Administrador",
"ultimo_nome": null,
"nome_do_meio": null,
"status": "A",
"email_confirmado": null,
"gestor": null,
"gestor_perfil": null
}
]3.5. user_profiles.json (gestor/resources/{lang}/user_profiles.json)
[
{
"nome": "Administradores",
"id": "administradores",
"padrao": null,
"status": "A"
},
{
"nome": "Consumidores",
"id": "consumidores",
"padrao": true,
"status": "A"
}
]3.6. user_profiles_modules.json (gestor/resources/{lang}/user_profiles_modules.json)
[
{
"perfil": "administradores",
"modulo": "dashboard"
}
]3.7. user_profiles_modules_operations.json (gestor/resources/{lang}/user_profiles_modules_operations.json)
[
{
"perfil": "administradores",
"operacao": "modificar-permissao-da-pagina"
}
]3.8. categories.json (gestor/resources/{lang}/categories.json)
[
{
"nome": "Site",
"id": "site",
"id_modulos": null,
"id_categorias_pai": null,
"plugin": null,
"status": "A"
}
]4. Declaração em gestor/resources/tables_config.json
{
"modulos": {
"nome": "modulos",
"id": "id",
"id_numerico": "id_modulos",
"config": {
"strategy": "natural_key",
"natural_key_columns": ["language", "id"],
"preserve_on_user_modified": [],
"insert_only": false,
"sync_resources": true,
"metadata_file": "modules.json"
},
"deletar": []
},
"modulos_grupos": {
"nome": "modulos_grupos",
"id": "id",
"id_numerico": "id_modulos_grupos",
"config": {
"strategy": "natural_key",
"natural_key_columns": ["language", "id"],
"preserve_on_user_modified": [],
"insert_only": false,
"sync_resources": true,
"metadata_file": "module_groups.json"
},
"deletar": []
},
"modulos_operacoes": {
"nome": "modulos_operacoes",
"id": "id",
"id_numerico": "id_modulos_operacoes",
"config": {
"strategy": "natural_key",
"natural_key_columns": ["language", "modulo_id", "id"],
"preserve_on_user_modified": [],
"insert_only": false,
"sync_resources": true,
"metadata_file": "module_operations.json"
},
"deletar": []
},
"usuarios": {
"nome": "usuarios",
"id": "id",
"id_numerico": "id_usuarios",
"config": {
"strategy": "natural_key",
"natural_key_columns": ["id"],
"preserve_on_user_modified": ["senha", "email", "nome", "usuario", "status"],
"insert_only": true,
"sync_resources": true,
"metadata_file": "users.json"
},
"deletar": []
},
"usuarios_perfis": {
"nome": "usuarios_perfis",
"id": "id",
"id_numerico": "id_usuarios_perfis",
"config": {
"strategy": "natural_key",
"natural_key_columns": ["language", "id"],
"preserve_on_user_modified": [],
"insert_only": false,
"sync_resources": true,
"metadata_file": "user_profiles.json"
},
"deletar": []
},
"usuarios_perfis_modulos": {
"nome": "usuarios_perfis_modulos",
"id": "id",
"id_numerico": "id_usuarios_perfis_modulos",
"config": {
"strategy": "natural_key",
"natural_key_columns": ["perfil", "modulo"],
"preserve_on_user_modified": [],
"insert_only": false,
"sync_resources": true,
"metadata_file": "user_profiles_modules.json"
},
"deletar": []
},
"usuarios_perfis_modulos_operacoes": {
"nome": "usuarios_perfis_modulos_operacoes",
"id": "id",
"id_numerico": "id_usuarios_perfis_modulos_operacoes",
"config": {
"strategy": "natural_key",
"natural_key_columns": ["perfil", "operacao"],
"preserve_on_user_modified": [],
"insert_only": false,
"sync_resources": true,
"metadata_file": "user_profiles_modules_operations.json"
},
"deletar": []
},
"categorias": {
"nome": "categorias",
"id": "id",
"id_numerico": "id_categorias",
"config": {
"strategy": "natural_key",
"natural_key_columns": ["id"],
"preserve_on_user_modified": [],
"insert_only": false,
"sync_resources": true,
"metadata_file": "categories.json"
},
"deletar": []
}
}5. Critérios de Aceite & Checklist de Validação
-
[ ] Sementes migradas para
gestor/resources/pt-br/egestor/resources/en/com conteúdo correspondente aos Data.json originais. -
[ ]
gestor/resources/resources.map.phpatualizado com as novas chaves. -
[ ]
gestor/resources/tables_config.jsonatualizado com as 8 tabelas e regras de preservação. -
[ ] Execução de
php gestor/controladores/agents/arquitetura/atualizacao-dados-recursos.phpcompila todos os 8 arquivos emgestor/db/data/com integridade idêntica. -
[ ]
./c2f resources:syncexecuta sem erros e aceita--only=<alvo>e--skip-css. -
[ ] Teste unitário e de integração do pipeline de recursos aprovado.
-
[ ]
git difflimpo e sem resíduos não determinísticos.