Statistiques des nouveaux messages du tableau de bord cassées

Bonjour à tous,

depuis l’une des dernières mises à jour, il y a une ou deux semaines, la nouvelle statistique des publications sur le tableau de bord est cassée ici. Elle n’affiche plus rien. Est-ce un problème uniquement pour moi ou un bug commun ? Je n’ai rien trouvé en cherchant ici.

Cordialement

Désolé, pouvez-vous clarifier, dites-vous que ces graphiques ne fonctionnent pas ?

Quand avez-vous mis à jour votre instance pour la dernière fois, pouvez-vous la mettre à jour maintenant ?

Désolé pour mon manque de clarté, voici une capture d’écran :

J’ai mis à jour ce soir vers 05685d430f.

Si je me souviens bien, cela fait environ une à deux semaines maintenant, je mets à jour tous les cinq jours environ en ce moment.

Et oui, pas beaucoup de trafic en ce moment, mais nous avons de nouveaux messages. :wink: J’ai aussi cliqué et choisi l’année depuis aujourd’hui. Rien là non plus.

La première chose qui me vient à l’esprit est « pas assez de données », mais je vais en parler à l’équipe xp du personnel qui pourra aider au débogage.

1 « J'aime »

Merci ! Une autre capture d’écran, où l’on peut voir qu’il y a de nouveaux sujets. Il doit donc y avoir de nouveaux messages aussi. Au moins autant que de sujets (mais c’est certainement plus que ça ici :wink:).

Si vous accédez à la page du rapport complet à l’adresse https://YOURSITE.COM/admin/reports/posts?end_date=2025-02-17&start_date=2025-01-17, pouvez-vous obtenir des données en ajustant les dates/filtres ? Voyez-vous des erreurs dans les journaux à l’adresse https://YOURSITE.COM/logs ou dans l’onglet Réseau des outils de développement Chrome lors du chargement de cette page ou du tableau de bord ?

1 « J'aime »

Non, tout est vide là aussi. Je peux aussi ajuster les dates de début et de fin, sans changement.

Non, aucune. Juste quelques avis de dépréciation, pas liés aux statistiques (selon l’heure).

En effet, il y a des erreurs. Lorsque je charge la page, il y en a 9, et de plus en plus avec le temps.

Est-ce que cela aide ? Dois-je copier-coller (texte) une ou toutes ces erreurs ?

2 « J'aime »

En effet, j’ai également rencontré cette situation. Ma communauté n’affiche pas non plus le bon nombre de publications.

Pas correct ou rien du tout comme ici ?

1 « J'aime »

J’ai fait quelques recherches, il semble que les erreurs domQueryService proviennent de l’extension Chrome Bitwarden, elles ne sont pas susceptibles de causer des problèmes. Les erreurs mini-profiler peuvent être ignorées.

L’erreur fingerprint-report provient de GitHub - discourse/discourse-fingerprint: A plugin that computes user fingerprints to help administrators combat internet trolls., et bien que ce soit un problème que nous devons résoudre, il ne semble pas empêcher le rapport de messages de se charger localement pour moi.

Ce fichier body_tag_1.js pose parfois problème à d’autres personnes sur Discourse Lost ability to scroll through HA community site - community-feedback - Home Assistant Community. Avez-vous des bloqueurs de publicité ? Si oui, essayez de les désactiver. Sinon, ou si cela ne fonctionne pas, essayez d’activer le mode sans échec Using Safe Mode to troubleshoot issues with themes and plugins et voyez si vous pouvez charger la page, si c’est le cas, cela indiquerait un problème de plugin ou de thème.

Enfin, essayez de charger le JSON du rapport et voyez si vous obtenez des résultats ici :
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 « J'aime »

Je l’ai fait, ce qui est déjà inclus dans Opera, le navigateur que j’utilise sur l’ordinateur. J’utilise également Pi-hole avec plusieurs listes de blocage.

Mais : ces problèmes se produisent également sur mon iPad dans l’application Discourse et dans d’autres réseaux, y compris les données mobiles. Donc, pas de bloqueurs de publicité ou quoi que ce soit de ce genre.

Je peux, mais pas aujourd’hui. :wink:

