Estatísticas de Novas Postagens no Dashboard estão quebradas

Olá a todos,

desde uma das últimas atualizações, há uma ou duas semanas, as novas estatísticas de publicações no painel de controle estão quebradas aqui. Não mostra mais nada. Este é um problema apenas para mim ou um bug comum? Não encontrei nada através da pesquisa aqui.

Atenciosamente

Desculpe, você pode esclarecer, você está dizendo que esses gráficos não estão funcionando?

Quando você atualizou sua instância pela última vez, você pode atualizá-la agora?

Desculpe pela falta de clareza, aqui está uma captura de tela:

Atualizei esta noite para 05685d430f.

Se bem me lembro, faz cerca de uma ou duas semanas, atualizo a cada cinco dias no momento.

E sim, não há muito tráfego no momento, mas temos novas postagens. :wink: Também cliquei e escolhi o ano desde hoje. Nada lá também.

A primeira coisa que me vem à mente é “dados insuficientes”, mas vou mencionar isso para a equipe de XP do staff, que pode ajudar a depurar.

1 curtida

Obrigado! Outra captura de tela, onde você pode ver que há novos tópicos. Portanto, também deve haver novas postagens. Pelo menos tantos quanto tópicos (mas com certeza é mais do que isso aqui :wink:).

Se você for à página de relatório completo em \u003chttps://YOURSITE.COM/admin/reports/posts?end_date=2025-02-17\u0026start_date=2025-01-17\u003e, ele mostrará algum dado, ajustando as datas/filtros? Você vê algum erro nos logs em \u003chttps://YOURSITE.COM/logs\u003e ou na guia Rede do Chrome DevTools ao carregar esta página ou o painel?

1 curtida

Não, tudo está vazio lá também. Posso ajustar as datas de início e fim, sem alterações.

Não, nenhum. Apenas alguns avisos de depreciação, não relacionados às estatísticas (de acordo com o horário).

De fato, há erros. Quando carrego a página, são 9, aumentando com o tempo.

Isso ajuda? Devo copiar e colar (texto) um/todos esses erros?

2 curtidas

De fato, também me deparei com essa situação. Minha comunidade também não exibe a contagem correta de postagens.

Não está correto ou nada, como aqui?

1 curtida

Fiz uma pequena pesquisa, parece que os erros de domQueryService são da extensão do Chrome Bitwarden, é improvável que causem problemas. Os erros do mini-profiler podem ser ignorados.

O erro do fingerprint-report é de GitHub - discourse/discourse-fingerprint: A plugin that computes user fingerprints to help administrators combat internet trolls., e embora seja um problema que precisamos corrigir, não parece impedir que o Relatório de Posts seja carregado localmente para mim.

Aquele arquivo body_tag_1.js que outras pessoas parecem ter problemas às vezes no Discourse Lost ability to scroll through HA community site - community-feedback - Home Assistant Community. Você tem algum Adblocker? Se sim, tente desativá-los. Se não ou se isso não funcionar, tente ativar o Modo de Segurança Using Safe Mode to troubleshoot issues with themes and plugins e veja se consegue carregar a página, se conseguir, isso indicaria um problema de plugin ou tema.

Finalmente, tente carregar o JSON do relatório e veja se obtém algum resultado aqui:
https://YOURSITE.COM/admin/reports/bulk.json?reports[posts][facets][]=prev_period&reports[posts][start_date]=2025-01-18&reports[posts][end_date]=2025-02-18&reports[posts][limit]=50

4 curtidas

Eu tenho o que já está no Opera, que é o navegador que estou usando no computador. Também uso Pi-hole com várias listas de bloqueio.

Mas: Esses problemas também ocorrem no meu iPad no aplicativo Discourse e em outras redes, incluindo dados móveis. Portanto, sem bloqueadores de anúncios ou algo assim.

Consigo, mas não hoje mais. :wink:

Claro:

