Mehrfache wiederholte Zusammenfassung-Mail-Einträge

Hier ist ein weiteres, das gerade an ein inaktives Testbenutzerkonto gesendet wurde:

  • Zuletzt gesehen am 12.09.2024
  • Häufigkeit der Zusammenfassung: täglich
  • „Inhalte von neuen Benutzern in Zusammenfassungs-E-Mails einschließen“: aktiviert
  • Keine relevanten Tags stummgeschaltet

Beliebte Themen:

„KI – ist größer besser?“ – 3 Mal wiederholt. Thema hat 3 Tags, 0 Antworten, 0 Likes.
„Social Engineering Challenges“ – 2 Mal wiederholt. Thema hat 2 Tags, 1 Antwort, 0 Likes.

Neu für Sie:

„Neue Tag-Anfragen“ – nicht wiederholt. Thema hat 0 Tags, 0 Antworten, 0 Likes.

1 „Gefällt mir“

Im neuesten Digest erhielt eines meiner Konten keine doppelten Themen, aber die Kommentare darunter waren es (“Beliebte Beiträge”). Es gab fünf Plätze und zwei Duplikate (drei eindeutige Beiträge), beide vom selben Thema.

Bearbeiten: Ich sehe mir einige historische Digests an, die an verschiedene Test-/Admin-Konten gesendet wurden:

  • Im vorherigen gab es ebenfalls zwei Duplikate in den Beliebten Beiträgen, ebenfalls vom selben Thema.
  • Im davor gab es ein doppeltes Thema, aber keine doppelten Beliebten Beiträge. Es gibt ein Duplikat unter “Neu für Sie”.
  • Im davor gibt es keine Duplikate.
1 „Gefällt mir“

@j127, es wäre interessant zu wissen, wie viele Tags deine Digest-Themen hatten. In meinen letzten Stichproben korrespondiert die Duplizierung mit der Anzahl der Tags eines Themas. Könnte Zufall sein – oder auch nicht.

3 „Gefällt mir“

Ich konnte das Problem auf meiner lokalen Discourse-Site reproduzieren, indem ich ein Tag zur Website-Einstellung digest suppress tags hinzugefügt und dann ein Thema mit mehreren Tags erstellt habe.

Der folgende Code verursacht das Problem: discourse/app/models/topic.rb at main · discourse/discourse · GitHub

    if SiteSetting.digest_suppress_tags.present?
      tag_ids = Tag.where_name(SiteSetting.digest_suppress_tags.split("|")).pluck(:id)
      if tag_ids.present?
        topics =
          topics.joins("LEFT JOIN topic_tags tg ON topics.id = tg.topic_id").where(
            "tg.tag_id NOT IN (?) OR tg.tag_id IS NULL",
            tag_ids,
          )
      end
    end

Bearbeiten: Ich glaube nicht, dass hier ein LEFT JOIN benötigt wird. Die Spalten aus der verknüpften topic_tags-Tabelle werden später in der Methode nicht verwendet. Die Korrektur könnte so einfach sein:

if SiteSetting.digest_suppress_tags.present?
Tag_ids = Tag.where_name(SiteSetting.digest_suppress_tags.split("|")).pluck(:id)
  if tag_ids.present?
  topics =
    topics.where.not(id: TopicTag.where(tag_id: tag_ids).select(:topic_id))
  end
end

Ich überlasse es dem Discourse-Team, den besten Ansatz zu ermitteln. Die Methode for_digest wird oft aufgerufen und muss effizient sein.

4 „Gefällt mir“

Ja, alle doppelten Beiträge hatten zwei Tags.

2 „Gefällt mir“

@simon – vielen Dank, dass Sie das durchgearbeitet haben! :smiley: Ich bin sicher, es war viel zu durchforsten. Ich freue mich darauf, dass das Discourse-Team zurückkehrt und Ihre Analyse umsetzt.

1 „Gefällt mir“

Ich bestätige nur, dass das Entfernen des Tags, das ich in digest suppress tags hatte, die Zusammenfassungen wieder normalisiert hat. (Ich verlasse mich in der Zwischenzeit auf digest suppress categories.)

4 „Gefällt mir“

@simon hatte Recht :+1: Das war tatsächlich der Bug

7 „Gefällt mir“

Tolle Neuigkeiten! :smiley:

Ich bin mir nicht ganz sicher, wann gemergte Commits im Beta-Kanal verfügbar sind. Wenn ich auf 3.4.0.beta3-dev (53f9c81790) bin und kein GUI-Update angefordert wird, wird dann ein Befehlszeilen-Update diese Änderung übernehmen?

Sie können die Benutzeroberfläche immer noch abrufen, ohne dass eine Aufforderung dazu erfolgt, und sie ruft die neuen Commits ab. Aber auch ein CLI-Neubau würde sie abrufen.

2 „Gefällt mir“

Dieses Thema wurde nach 3 Tagen automatisch geschlossen. Neue Antworten sind nicht mehr möglich.