A resposta curta é que você — como administrador — tem uma lista de categorias diferente. Como administrador, você tem acesso a categorias privadas. Digo “administrador” aqui para simplificar, mas isso também se aplica aos usuários regulares que têm acesso a categorias privadas. Portanto, o número total de categorias na sua lista é maior. Observe que estou falando apenas de categorias, não de subcategorias. Por enquanto, você pode ignorar as subcategorias.
Então, como isso se relaciona com o fato de o Discourse mostrar 2 / semana, 17 / mês ou 4,4k?
O objetivo é indicar atividade e, para torná-la mais relevante, leva em conta o número total de categorias que você tem acesso.
Então, como toda essa mágica funciona? Vamos começar com algumas informações básicas que o Discourse armazena para cada categoria. Cada categoria tem essas quatro propriedades:
topics_day: 12
topics_month: 95
topics_week: 53
topics_year: 874
topics_all_time: 13982
Cada uma representa o número de novos tópicos criados na categoria ou em uma de suas subcategorias dentro desse período. Vamos ignorar os períodos de dia e ano porque eles são irrelevantes aqui.
Vamos analisar algum código:
e vamos nos concentrar especificamente nesta parte
O que está acontecendo aqui? Bem, começamos com o all (todos) como período padrão. Depois, vemos minCategories.
minCategories aqui é o fator decisivo para o que descrevi acima. É um número mágico, por assim dizer. Em resumo, ele pega o número de categorias de primeiro nível disponíveis para você e multiplica por 0,66.
Então, digamos que você tenha 5 categorias. Multiplicamos isso por 0,66 e obtemos 7,92.
Em seguida, o Discourse percorre cada categoria e verifica a propriedade topics_week. Se ela tiver novos tópicos esta semana, ela é considerada ativa para a semana e conta como 1. O Discourse então soma o número de categorias consideradas ativas. Esse número é então comparado ao 7,92 que obtivemos acima.
Você pode ver isso aqui:
if (filteredCategories.length >= minCategories) {
statPeriod = period;
return true;
}
Se o número for maior que 7,92 (8 ou mais categorias ativas esta semana), o Discourse mostrará 11 / semana ao lado de cada categoria, se aplicável.
Bem, e se o número de categorias ativas na semana for menor que 7,92? O Discourse verificará o mesmo, mas com a atividade mensal.
Se o número for maior que 7,92 (8 ou mais categorias ativas este mês), o Discourse mostrará 22 / mês ao lado de cada uma dessas categorias, se aplicável.
Se nem o número semanal nem o mensal de categorias ativas for maior que 7,92, o Discourse retornará ao período padrão all (todos) e mostrará o número topics_all_time ou 4,4k, como na sua captura de tela.
Nota: Além dos períodos semana/mês, se aplicáveis, o total ou all (todos) é sempre exibido no celular.
Então, vamos tentar descobrir o problema em sua publicação. Um novo usuário vê 22 / mês e você, como administrador, vê 4,4k. O que está acontecendo?
Bem, lembra disso?
A resposta curta é que você — como administrador — tem uma lista de categorias diferente. Como administrador, você tem acesso a categorias privadas.
Então, vamos fazer algumas contas…
Seu site tem 7 categorias de primeiro nível visíveis para nosso usuário novo de exemplo. Portanto, o número mágico é:
7 * 0,66 = 4,62
Em outras palavras, você precisa ter 5 categorias com novos tópicos esta semana para que o Discourse mostre 11 / semana. Isso não é o caso no seu site, já que você tem apenas 4 que atendem aos critérios — lembre-se, são novos tópicos, não respostas.
Assim, o Discourse verifica a atividade mensal e, no seu caso, você tem 6 categorias que tiveram novos tópicos este mês. 6 é maior que 4,62, então nosso usuário de exemplo vê 4 / mês, como na sua captura de tela.
Agora, vamos fazer as contas para você, como administrador. Eu não sei quantas categorias privadas você tem, mas vamos assumir que você tenha 4 categorias privadas. Nesse caso, o número total seria de 11 categorias, e o número mágico seria:
11 * 0,66 = 7,26
Então, para você ver 11 / semana, você precisaria de pelo menos 8 categorias com novos tópicos esta semana. Se não for o caso, ele retornará à atividade mensal, e você precisaria de pelo menos 8 categorias com novos tópicos este mês para ver 4 / mês. Se nenhuma dessas condições for atendida, você verá 4,4k, como na sua captura de tela de administrador.
Dito isso, o número mágico no Discourse — 0,66 — parece um pouco alto e pode se beneficiar de uma redução para acomodar sites com um grande número de categorias moderadamente ativas. 40% das categorias do site estando ativas ainda é bastante decente. Você também pode tentar a sorte e pedir uma configuração de site para controlar isso em um tópico Contribute > Feature.
Caso contrário, você pode contornar tudo isso em um componente de tema. Algo como isso na guia de cabeçalho comum do seu tema.
<script type="text/discourse-plugin" version="0.8">
const { on } = require("discourse-common/utils/decorators");
const { number } = require("discourse/lib/formatter");
const I18n = require("I18n").default;
// a categoria é considerada ativa se tiver pelo menos este número de tópicos esta semana
const WEEK_THROSHOLD = 2;
api.modifyClass("component:parent-category-row", {
pluginId: "category-activity-indicator",
@on("didReceiveAttrs")
setCategoryActivityStats() {
const category = this.category;
if (category.topics_week < WEEK_THROSHOLD) {
return;
}
const statPeriod = "week";
const stat = category[`topics_${statPeriod}`];
const unit = I18n.t(`categories.topic_stat_unit.${statPeriod}`);
category.setProperties({
pickAll: false,
stat: I18n.t("categories.topic_stat", {
count: stat,
number: `<span class="value">${number(stat)}</span>`,
unit: `<span class="unit">${unit}</span>`,
}),
statTitle: I18n.t(`categories.topic_stat_sentence_${statPeriod}`, {
count: stat,
}),
});
},
});
</script>
A única coisa que você precisa alterar é WEEK_THROSHOLD para o número de novos tópicos criados esta semana em uma categoria no qual ela é considerada ativa. O resto deve funcionar normalmente.
