Hierarquia tradicional multinível versus hierarquia de discurso plana

Estou tendo dificuldade em convencer nossa organização a não voltar para um fórum tradicional, onde é possível ter múltiplos níveis hierárquicos, que tendem a resultar em tortura de clique e execute, veja É Hora de Falarmos Sobre Etiquetas
Preciso de argumentos que garantam que isso seja facilmente viável apenas com etiquetas, sem a necessidade de digitar nada na caixa de pesquisa.
Seria ótimo se as seguintes perguntas fossem respondidas.

Temos uma rede de apoiadores de nós locais que crescerá globalmente, comparável à categoria “Grupos Locais” em https://discuss.okfn.org. Lá, todas as localizações são cobertas por subcategorias. Essa é a solução certa se você não descer ao nível da cidade, como temos que fazer.
Tenho em mente uma estrutura da seguinte forma:

  1. categoria: nós locais
  2. etiqueta: continente (precisa ser discutido se faz sentido)
  3. subcategoria: nação (a nação deve ser bem visualizada, por isso o continente é uma etiqueta)
  4. etiqueta: cidade

Existe alguma possibilidade de eu navegar apenas por etiquetas, fazendo uso da hierarquia de grupos de etiquetas, como para:

  1. clicar de Ásia para Japão
    1. Continentes
    2. Nações
  2. clicar de Europa para Roma
    1. Continentes
    2. Nações
    3. Cidades

Ainda não encontrei uma maneira de cobrir isso por meio da barra de campos de navegação. Também não encontrei uma maneira de que o tópico seja automaticamente etiquetado pelo nome de sua subcategoria e da categoria pai de sua subcategoria para tornar isso possível.
Estou ciente de

Além disso (para começar :slight_smile:)

  1. como fazer / quando “Pesquisar” é mostrado na pesquisa de etiquetas

  2. integrar a pesquisa de etiquetas na pesquisa de categoria (sei que há uma caixa de pesquisa no canto superior direito, mas ela lista tópicos também)

No final, gostaria de mostrar um mapa mundial na categoria “nós locais”, permitindo dar zoom na localização de interesse.
Espero poder fazer uso do mapa visto em Locations Plugin 🌍, do Plugin Data Explorer Discourse Data Explorer e do Plugin Layouts Personalizados, talvez integrados aos Banners de Categoria do Discourse.
Atualmente, estou ciente apenas de:

Deve parecer mais ou menos assim:

Pensei um pouco sobre isso. Já brinquei antes com um sistema de categorias de três níveis e diferentes sistemas de navegação baseados em tags.

categoria: nós locais
tag: continente (precisa ser discutido se faz sentido)
subcategoria: nação (a nação deve ser bem visualizada, por isso o continente é uma tag)
tag: cidade

Acho que, essencialmente, você precisa de um menu suspenso de tags específico para um tag_group, sendo que o tag_group é determinado pelo contexto da categoria (para acomodar diferentes grupos de cidades nas subcategorias de nação).

Quanto a ter mapas em lugares além de uma lista de tópicos ou incorporados em uma postagem, o Plugin de Locais possui um mapa componente que pode ser inserido em uma página de categoria.

Você pode conseguir ambos em um componente de tema. Se precisar de ajuda para construir tal componente, posso dar algumas dicas se quiser tentar sozinho, ou pode contratar o Pavilion para fazer isso por você.

Muito obrigado pelo feedback positivo! Então, qualquer coisa além do mapa pode ser feita por nós mesmos :smiley:, mas precisaremos codificar um pouco para personalizar o tema da maneira que gostamos.

Para ter uma ideia do roteiro para realizar isso, você pode confirmar, corrigir, ampliar ou responder ao seguinte:

  1. :question: Garantir que possamos criar listas suspensas de tags infinitas (limitadas apenas pelo tamanho da página), com seleção de tags baseada na lista suspensa anterior.
    @angus, você pode confirmar que isso é possível em princípio?
  2. :question: É possível mesclar a pesquisa por categoria e por tag, como solicitado no item 2 da última (terceira) lista?
  3. :factory: Estabelecer uma hierarquia de tags comparável à mostrada na mensagem original (OP). Isso é fundamental; sem isso, este projeto está condenado.
  4. :factory: Introduzir a atribuição automática de tags.
    1. :question: :arrow_forward: :factory: Isso só pode ser feito por meio de um plugin, conforme indicado em Atribuição automática de tags para tópicos?
      :arrow_right: Veja Tags: restrições de categoria, grupos de tags, relacionamentos
  5. :factory: Implementar a versão aprimorada de Locations Plugin 🌍 - #429 :star_struck:

Se seguirmos por esse caminho, certamente aceitarei sua generosa oferta.

Isso é improvável no momento, pois nossa comunidade está prestes a dar seu primeiro passo e a receita estará em um nível muito baixo; além disso, somos uma organização sem fins lucrativos.

Isso é respondido em Set up structured tagging with tag groups and category tag restrictions

