Мне кажется, это не работает корректно, если тема закрыта с помощью таймера темы. Несколько пользователей сообщали об этой проблеме. У нас только что снова возникла такая ситуация. Предполагая, что он прав, когда говорит, что у него закончились голоса, он (на момент написания) имеет 20 использованных голосов (что является нашим лимитом), и одна из этих тем закрыта, поэтому у него должен быть один свободный голос.
Об этом уже упоминалось несколько раз, но пользователи сообщали об этом только после того, как «отзывали» свои старые голоса, поэтому мне не удавалось это проверить. 99% наших тем, в которых можно голосовать, закрываются с помощью таймера темы, установленного на определённое количество дней с момента последнего ответа, поэтому я подозреваю, что ошибка может быть связана именно с этим?
Мы используем последнюю версию плагина и очень недавно обновили сам Discourse:
Я тоже разбираюсь с похожей проблемой. Мне кажется, она уже возникала несколько раз, но мы пока не смогли точно определить причину.
Только что протестировал это с таймером темы «Закрыть после последнего сообщения» (надеясь, что это тот самый недостающий элемент, который я искал ), но мой голос был возвращён, как и ожидалось, когда сработал таймер.
Есть ли что-то ещё особенное в темах, на которых вы заметили это поведение?
Кроме того, если у вас установлен/включён Data Explorer, вы можете просмотреть любые прошлые темы, в которых тема закрыта и/или заархивирована, но голоса не были возвращены, используя этот запрос:
SELECT
dvv.topic_id,
t.last_posted_at::date,
tvc.votes_count
FROM discourse_voting_votes dvv
JOIN topics t ON t.id = dvv.topic_id
JOIN discourse_voting_topic_vote_count tvc ON tvc.topic_id = dvv.topic_id
WHERE dvv.archive = false
AND (t.closed = true OR t.archived = true)
GROUP BY 1,2,3
ORDER BY 2
Как я уже говорил, большинство наших тем закрываются таймером темы, но я думаю, что все, кроме одной, были бы закрыты кнопкой «Закрыть тему» (и, возможно, все они). Есть ли способ проверить, как была закрыта тема? Таким образом, вопреки моему предположению, что проблема в таймере, это огромное совпадение, что проблема, похоже, возникает с темами, закрытыми с помощью обычной кнопки закрытия. Крошечный процент закрытий происходит через эту кнопку, поэтому, если это 6 или 7 из 7 примеров, это очень сильно указывает на то, что кнопка связана с этим.
Похоже, что не возвращаются все голоса за тему, а не только их часть.
Две темы в один день. Возможно, просто совпадение.
Последняя тема была удалена автором.
Помимо моего первого пункта выше, я не вижу особой закономерности, но, пожалуйста, посмотрите сами на эти обсуждения, если заметите что-то
Есть ли способ вернуть их пользователям вручную сейчас? Или даже автоматическая ночная коррекция, пока не будет найдена первопричина?
К сожалению, похоже, это тоже не причина. Мне кажется, что есть ещё что-то, что добавляется в ситуацию и вызывает это в некоторых случаях, но не во всех.
Чтобы проверить теорию, не могли бы вы открыть один из них, а затем снова закрыть, чтобы посмотреть, не сбросятся ли голоса? (Это также должно вернуть их, если они были перемещены в категорию, где голосование невозможно, что тоже стоит проверить. А затем переместить обратно, чтобы увидеть, сохраняется ли проблема)
Кажется, мы обнаружили сценарий, который может совпадать с вашей ситуацией. История ваших правок не является публичной, но похоже, что вы могли добавить тег к этим вопросам после их закрытия? Если это так, мы, вероятно, готовим исправление, чтобы система больше не помечала эти голоса как «актуальные».
Да, это возвращает голоса (согласно отчёту Data Explorer)
Ага, именно так Обычно мы добавляем тег (часто что-то вроде «idea-completed»), а затем закрываем тему с помощью таймера. В редких случаях, когда закрытие происходит сразу, мы тоже обычно добавляем тег, но это может быть сделано до или после «закрытия», с интервалом в несколько секунд (я никогда особо не задумывался об этом). Это объясняет «случайность», что все они были закрыты через кнопку закрытия!
Спасибо за всю помощь, это очень ценно Ждём выхода исправления.
Одна тема была удалена автором, и это, похоже, не вернуло голоса. Мои попытки «Открыть», а затем «Закрыть» тему тоже не возвращают их. Что вы посоветуете? Или исправление ошибки придёт вместе с миграцией для корректировки данных? Если да, мы можем подождать.
Это предотвратит повторение проблемы в будущем, но не исправит уже существующие случаи.
Возможно сбросить их через консоль Rails, однако, если их немного, думаю, будет проще использовать интерфейс для запуска механизма «возврат голоса», если это возможно.
Хм. Это неприятно. Вы можете попробовать восстановить тему, переместить её в категорию #staff, а затем закрыть и архивировать её там. Все три действия должны освободить голос, так что, надеюсь, одно из них сработает. Если нет, мы можем использовать подход через Rails, если проблема не решится.