Governança e curadoria de Traits
7 minute read
Traits formam uma biblioteca pública de toda a instalação. As permissões de um dataset controlam as Medições que usam um Trait; elas não transformam a definição do Trait em um recurso privado do dataset. A governança de Traits protege tanto o significado científico quanto todos os datasets que reutilizam a definição.
Instalação e atualização
Em uma instalação nova, escolha os locales de interface e de conteúdo durante
a configuração; a tradução assistida permanece desabilitada até que o
administrador configure explicitamente um provedor. Depois de atualizar, rode
as migrations, php artisan locales:audit, limpe o cache de configuração e
reinicie os workers da fila. A migration marca os Traits existentes como
válidos, registra o primeiro superadministrador como criador quando houver e
cria as tabelas de governança e revisão de duplicações; não há backfill separado
para Traits.
Depois da instalação, o superadministrador pode atribuir Curador de Traits no perfil de um usuário pleno. Os curadores passam então a revisar a biblioteca compartilhada. Configure os serviços opcionais de tradução, Tropicos e e-mail conforme a Configuração administrativa.
Ciclo de vida do Trait
Cada Trait possui um criador e um status:
- válido (
valid): definição ativa, disponível para novas Medições; - duplicado (
duplicate): alias consolidado em outro Trait, indicado porcanonical_trait_id; - descontinuado (
deprecated): preservado para proveniência, mas não recomendado para novos usos.
Excluir um Trait sem uso pertencente ao próprio usuário remove o registro definitivamente quando não há usos nem dependências protegidas. Isso também vale para a exclusão normal em lote. As demais exclusões permitidas arquivam o Trait com soft delete, mantendo relações e histórico para possível restauração.
Ao consolidar Traits duplicados, Medições, formulários, referências, tags, tipos de objeto e categorias compatíveis são reconciliados com o Trait mantido. O Trait antigo permanece como alias duplicado. Uma importação de Medições que use esse alias é redirecionada ao Trait canônico.
Quem pode fazer o quê
| Perfil | Permissões sobre Traits |
|---|---|
| Usuário registrado | Consulta Traits permitidos pela instalação; não pode criar nem fazer curadoria. |
| Usuário pleno | Cria Traits; examina um Trait individual para possíveis duplicações; sugere pares duplicados aos curadores. |
| Criador do Trait | Edita diretamente seu Trait válido enquanto ele não estiver em uso, ou enquanto todas as Medições que o utilizam pertencerem a datasets nos quais o criador é administrador. Exclui definitivamente seu próprio Trait quando não houver Medições, formulários, Traits dependentes, aliases ou outras referências protegidas. |
| Curador de Traits | Faz a curadoria da biblioteca pública de toda a instalação: edita Traits globalmente, revisa sugestões, varre toda a biblioteca, registra decisões de não duplicação, consolida duplicações, arquiva Traits permitidos, restaura Traits arquivados e exclui explicitamente Traits isolados. |
| Superadministrador | Possui os poderes de curadoria e atribui ou remove a habilidade Curador de Traits no perfil de usuários plenos. |
No model-index de Traits, a exclusão normal remove automaticamente de forma definitiva um Trait isolado pertencente ao usuário que executa a ação. Para registros de outros criadores, curadores e administradores precisam marcar explicitamente Excluir definitivamente os Traits permitidos; sem essa opção, a exclusão permanece recuperável. Cada registro selecionado é verificado individualmente, e Traits protegidos são recusados.
O model-index de Traits separa Traits ativos, Traits duplicados mesclados, Traits descontinuados e Traits arquivados por soft delete. Aliases mesclados recebem uma marca visível e apontam para o Trait canônico. A quantidade de Medições exibida na lista de Traits conta todas as Medições ligadas, pois a biblioteca de Traits é pública; ao abrir esse total, as regras de acesso dos datasets continuam válidas, portanto o usuário pode visualizar menos registros que o total público.
Usuários plenos podem selecionar Traits arquivados no model-index e abrir a
definição arquivada. Esse acesso somente para leitura explica uma colisão de
importação com um export_name reservado; o resultado da importação também
informa o id do Trait arquivado. Isso não concede permissão de restauração ou
curadoria. Na visão arquivada, curadores e administradores podem restaurar os
registros selecionados ou excluir definitivamente os elegíveis. O criador pode
excluir seu próprio Trait legado, arquivado e isolado na página de detalhes.
Usuários registrados continuam vendo somente Traits ativos.
Administrar um projeto ou dataset não torna automaticamente o usuário um curador de Traits. A administração dos datasets, entretanto, participa da regra do criador: ele pode corrigir diretamente um Trait em uso somente quando administra todos os datasets que contêm suas Medições. Quando outros datasets dependem da definição, a correção deve ser conduzida por um curador de Traits.
Alterar ou acrescentar categorias pode mudar o significado de Medições categóricas existentes. Categorias já utilizadas em Medições somente podem ser redefinidas ou reordenadas por um curador de Traits.
Revisar possíveis Traits duplicados
Usuários plenos podem abrir Medições → Revisar possíveis traits duplicados, buscar um Trait por export name, nome ou descrição e compará-lo com os registros sugeridos. A comparação usa nomes e descrições multilíngues e exige que os Traits tenham o mesmo tipo. Traits numéricos podem ser apresentados mesmo com unidades diferentes: unidades podem ser convertidas e, portanto, não devem suprimir um alerta de possível duplicação científica.
O usuário pleno não pode consolidar registros. Ele envia uma sugestão e depois visualiza se ela está pendente, confirmada ou rejeitada. Curadores revisam essas sugestões na mesma ferramenta.
Curadores de Traits também podem escolher Varrer toda a base de traits. A varredura roda como UserJob em segundo plano e agrupa correspondências de similaridade conectadas, em vez de mostrar apenas pares isolados. Depois da conclusão, carregue o resultado e revise nome, descrição, tipo, unidade e quantidade de Medições de cada registro. Resultados grandes são paginados, e o estado completo permanece em um cache temporário no servidor para evitar que o navegador reenvie todos os grupos a cada decisão.
Para cada membro do grupo, o curador escolhe:
- Sem decisão: deixa o item para revisão posterior;
- Registro a manter: definição que será canônica;
- Mesclar: consolida este Trait no registro mantido;
- Excluir definitivamente: remove um Trait isolado sem mesclá-lo, quando o usuário tem autorização e o Trait não possui uso ou dependência protegida;
- Não é duplicação: registra que o par representa conceitos diferentes.
Salvar decisões persiste os julgamentos de não duplicação e mantém as escolhas de mesclar e excluir disponíveis para execução. Marcar todos como não duplicados aplica esse julgamento a todos os membros, salva todas as decisões par a par e desabilita a execução, pois não resta ação operacional. Executar decisões primeiro inspeciona compatibilidade estrutural e autorização e então submete as mesclagens e exclusões definitivas selecionadas como UserJob. A detecção é deliberadamente mais ampla que a execução: Traits com unidades diferentes, por exemplo, podem ser detectados como possíveis duplicados, enquanto uma mesclagem insegura pode ser recusada até que as implicações de unidade e valores sejam resolvidas.
A decisão de não duplicação pertence ao par, não ao grupo inteiro. Varreduras futuras ignoram esse par. Se nome, descrição, tipo, unidade, categoria, limites, Trait pai ou outro campo conceitual relevante for alterado, as decisões relacionadas são invalidadas para permitir uma nova avaliação.
Traduções de conteúdo ausentes
Traits, categorias de Traits, unidades de Traits, Tags, Projetos e Mídias possuem conteúdo traduzível criado pelos usuários. Quando um provedor de tradução está configurado, a navegação apresenta Missing translations (Traduções ausentes).
A tradução assistida pelo Google reduz o trabalho multilíngue repetitivo, mas
não é autoridade científica: prévias e resultados em lote precisam ser
revisados. Ela é opcional e fica indisponível enquanto
USER_TRANSLATION_PROVIDER estiver vazio.
A validação inicia um UserJob que verifica cada locale de conteúdo habilitado e informa campos ausentes que o usuário atual tem autorização para atualizar. Um campo sem texto de origem é informado, mas não pode ser gerado. A correção confere novamente o registro, a autorização, origem, destino, limite de caracteres e se outra pessoa já preencheu o texto antes de chamar o provedor e salvar o resultado. Sempre examine os resultados do UserJob e revise a terminologia científica gerada.
Os formulários também podem gerar campos ausentes durante a edição de um registro. A API de tradução oferece um endpoint de prévia e outro de gravação, permitindo que um cliente revise o conteúdo gerado antes de persistir.
Os endpoints POST e PUT de Traits não traduzem automaticamente os locales
ausentes. Eles armazenam somente as traduções enviadas explicitamente pelo
cliente; um PUT parcial preserva os locales omitidos. Essa separação evita que
uma importação publique silenciosamente terminologia não revisada.
A mesma busca por similaridade do formulário também protege POST e PUT da
API. Uma linha com possíveis duplicações é rejeitada com os identificadores dos
candidatos. Depois da revisão, um conceito realmente distinto pode ser reenviado
com confirm_similar_trait=true; essa confirmação é por linha e não deve ser
aplicada indiscriminadamente a toda uma importação.
Consulte também Traits e medições e Importar Traits com R.