Bien sûr :

{"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}]}

Comme cela ne montre rien, si je lis bien, le mode sans échec est-il pertinent ?

1 « J'aime »

D’accord, merci, cela indique que les données elles-mêmes sont manquantes, et non qu’il y a une erreur côté frontend :thinking:

La requête SQL qui sous-tend ce rapport est assez simple. Si vous avez accès à Data Explorer ou directement à votre base de données, vous pouvez essayer de l’exécuter et de l’ajuster pour voir si elle vous donne des données :

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)

Et voici le code du rapport lui-même :

Je crains qu’il soit difficile de déboguer davantage sans avoir accès à votre site afin que je puisse explorer la base de données.

1 « J'aime »

La requête dans Data Explorer renvoie des données :

1 « J'aime »

Désolé Roi, ceci s’est un peu perdu. Je suppose qu’il doit y avoir quelque chose qui ne va pas avec le code du rapport lui-même ? discourse/app/models/concerns/reports/posts.rb at 8596aa34c46071eb42ffbb9e19ad733d1765578e · discourse/discourse · GitHub .

Avez-vous accès à la console Rails de votre site ? Si oui, essayez ceci et voyez si cela vous donne des données :

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

Cela affichera également les requêtes SQL qu’il exécute, il pourrait donc y avoir d’autres indices là-bas.

1 « J'aime »

Pas de souci ! Ça n’a pas l’air parfait sur le tableau de bord administrateur, mais ce n’est pas aussi critique que d’autres bugs.

Oui.

Hm, est-ce que je faisais ça correctement ?

root@prometheus-discourse-sidemount:/var/www/discourse# rails c
Le nom du plugin est 'discourse-docs', mais le répertoire du plugin est nommé 'discourse-knowledge-explorer'
Le nom du plugin est 'discourse-user-notes', mais le répertoire du plugin est nommé 'discourse-staff-notes'
[1] pry(main)> Report.find("posts", start_date: 4.weeks.ago, end_date: Time.zone.now).data
=> []
[2] pry(main)>

La réponse est vide. Cela expliquerait la boîte vide sur le tableau de bord administrateur. Mais vous avez écrit qu’il devrait également y avoir une instruction SQL dans la réponse ?

1 « J'aime »

Ah désolé, peut-être que je ne l’ai vu que parce que je l’exécutais localement. Essayez ceci :

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

Vous obtiendrez beaucoup plus de bruit de requêtes maintenant, mais les dernières requêtes seront celles du rapport :

1 « J'aime »

Ok, beaucoup plus de bruit. :wink: Est-ce que c’est ce que vous cherchez ou avez-vous besoin de plus d’informations ci-dessus ?

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 « J'aime »

Oui, c’est ce dont j’ai besoin :slight_smile: La partie qui me frappe est AND NOT ((topics.category_id IN (NULL))); je ne l’ai pas dans la requête que je montre dans la capture d’écran ci-dessus. Cela exclurait tous les sujets sans catégorie du décompte, ce qui, selon la configuration de votre forum, pourrait être beaucoup ?

Je ne vois pas dans le code d’où cela vient. Prochaine étape, j’essaierais de faire ceci dans 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)

(J’ai supprimé la clause AND NOT ici), et voir si vous obtenez un résultat. Si j’exécute ceci localement, j’obtiens :

 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

Alors que si je garde la clause category_id que vos requêtes montrent, je n’obtiens aucune donnée.

1 « J'aime »

Fonctionne :

:sign_of_the_horns:

Tous nos messages ont une catégorie.

D’où vient cette condition supplémentaire ? :thinking:

1 « J'aime »

Ouais, je ne suis vraiment pas sûr :frowning: C’est une idée comme une autre, mais ça pourrait être un plugin qui ajoute/modifie quelque chose ? :thinking: Quels plugins utilisez-vous ? La première requête ci-dessus (celle avec count_all) vient d’ici :

Si l’appel de ceci dans la console ajoute toujours cette clause category_id IN (NULL), alors quelque chose est très bizarre :

Post.public_posts_count_per_day(4.weeks.ago, Time.zone.now)
1 « J'aime »