Ho già notato un paio di cambiamenti recenti, incluso un bug che rompe:
Le quantità corrette sono ovviamente ancora disponibili, quindi è probabile che sia successo qualcosa durante la migrazione dei dati alle nuove tabelle?
Ci sono alcune discrepanze nel conteggio delle soluzioni in Discourse, poiché stavamo includendo argomenti e post già eliminati.
Prima della migrazione, indicavamo:
John ha 27 soluzioni perché le persone hanno contrassegnato il suo post come soluzione 27 volte.
Questo è memorizzato nella tabella UserActions.
Dopo la migrazione, ora contiamo:
John ha 20 soluzioni perché ci sono 20 argomenti in cui i suoi post sono soluzioni
Questo è memorizzato nella tabella SolvedTopics e ha un collegamento diretto a un argomento esistente e non eliminato.
C’è una sottile differenza qui: nel primo scenario non c’erano validazioni per verificare se il post della soluzione o il suo argomento esistessero ancora.
Verificherò con il nostro team quale sia il numero migliore da visualizzare. Personalmente, sono propenso a contare le soluzioni per gli argomenti che esistono ancora.
Sono abbastanza sicuro che questo non possa essere il problema, poiché causerebbe solo un numero inferiore anziché superiore in alcuni casi, corretto? Ho un altro esempio per te:
-> Sbagliato: Profile - SGS - Garuda Linux Forum
-> Giusto:
Mi sembra impossibile che questo meccanismo di conteggio possa più che raddoppiare il numero di post risolti. Oltre a ciò (ovviamente non confermato), dubito fortemente che il numero di post eliminati fosse così alto nel mio esempio precedente.
Credo di aver appena trovato il bug (anche se l’affermazione sulla discrepanza che ho menzionato sopra è ancora vera) –
Nella precedente implementazione, il conteggio delle soluzioni nel riepilogo di John viene contato in base a quante volte qualcuno ha contrassegnato il post di John come soluzione.
def solved_count
UserAction.where(user: @user).where(action_type: UserAction::SOLVED).count
end
Nella nuova implementazione, il conteggio delle soluzioni nel riepilogo utente di John è il numero di volte in cui John ha contrassegnato un post come soluzione.
def solved_count
DiscourseSolved::SolvedTopic.where(accepter: @user).count
end
Questo spiega la grande differenza. “Conteggio soluzioni” è cambiato definizione da “quante volte hai risposto” a “quante volte hai accettato”.
Correggerò il bug, grazie ancora per la segnalazione!
Aggiornerò anche i diversi metodi di conteggio utilizzati nel popup del profilo e nel riepilogo utente.
Complimenti a @ondrej per avermi anche menzionato Solution badge not working?. Sembra che alcune discrepanze si stessero già verificando prima di questa migrazione. La cosa positiva è che migreremo a un numero più coerente tra Discourse e i nostri plugin.