Tudo é possível em princípio.

Por exemplo, já criei anteriormente uma hierarquia de categorias de 3 níveis que também suporta interseções múltiplas de tags no nível da categoria.

Estrutura de rotas de hierarquia de categorias de 3 níveis com interseções de múltiplas tags
scope "/multi" do
  constraints(tag_id: /[^\/]+?/, format: /json|rss/) do
     get '/c/:category/t/:tag_id/*tags' => 'tags#show', as: 'tags_category_show'
     get '/c/:parent_category/:category/t/:tag_id/*tags' => 'tags#show', as: 'tags_parent_category_category_show'
     get '/c/:grandparent_category/:parent_category/:category/t/:tag_id/*tags' => 'tags#show', as: 'tags_grandparent_category_category_show'

     Discourse.filters.each do |filter|
       get "/c/:category/t/:tag_id/*tags/l/#{filter}" => "tags#show_#{filter}", as: "tags_category_show_#{filter}"
       get "/c/:parent_category/:category/t/:tag_id/*tags/l/#{filter}" => "tags#show_#{filter}", as: "tags_parent_category_category_show_#{filter}"
       get "/c/:grandparent_category/:parent_category/:category/t/:tag_id/*tags/l/#{filter}" => "tags#show_#{filter}", as: "tags_grandparent_category_category_show_#{filter}"
     end
   end
end

Isso é mais complexo do que acredito que você queira fazer, mas não é sustentável a menos que você esteja disposto a investir muito tempo ou recursos para mantê-lo. É provável que quebre em algum momento quando o Discourse padrão sofrer alterações.

Com esse contexto, há duas coisas a entender sobre a estrutura de rotas de categoria/tag no Discourse padrão:

  1. Interseções de múltiplas tags só são possíveis em todo o site; não no nível da categoria, ou seja, não há rotas no Discourse padrão para mostrar uma lista de tópicos com tópicos de uma categoria específica e com mais de uma tag específica. Se você quisesse isso, teria que adicionar a rota.

  2. Interseções de categorias não são possíveis. Ou seja, não há uma rota no Discourse para mostrar tópicos de duas categorias no mesmo nível (ou seja, duas categorias pai ou duas categorias filho).

Você ainda pode alcançar um sistema de quatro níveis (que parece ser seu objetivo) sem fazer adições significativas no lado do servidor.

Por exemplo, você poderia usar exclusivamente tags para representar os quatro níveis. https://thepavilion.io/tags/intersection/events/bug/to-do/high representa a interseção entre as tags events, bug, to-do e high no Pavilion. Você poderia ter 4 menus suspensos, um para cada grupo de tags do qual essas tags são extraídas, por exemplo:

[plugin] [type] [status] [importance]

Depois de definir como deseja estruturar sua hierarquia dentro da estrutura de rotas existente do Discourse, o restante do que você listou são apenas modificações no lado do cliente e são (relativamente) diretas.

  1. Hierarquia de categorias em 3 níveis

    existe um exemplo? Não sei como ficaria nem onde o código é adicionado.
    Onde e como o grandparent_category é introduzido, já que não há ferramentas padrão para fazê-lo via UX.
    Isso tem alguma relação com Pavilion? Não tem, certo? O código acima alteraria a página de destino das categorias, não é?

  2. Interseções de múltiplas tags parecem boas, embora elas

    isso pode exigir pular as categorias como rota principal de navegação e construir uma página de destino personalizada baseada nessas tags, algo que perguntei em Display tags by tag group - #22 by PackElend
    Isso exigiria um tema personalizado, não é?

  3. apenas tags

    sim, essa é a ideia de como começar; qualquer outra coisa pode ser alterada em uma fase posterior.
    Desde que garantamos uma tagagem adequada, tudo deve ser viável, dependendo do tempo e da tolerância à frustração :), não é?
    A hierarquia seria a seguinte:

    1. nível: nós locais
    2. nível: continentes
    3. nível: nações
    4. nível: cidades

    No início, usaremos corretamente apenas nós locais como categoria e uma subcategoria por cidade*. Assim que houver muitos nós, mudaremos para nós locais e nações, na esperança de criar nosso próprio tema para tornar a navegação baseada em tags mais atraente (por exemplo, as mesmas caixas para tags que para categorias, conforme mencionado no ponto 2).
    Além disso, espero que consigamos avançar com minha solicitação de recurso em breve, discutida no Plugin de Localizações, pois isso pode ser usado em muitos grupos de categorias/tags :angel:.

    O mais importante é que coloquemos o Auto-tagging de Tópicos para funcionar o mais rápido possível; caso contrário, teremos uma bagunça antes mesmo de começarmos em grande escala.
    Além disso, precisamos introduzir caixas de seleção suspensa adicionais na barra de navegação, preenchidas com tags dependendo da seleção. Espero que não seja grande problema misturar subcategorias com caixas suspensas definidas por tags.
    É simples conseguir algo como o layout abaixo?

    1. layout com baixo número de nós
      image
    2. layout com maior número de nós
      image
  4. mesclar caixas
    Por último, mas não menos importante, pode ser útil: você pode mesclar caixas como:

