Migrando de subcategorias para tags?

Existe um limite para o número de tags que uma categoria/comunidade pode ter?

Tópicos ou tags? Em ambos os casos, você nunca deve atingir um limite.

Quero dizer tags.

Estou trabalhando em um design de fórum que elimina subcategorias (porque chegamos a milhares e isso estava ficando muito lento em buscas e ao se inscrever em categorias específicas), e move tudo isso para tags. As tags serão restritas às categorias, mas o número total delas será superior a 1000 e, eventualmente, ainda maior. Espera-se que isso tenha melhor desempenho do que as subcategorias?

Além disso, é possível se inscrever em novos tópicos/posts de uma tag?

Sim, absolutamente. As tags são extremamente leves em comparação com categorias/subcategorias.

Você pode! No final do guia, há um link para https://meta.discourse.org/t/how-do-i-set-tag-tracking-level-defaults-historically/111371/1, onde você pode definir as tags monitoradas padrão para todos os seus usuários. Isso também pode ser ajustado individualmente pelos usuários ao visualizar a lista de tópicos de uma tag ou por meio de suas preferências de usuário (/my/preferences/tags).

Obrigado pelas respostas. Muito úteis!
Uma coisa a mais que gostaria de esclarecer:

Posso usar a API de administrador para criar uma nova tag? Não vejo essa opção na API de tags; ela só permite que eu crie/atualize novos grupos de tags.

Minha segunda ideia foi criar um novo tópico e adicionar as tags desejadas a ele por meio da API, mas as opções disponíveis na documentação não incluem um campo tags.

Aqui estão as minhas opções:

Por que preciso disso:
Estou tentando testar como meu sistema se comportará se tiver 5000 tags.
Também acabarei precisando disso ao migrar meus tópicos de subcategorias para tags. Vou precisar criar essas tags primeiro.

Ao tentar enviar uma solicitação para criar um grupo de tags com novos nomes de tags, estou tentando o seguinte:

# Python
 payload = {
    'api_key': constants.DISCOURSE_RAILS_API_KEY,
    'api_username': constants.DISCOURSE_RAILS_API_USERNAME,
    'name': 'new-tag-group',
    'tag_names': ['new_tag1', 'new_tag2']
}

Isso cria com sucesso o novo grupo de tags, mas a resposta não contém as tags no array tag_names:

'_content': '{"tag_group":{"id":6,"name":"new-tag-group","tag_names":[]"}'

No entanto, quando tento fazer isso pelo painel de administração e examino a chamada de rede, ela as envia de forma semelhante:
Screen Shot 2020-06-05 at 5.53.51 PM

Estou fazendo algo errado na solicitação?

As tags são criadas na primeira aplicação, então você precisará criar pelo menos um tópico com a nova tag para que ela fique disponível. Acredito que este seja um caso em que a documentação da API não inclui todas as opções possíveis. Se você planeja trabalhar com a API, recomendo conferir Reverse engineer the Discourse API

Se você criar um tópico com uma nova tag pela interface e inspecionar as requisições XHR nas ferramentas de desenvolvimento do seu navegador, deverá ver algo assim (observe o array de tags):

Depois de criar a tag, você deverá ser capaz de usar um método como Tag em massa todos os tópicos dentro de uma categoria e depois Mover todos os tópicos de uma categoria para outra para alcançar o que você deseja.

Lembre-se de fazer um backup antes de executar tarefas rake como essas :slight_smile:

Obrigado pela ajuda, Taylor! Felizmente, eu já havia descoberto isso logo após meu último comentário.
Utilizei a API de criação de grupo de tags para conseguir isso.
O problema é que (como na foto) a chave JSON esperada é tag_names[] e não tag_names.

No entanto, na documentação da API em Discourse API Docs, está escrito tag_names. Isso deveria ser atualizado para maior clareza?

Sem problema! Fico feliz que você tenha conseguido resolver. Como tudo isso pode ser útil para alguém no futuro, já movi para um novo tópico (caso contrário, teria sido excluído automaticamente se permanecesse no tópico de tutorial).

Parece que sim. @blake pode se manifestar quando tiver uma oportunidade.

Sim! Provavelmente precisa ser atualizado. Adicionei à minha lista.

Olá Taylor, mais uma solicitação de orientação:

Vi esses links sobre operações em lote, mas estou inseguro sobre como administrá-las no ambiente de produção.
Não terei acesso à instância que executa e hospeda o Discourse, mas preciso escrever scripts, testá-los em uma instância de staging e depois entregá-los para produção, onde serão executados.
Como isso é feito? Estou vendo tópicos sobre db:migrate, etc., mas não está claro.
Poderia me indicar o caminho certo?

Aqui estão as etapas que pretendo seguir:

  1. Criar uma nova categoria.
  2. Etiquetar todos os tópicos nas categorias existentes com uma tag com o mesmo nome da categoria.
  3. Mover todos os tópicos para a nova categoria.
  4. Excluir todas as categorias antigas.
  5. Criar grupos de tags a partir dessas tags recém-formadas.
  6. Restringir esses grupos de tags à nova categoria.
  7. Editar algumas configurações de categoria para essa nova categoria.

Já descobri como fazer tudo isso por meio da API. Também já escrevi o código para isso.
Só estou me perguntando se seria mais eficiente fazer isso com migrações?

Hmm, você precisaria ter acesso ao console para executar qualquer um dos scripts/tarefas de operações em massa. Em nosso hospedagem, ficamos felizes em executar scripts/tarefas de operações em massa pontuais para clientes, então recomendo entrar em contato com seu provedor de hospedagem e ver se eles podem cuidar disso para você.

Na minha opinião, é assim que eu lidaria com suas etapas:

  1. Fácil o suficiente para fazer pela interface
  2. Marcar em massa todos os tópicos dentro de uma categoria
  3. Mover todos os tópicos de uma categoria para outra
  4. Seja pela interface ou rake destroy:categories[10,11,12,18,30]
  5. Provavelmente mais fácil pela interface
  6. Interface
  7. Interface

Não deve haver necessidade de fazer qualquer coisa com db:migrate. Se seu provedor de hospedagem puder executar as tarefas de operações em massa necessárias para você, isso seria mais eficiente do que usar a API.

Verifique primeiro se seu provedor de hospedagem executará a tarefa e, em seguida, decida o que fazer a partir daí.

Obrigado pela resposta rápida.

Sim, há pessoas na equipe que têm acesso ao ambiente de hospedagem de produção.
Poderia me indicar o caminho para aprender a escrever esses scripts rake e como executá-los?

Todas as informações que você precisa devem estar incluídas nos links que postei acima :slight_smile: Elas já estão escritas; você só precisa fornecer os parâmetros, que devem ser explicados nas seções relevantes do tópico Administrative Bulk Operations. Verifique o topo do tópico para instruções iniciais.