Multiple voci di riepilogo email ripetute

Ecco un altro che è stato appena inviato a un account utente di test inattivo:

  • Ultima visita 2024-09-12
  • Frequenza digest: giornaliera
  • “Includi contenuti dai nuovi utenti nelle email di riepilogo”: selezionato
  • nessun tag pertinente disattivato

Argomenti popolari:

“A.I. - è meglio più grande?” – ripetuto 3 volte. Argomento con 3 tag, 0 risposte, 0 like.
“Sfide di Ingegneria Sociale” – ripetuto 2 volte. Argomento con 2 tag, 1 risposta, 0 like.

Novità per te:

“Richieste di nuovi tag” – non ripetuto. Argomento con 0 tag, 0 risposte, 0 like.

1 Mi Piace

Nell’ultimo sommario ricevuto da uno dei miei account, nessuno degli argomenti è stato duplicato, ma i commenti sottostanti (“Post più popolari”) lo erano. C’erano cinque slot e due duplicati (tre post unici), entrambi dallo stesso argomento.

Modifica: sto esaminando alcuni sommari storici inviati a diversi account di test/amministratori:

  • Anche il precedente ha due duplicati nei Post più popolari, anch’essi dallo stesso argomento.
  • Quello prima aveva un argomento duplicato ma nessun Post più popolare duplicato. C’è un duplicato in “Novità per te”.
  • Quello prima non ha duplicati.
1 Mi Piace

@j127, sarebbe interessante sapere quante etichette avevano gli argomenti del tuo sommario. Nei miei campioni recenti, la duplicazione corrisponde al numero di etichette di un argomento. Potrebbe essere una coincidenza, o meno.

3 Mi Piace

Sono stato in grado di riprodurre il problema sul mio sito Discourse locale aggiungendo un tag all’impostazione del sito tag da sopprimere nel digest e quindi creando un argomento con più tag.

Il seguente codice causa il problema: 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

Modifica: Non penso che sia necessaria una LEFT JOIN qui. Le colonne dalla tabella topic_tags unita non sembrano essere utilizzate successivamente nel metodo. La correzione potrebbe essere semplice come:

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

Lascerò che il team di Discourse capisca l’approccio migliore. Il metodo for_digest viene eseguito molte volte e deve essere efficiente.

4 Mi Piace

Sì, tutti i post duplicati avevano due tag.

2 Mi Piace

@simon – grazie mille per aver indagato! :smiley: Sono sicuro che c’era molto da vagliare. Attendo con impazienza il ritorno del team Discourse che agirà sulla tua analisi.

1 Mi Piace

Confermo solo che la rimozione del tag che avevo in digest suppress tags ha ripristinato i riepiloghi alla normalità. (Nel frattempo mi affido a digest suppress categories.)

4 Mi Piace

@simon aveva ragione :+1: Era effettivamente il bug

7 Mi Piace

Ottime notizie! :smiley:

Non mi è del tutto chiaro quando i commit uniti saranno disponibili nel canale beta. Se mi trovo sulla versione 3.4.0.beta3-dev (53f9c81790) e non richiede un aggiornamento dell’interfaccia grafica, un aggiornamento da riga di comando rileverà questa modifica?

Puoi comunque eseguire il pull dell’interfaccia utente senza che venga richiesta, e importerà i nuovi commit. Ma anche eseguire una ricostruzione da riga di comando li importerebbe.

2 Mi Piace

Questo argomento è stato chiuso automaticamente dopo 3 giorni. Non sono più consentite nuove risposte.