Conn2Flow
Navegação das docs

SDD

Requisição 202 — Autoria 100% em resources (Fim dos Arquivos Estáticos em db/data) e Compilação Seletiva/Otimização de Tailwind

Origem: Engenheiro Chefe Humano, 2026-10-01. Lotes Vinculados: BATCH-210 (Core: Migração de sementes, tables_config.json, gerador determinístico, flags…

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/:

  1. ModulosData.json (modulos)

  2. ModulosGruposData.json (modulos_grupos)

  3. ModulosOperacoesData.json (modulos_operacoes)

  4. UsuariosData.json (usuarios)

  5. UsuariosPerfisData.json (usuarios_perfis)

  6. UsuariosPerfisModulosData.json (usuarios_perfis_modulos)

  7. UsuariosPerfisModulosOperacoesData.json (usuarios_perfis_modulos_operacoes)

  8. 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

  1. Sementes Autorais Multi-Idioma:

    • Criar os arquivos de semente em gestor/resources/pt-br/ e gestor/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.php para registrar os novos arquivos no mapa de idiomas.

  2. Contrato Declarativo em tables_config.json:

    • Declarar todas as 8 tabelas em gestor/resources/tables_config.json usando sync_resources: true, strategy: "natural_key" e metadata_file.

    • Blindagem de Produção: Configurar insert_only: true e preserve_on_user_modified para usuarios (preservando credenciais, hashes de senha e dados de produção).

    • Configurar natural_key_columns canô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"]

  3. 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.json reflita perfeitamente as novas tabelas e regras de preservação.

Frente B: Compilação Granular/Seletiva & Cache do Tailwind CSS

  1. 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.php para o subprocesso PHP.

  2. Otimização de Cache do Tailwind CSS:

    • Assegurar que tailwind_recursos_compilar() consulte o manifest .tailwind-build-manifest.json e pule imediatamente execuções de tailwindcss para 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/ e gestor/resources/en/ com conteúdo correspondente aos Data.json originais.

  • [ ] gestor/resources/resources.map.php atualizado com as novas chaves.

  • [ ] gestor/resources/tables_config.json atualizado com as 8 tabelas e regras de preservação.

  • [ ] Execução de php gestor/controladores/agents/arquitetura/atualizacao-dados-recursos.php compila todos os 8 arquivos em gestor/db/data/ com integridade idêntica.

  • [ ] ./c2f resources:sync executa sem erros e aceita --only=<alvo> e --skip-css.

  • [ ] Teste unitário e de integração do pipeline de recursos aprovado.

  • [ ] git diff limpo e sem resíduos não determinísticos.

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