{"reports":[{"type":"posts","title":"Beiträge","xaxis":"Tag","yaxis":"Anzahl neuer Beiträge","description":"Neue Beiträge, die in dieser Zeit erstellt wurden","description_link":null,"data":[],"start_date":"2025-01-18T00:00:00Z","end_date":"2025-02-18T23:59:59Z","prev_data":null,"prev_start_date":"2024-12-17T00:00:00Z","prev_end_date":"2025-01-18T00:00:00Z","prev30Days":null,"dates_filtering":true,"report_key":"reports:posts:20250118:20250218:[:prev_period]:50:4","primary_color":"rgba(113,184,254,1)","secondary_color":"rgba(113,184,254,0.1)","available_filters":[{"id":"category","type":"category","default":null}],"labels":[{"type":"date","property":"x","title":"Tag"},{"type":"number","property":"y","title":"Anzahl"}],"average":false,"percent":false,"higher_is_better":true,"modes":["chart","table"],"prev_period":0,"limit":50}]}

Como isso não mostra nada, se eu entendi direito, o modo de segurança faz sentido?

1 curtida

Ok, obrigado, isso é útil e indica que os próprios dados estão faltando, e não que há algum erro no frontend :thinking:

A consulta SQL que suporta este relatório é bastante simples. Se você tiver acesso ao Data Explorer ou diretamente ao seu banco de dados, pode tentar executá-la e ajustá-la para ver se ela retorna algum dado:

SELECT
  COUNT(*) AS "count_all",
  date(posts.created_at) AS "date_posts_created_at"
FROM
  "posts"
  INNER JOIN "topics" ON "topics"."deleted_at" IS NULL
  AND "topics"."id" = "posts"."topic_id"
WHERE
  "posts"."deleted_at" IS NULL
  AND (
    topics.archetype <> 'private_message'
  )
  AND (
    posts.created_at >= '2025-02-01'
    AND posts.created_at <= '2025-02-28'
  )
  AND "posts"."post_type" = 1
GROUP BY
  date(posts.created_at)
ORDER BY
  date(posts.created_at)

E aqui está o código do relatório em si:

Receio que seja um pouco complicado depurar isso mais a fundo sem ter acesso ao seu site para que eu possa investigar o banco de dados.

1 curtida

A consulta no Data Explorer retorna dados:

1 curtida

Desculpe Roi, isso se perdeu um pouco. Acho que deve haver algo errado com o próprio código do relatório? discourse/app/models/concerns/reports/posts.rb at 8596aa34c46071eb42ffbb9e19ad733d1765578e · discourse/discourse · GitHub .

Você tem acesso ao console rails do seu site? Se sim, tente isto e veja se ele lhe dá algum dado:

Report.find("posts", start_date: 4.weeks.ago, end_date: Time.zone.now).data

Isso também exibirá as consultas SQL que ele executa, então pode haver mais pistas lá.

1 curtida

Sem problemas! Não parece perfeito no painel de administração, mas não é tão crítico quanto outros bugs.

Sim.

Hm, eu estava fazendo isso certo?

root@prometheus-discourse-sidemount:/var/www/discourse# rails c
O nome do plugin é 'discourse-docs', mas o diretório do plugin é chamado 'discourse-knowledge-explorer'
O nome do plugin é 'discourse-user-notes', mas o diretório do plugin é chamado 'discourse-staff-notes'
[1] pry(main)> Report.find("posts", start_date: 4.weeks.ago, end_date: Time.zone.now).data
=> []
[2] pry(main)>

A resposta está vazia. Isso explicaria a caixa vazia no painel de administração. Mas você escreveu que deveria haver uma instrução SQL na resposta também?

1 curtida

Ah, desculpe, talvez eu só a tenha visto porque estava executando localmente. Tente isto:

MethodProfiler.output_sql_to_stderr!
Report.find("posts", start_date: 4.weeks.ago, end_date: Time.zone.now).data

Você terá muito mais ruído de consultas agora, mas as últimas consultas serão as do relatório:

1 curtida

Ok, muito mais ruído. :wink: É isto que procura ou precisa de mais informações acima?

