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”.
@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.
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.
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.
@simon – grazie mille per aver indagato! Sono sicuro che c’era molto da vagliare. Attendo con impazienza il ritorno del team Discourse che agirà sulla tua analisi.
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.)
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.