Las estadísticas de Nuevas Publicaciones del Panel de control están dañadas

Hola a todos,

desde una de las últimas actualizaciones hace una o dos semanas, las nuevas estadísticas de publicaciones en el panel de control están fallando aquí. Ya no muestra nada. ¿Es esto un problema solo para mí o un error común? No encontré nada mediante la búsqueda aquí.

Saludos

Disculpa, ¿puedes aclarar si estás diciendo que estos gráficos no funcionan?

¿Cuándo fue la última vez que actualizaste tu instancia, puedes actualizarla ahora?

Disculpa por no haber sido claro, aquí tienes una captura de pantalla:

Actualicé esta tarde a 05685d430f.

Si mal no recuerdo, hace aproximadamente una o dos semanas que actualizo cada cinco días aproximadamente en este momento.

Y sí, no hay mucho tráfico en este momento, pero tenemos nuevas publicaciones. :wink: También hice clic y elegí el año desde hoy. Tampoco hay nada ahí.

Lo primero que se me ocurre es “no hay suficientes datos”, pero se lo mencionaré al equipo de personal de xp que puede ayudar a depurar.

1 me gusta

¡Gracias! Otra captura de pantalla, donde se puede ver que hay nuevos temas. Así que también debe haber nuevas publicaciones. Al menos tantas como temas (pero seguro que aquí hay más :wink:).

Si va a la página del informe completo en \u003chttps://YOURSITE.COM/admin/reports/posts?end_date=2025-02-17\u0026start_date=2025-01-17\u003e, ¿puede obtener datos, ajustando las fechas/filtros? ¿Ve algún error en los registros en \u003chttps://YOURSITE.COM/logs\u003e o en la pestaña Red de Chrome DevTools al cargar esta página o el panel?

1 me gusta

No, todo está vacío allí también. También puedo ajustar las fechas de inicio y fin, no cambia.

No, ninguno. Solo algunas notificaciones de deprecación, no relacionadas con las estadísticas (según la hora).

De hecho, hay errores. Cuando cargo la página, son 9, y aumentan con el tiempo.

¿Esto ayuda? ¿Debo copiar y pegar (texto) uno/todos estos errores?

2 Me gusta

De hecho, yo también me he encontrado en esta situación. A mi comunidad también le falla la visualización del número correcto de publicaciones.

¿No es correcto o nada en absoluto como aquí?

1 me gusta

He investigado un poco y parece que los errores de domQueryService provienen de la extensión de Chrome Bitwarden, es poco probable que causen problemas. Los errores del mini-profiler se pueden ignorar.

El error de fingerprint-report proviene de GitHub - discourse/discourse-fingerprint: A plugin that computes user fingerprints to help administrators combat internet trolls., y aunque es un problema que debemos solucionar, no parece impedir que el informe de Publicaciones se cargue localmente para mí.

Ese archivo body_tag_1.js con el que otras personas parecen tener problemas a veces en Discourse Lost ability to scroll through HA community site - community-feedback - Home Assistant Community. ¿Tienes algún bloqueador de anuncios? Si es así, intenta deshabilitarlos. Si no o si eso no funciona, intenta habilitar el Modo Seguro Using Safe Mode to troubleshoot issues with themes and plugins y ver si puedes cargar la página, si puedes, eso indicaría un problema con un plugin o tema.

Finalmente, intenta cargar el JSON del informe y ve si obtienes algún resultado aquí:

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 Me gusta

Ya tengo el que viene en Opera, que es el navegador que estoy usando en el ordenador. También uso Pi-hole con varias listas de bloqueo.

Pero: estos problemas también ocurren en mi iPad en la aplicación Discourse y en otras redes, incluyendo datos móviles. Así que no hay bloqueadores de anuncios ni nada parecido.

Puedo, pero ya no hoy. :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}]}

Dado que esto no muestra nada, si lo he entendido bien, ¿tiene sentido el modo seguro?

1 me gusta

De acuerdo, gracias, eso es útil e indica que faltan los datos en sí, y no que hay algún error en el frontend :thinking:

La consulta SQL que respalda este informe es bastante simple, si tienes acceso a Data Explorer o directamente a tu base de datos, puedes intentar ejecutarla y ajustarla para ver si te da algún dato:

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)

Y aquí está el código del informe:

Me temo que es un poco complicado depurar esto más a fondo sin tener acceso a tu sitio para poder investigar la base de datos.

1 me gusta

La consulta en Data Explorer devuelve datos:

1 me gusta

Lo siento Roi, esto se perdió un poco entre las grietas. ¿Supongo que debe haber algo malo con el código del informe en sí? discourse/app/models/concerns/reports/posts.rb at 8596aa34c46071eb42ffbb9e19ad733d1765578e · discourse/discourse · GitHub .

¿Tienes acceso a la consola de rails de tu sitio? Si es así, intenta esto y mira si te da algún dato:

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

Esto también mostrará las consultas SQL que ejecuta, por lo que podría haber más pistas allí.

1 me gusta

¡No te preocupes! No se ve perfecto en el panel de administración, pero no es tan crítico como otros errores.

Sí.

Hm, ¿lo estaba haciendo bien?

root@prometheus-discourse-sidemount:/var/www/discourse# rails c
El nombre del plugin es 'discourse-docs', pero el directorio del plugin se llama 'discourse-knowledge-explorer'
El nombre del plugin es 'discourse-user-notes', pero el directorio del plugin se llama 'discourse-staff-notes'
[1] pry(main)> Report.find("posts", start_date: 4.weeks.ago, end_date: Time.zone.now).data
=> []
[2] pry(main)>

La respuesta está vacía. Eso explicaría el cuadro vacío en el panel de administración. ¿Pero escribiste que la respuesta también debería contener una declaración SQL?

1 me gusta

Ah, lo siento, tal vez solo lo vi porque lo estaba ejecutando localmente. Intenta esto:

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

Ahora obtendrás mucho más ruido de las consultas, pero las últimas consultas serán las del informe:

1 me gusta

De acuerdo, mucho más ruido. :wink: ¿Es esto lo que buscas o necesitas más de lo anterior?

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 me gusta

Sí, eso es lo que necesito :slight_smile: La parte que me llama la atención es AND NOT ((topics.category_id IN (NULL))); no la tengo en la consulta que muestro en la captura de pantalla anterior. Esto excluiría todos los temas sin categoría del recuento, lo que, dependiendo de la configuración de tu foro, podría ser mucho.

No veo en el código de dónde viene eso. El siguiente paso que intentaría sería hacerlo en 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)

(He eliminado la cláusula AND NOT aquí), y ver si obtienes algún resultado. Si ejecuto esto localmente, obtengo:

 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

Mientras que si mantengo la cláusula category_id que tus consultas muestran, no obtengo datos.

1 me gusta

Funciona:

:sign_of_the_horns:

Todas nuestras publicaciones tienen una categoría.

¿De dónde viene esta condición adicional? :thinking:

1 me gusta

Sí, realmente no estoy seguro :frowning: Es una posibilidad remota, pero ¿podría ser un plugin que añade/modifica algo? :thinking: ¿Qué plugins usas? La primera consulta anterior (la que tiene count_all) proviene de aquí:

Si simplemente llamar a esto en la consola todavía añade esa cláusula category_id IN (NULL), entonces algo es muy extraño:

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