image

Isso não funcionará porque viola uma das restrições que mencionei.

Você não pode filtrar por duas tags dentro de uma categoria.

image

Não tenho certeza, mas acho que você está assumindo que, se estiver na categoria “nós locais” e filtrar por “continentes”, também poderá filtrar por nações e cidades ao mesmo tempo. Isso também não funcionará.

Acho que essa é a melhor decisão para você.

use apenas nós locais como categoria e uma subcategoria por cidade

Acho que você está tentando incorporar muitos planos futuros às suas necessidades atuais.

Assim que houver muitos nós, mudaremos para nós locais e nações

Entendo o desejo de configurar a “estrutura” certa agora, mas, por melhor que seja seu serviço, levará um tempo até isso se tornar um problema para você, ou seja, anos. Nessa fase, as premissas nas quais você está baseando sua comunidade terão mudado.

Além disso, o problema que você enfrentará será principalmente de organização, e não de hierarquia. Por exemplo, você poderia simplesmente agrupar as subcategorias de cidade em uma barra de navegação modificada, conforme a nação, se quisesse. Se quisesse ter discussões em nível “nacional” (questiono se isso faria sentido de qualquer forma), poderia simplesmente criar uma subcategoria separada para isso.

Você não precisa necessariamente de uma estrutura hierárquica no seu fórum de discussões que corresponda estritamente à hierarquia administrativa dos locais em torno dos quais as discussões estão acontecendo. Você precisa de uma hierarquia que permita aos seus usuários encontrar o conteúdo relevante para eles. Entendo que você está conectando esses dois conceitos, mas não tenho certeza se isso é justificado. Focar demais nessa conexão está complicando demais seu pensamento sobre a estrutura do fórum.

Basicamente, acho que você está investindo demais em fazer com que isso seja estruturalmente semelhante à maneira como você vê o estado ideal do seu serviço de uma perspectiva de 10.000 pés, ou seja, operando em uma escala tão grande que seja necessário dividir as cidades por nações e continentes. Quando e se você chegar a esse ponto, a natureza inteira dessa decisão será diferente.

Você está certo, foi um erro meu. Fiquei perdido nos detalhes ontem à noite.

[1] Não seria possível adicionar caixas de seleção suspensas adicionais?
Isso de alguma forma simularia uma “busca avançada”.

Concordo. Estou tentando unir o pensamento antigo e profundamente estruturado com a abordagem do Discourse.

Mas, ainda assim, como você disse:

Não tenho certeza se haverá apenas

já que há um foco em projetos em áreas muito pequenas e geograficamente limitadas.
Claro, certos tópicos terão significado nacional ou global. Como moderar isso, colocar tudo no contexto correto e torná-lo disponível no canto certo do Discourse é provavelmente algo onde aprender fazendo se aplica.

Se decidirmos depender apenas de tags, sua abordagem de interseção de tags poderia ajudar enormemente.
Antes de dar esse passo, precisamos personalizar a página de destino das tags e da interseção para que se pareça de alguma forma com a página de destino das categorias. Isso é viável?
Penso em fazer o layout de https://se23.life/tags usar caixas preenchidas com “subtags”, conforme sugerido em Higher level of granularity for category & subcategory styling - #7 by PackElend (mas lá eu peço para melhorar as caixas para subcategorias).
Além disso, assim que você clicar em uma caixa ou tag dentro de uma caixa, isso acionará a consulta https://thepavilion.io/tags/intersection/tag1/tag2/tag3/.... O resultado será renderizado e exibido da mesma forma que o estilo de caixa (ou qualquer coisa que considerarmos apropriado).

Como você pode ver, ainda estou preso à rota de múltiplos níveis, pois é a mesma analogia: quando você dá zoom de uma escala global para uma local. Essa é, para qualquer novo usuário, a rota de navegação mais natural para chegar ao seu nó local.
Espero que você tenha razão, conforme afirmado em:

mas pode haver preocupações de que um nível fique sobrecarregado com muitas tags. Por exemplo, ter todas as cidades dos EUA ou da China nas subcategorias China e EUA, respectivamente, pode ficar confuso.

Concordo, mas embora eu esteja provavelmente

:grin:. Essa afirmação ajudará a desemocionalizar a abordagem de nível profundo.

Você pode explicar isso com mais detalhes ou há algum exemplo por aí?
Essa personalização da barra de navegação é de alguma forma a mesma coisa que foi perguntada no início deste post, marcada por [1]?

Criei algo como mockups visualizando um possível roteiro, postulando que o nível de nação e cidades não podem coexistir lado a lado, tornando cada um deles uma subcategoria de nós locais.

  1. Página de destino são categorias

  2. Página de destino são categorias, mas os nós locais surgem como cogumelos

  3. Página de destino são tags, tema personalizado cuida do layout como categorias