debugsql (sql): SELECT COUNT(*) AS "count_all", date(posts.created_at) AS "date_posts_created_at" FROM "posts" INNER JOIN "topics" ON "topics"."deleted_at" IS NULL AND "topics"."id" = "posts"."topic_id" WHERE "posts"."deleted_at" IS NULL AND (topics.archetype <> 'private_message') AND NOT ((topics.category_id IN (NULL))) AND (posts.created_at >= '2025-02-03 06:00:45.160432' AND posts.created_at <= '2025-03-03 06:00:45.160586') AND "posts"."post_type" = 1 GROUP BY date(posts.created_at) ORDER BY date(posts.created_at)
debugsql (sec): 0.001
debugsql (sql): SELECT "category_custom_fields"."category_id" FROM "category_custom_fields" WHERE "category_custom_fields"."name" = 'private_topics_enabled'
debugsql (sec): 0.0
debugsql (sql): SELECT COUNT(*) FROM "posts" INNER JOIN "topics" ON "topics"."deleted_at" IS NULL AND "topics"."id" = "posts"."topic_id" WHERE "posts"."deleted_at" IS NULL AND (topics.archetype <> 'private_message') AND NOT ((topics.category_id IN (NULL))) AND "posts"."post_type" = 1
debugsql (sec): 0.0
debugsql (sql): SELECT COUNT(*) FROM "posts" INNER JOIN "topics" ON "topics"."deleted_at" IS NULL AND "topics"."id" = "posts"."topic_id" WHERE "posts"."deleted_at" IS NULL AND (topics.archetype <> 'private_message') AND NOT ((topics.category_id IN (NULL))) AND "posts"."post_type" = 1 AND (posts.created_at >= '2025-01-04 06:00:45.160432' and posts.created_at < '2025-02-03 06:00:45.160432')
debugsql (sec): 0.0
debugsql (sql): COMMIT
debugsql (sec): 0.0
=> []
1 curtida

Sim, é isso que eu preciso :slight_smile: A parte que me chama a atenção é AND NOT ((topics.category_id IN (NULL))); eu não tenho isso na consulta que mostro na captura de tela acima. Isso excluiria todos os tópicos sem categoria da contagem, o que, dependendo da configuração do seu fórum, pode ser muito?

Não estou vendo no código de onde isso vem. Próximo passo, eu tentaria fazer isso no Data Explorer:

SELECT 
  COUNT(*) AS "count_all", 
  date(posts.created_at) AS "date_posts_created_at" 
FROM 
  "posts" 
  INNER JOIN "topics" ON "topics"."deleted_at" IS NULL 
  AND "topics"."id" = "posts"."topic_id" 
WHERE 
  "posts"."deleted_at" IS NULL 
  AND (
    topics.archetype <> 'private_message'
  ) 
  AND (
    posts.created_at >= '2025-02-03 06:00:45.160432' 
    AND posts.created_at <= '2025-03-03 06:00:45.160586'
  ) 
  AND "posts"."post_type" = 1 
GROUP BY 
  date(posts.created_at) 
ORDER BY 
  date(posts.created_at)

(Removi a cláusula AND NOT aqui), e ver se você obtém algum resultado. Se eu executar isso localmente, obtenho:

 count_all | date_posts_created_at
-----------+-----------------------
         1 | 2025-02-03
         8 | 2025-02-04
         7 | 2025-02-05
         1 | 2025-02-06
         7 | 2025-02-12
         4 | 2025-02-26

Enquanto, se eu mantiver a cláusula category_id que suas consultas mostram, eu não obtenho dados.

1 curtida

Funciona:

:sign_of_the_horns:

Todos os nossos posts têm uma categoria.

De onde vem essa condição adicional? :thinking:

1 curtida

Sim, eu realmente não tenho certeza :frowning: É um tiro no escuro, mas poderia ser um plugin adicionando/modificando algo? :thinking: Quais plugins você usa? A primeira consulta acima (a com count_all) vem daqui:

Se apenas chamar isso no console ainda adicionar essa cláusula category_id IN (NULL), então algo está muito estranho:

Post.public_posts_count_per_day(4.weeks.ago, Time.zone.now)
1 curtida