Conn2Flow
Navegação das docs

SDD

Requisição 203 — Segregação de Recursos Globais vs Multilíngues (Sementes sem Idioma na Raiz de resources/)

Origem: Engenheiro Chefe Humano, 2026-10-01. Lotes Vinculados: BATCH-211 (Core: Migração de sementes sem idioma para a raiz de resources/, suporte a language_agnostic no…

Origem: Engenheiro Chefe Humano, 2026-10-01. Lotes Vinculados: BATCH-211 (Core: Migração de sementes sem idioma para a raiz de resources/, suporte a language_agnostic no compilador e limpeza de duplicatas). Status: complete (2026-10-01; homologação técnica concluída pelo Executor) Repositório: [REDACTED]


1. Contexto & Diagnóstico

Na REQ-202 (BATCH-210), todas as 8 tabelas centrais foram migradas para autoria em gestor/resources/. No entanto, foram criadas réplicas dentro de gestor/resources/pt-br/ e gestor/resources/en/ para todas as tabelas indiscriminadamente.

Diagnóstico de Domínio:

  1. Recursos Multilíngues (com coluna language e textos traduzíveis):

    • layouts (layouts.json)

    • pages (pages.json)

    • components (components.json)

    • templates (templates.json)

    • variables (variables.json)

    • modulos (modules.json)

    • modulos_grupos (module_groups.json)

    • modulos_operacoes (module_operations.json)

    • usuarios_perfis (user_profiles.json) Devem permanecer obrigatoriamente dentro de gestor/resources/{lang}/.

  2. Recursos Globais / Agnósticos de Idioma (sem coluna language no schema):

    • usuarios (users.json) — Contas de usuários são globais e não têm idioma na tabela usuarios.

    • usuarios_perfis_modulos (user_profiles_modules.json) — Vínculos N:N entre perfis e módulos; puramente estruturais.

    • usuarios_perfis_modulos_operacoes (user_profiles_modules_operations.json) — Vínculos N:N entre perfis e operações; puramente estruturais.

    • categorias (categories.json) — Categorias estruturais sem coluna language. Devem residir diretamente na raiz de gestor/resources/, sem duplicação em pastas de idiomas.


2. Objetivos Arquiteturais

  1. Mover Sementes Globais para a Raiz de resources/:

    • gestor/resources/users.json

    • gestor/resources/user_profiles_modules.json

    • gestor/resources/user_profiles_modules_operations.json

    • gestor/resources/categories.json

    • Remover as cópias redundantes de gestor/resources/pt-br/ e gestor/resources/en/.

  2. Atualização do Contrato em tables_config.json:

    • Configurar language_agnostic: true (ou scope: "global") nas 4 tabelas agnósticas.

    • Ajustar o caminho do metadata_file para apontar diretamente na raiz de resources/ (sem prefixo de idioma).

  3. Adaptação do Compilador (atualizacao-dados-recursos.php):

    • Atualizar a função lerMetadadosDinamicos() e o coletor dinâmico para carregar arquivos agnósticos de idioma uma única vez a partir da raiz de resources/, sem iterar sobre $languages.

    • Garantir que a compilação gere os Data.json correspondentes com 100% de integridade e sem duplicações de registros.

  4. Atualização de resources.map.php:

    • Manter em resources.map.php apenas os recursos efetivamente multilíngues (layouts, pages, components, templates, variables, modules, module_groups, module_operations, user_profiles).


3. Especificação das Tabelas em gestor/resources/tables_config.json

{
  "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,
      "language_agnostic": true,
      "metadata_file": "users.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,
      "language_agnostic": 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,
      "language_agnostic": 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,
      "language_agnostic": true,
      "metadata_file": "categories.json"
    },
    "deletar": []
  }
}

4. Critérios de Aceite & Checklist de Validação

  • [ ] Arquivos users.json, user_profiles_modules.json, user_profiles_modules_operations.json e categories.json localizados exclusivamente na raiz de gestor/resources/.

  • [ ] Subpastas gestor/resources/pt-br/ e gestor/resources/en/ limpas (sem os 4 arquivos agnósticos).

  • [ ] tables_config.json declara language_agnostic: true para as 4 tabelas.

  • [ ] Compilador atualizacao-dados-recursos.php lê os arquivos globais na raiz sem iterar por idioma.

  • [ ] php cli/c2f.php resources:sync compila perfeitamente todos os Data.json sem duplicação de dados.

  • [ ] Suíte de testes PHPUnit focada (incluindo testes de compilação seletiva e agnóstica de idioma) passa com 100% de sucesso.

  • [ ] git diff --check limpo.

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