Почему в разделе «Последние» стали появляться синие цифры unread сообщений (когда их не должно быть)?

Это очень новое (сегодня?) здесь, на Meta. У меня есть несколько тем в разделе «Последние», у которых отображается синее число непрочитанных сообщений (по-моему, только для одного сообщения), и я не понимаю, почему. Меня не упоминали, и тема находится в «обычном» режиме. Не отслеживается, не контролируется. Мне кажется, это темы, которые я даже никогда не открывал. Я только что проверил раздел «Непрочитанные» перед тем, как перейти к ним, и их там не было.
У кого-то ещё есть такая проблема?

(П.С.: Я сейчас не пьян)

Отладка этого без знания темы, вызвавшей проблему, затруднительна. Если вы снова столкнётесь с этой проблемой, попробуйте записать, в каких темах она возникает.

Согласно вашим настройкам в Discourse, после заголовка в списке «Последние» для тем, созданных за последние пару дней, должна отображаться синяя точка. Эти темы также должны быть перечислены в вашем списке «Новые темы». Если в списке «Последние темы» вы видите синий значок с цифрой внутри, это должно указывать на наличие новых сообщений в теме, за которой вы следите или которую отслеживаете. Эти темы также должны появляться в вашем списке «Непрочитанные». Вы автоматически начнёте следить за темой, если потратите 4 минуты на её чтение, так что, возможно, именно это и произошло.

Вот эти два: Could Discourse offer a StackExchange-like SSO/Federated login service? и WordPress comments are showing отображали сообщение «1 непрочитанное». Это произошло как раз перед тем, как я создал тему, в которой мы сейчас находимся.

Не уверен, что именно происходило со «синей точкой», так как я не уделял этому особого внимания.
Я понимаю всё, что вы сказали, и это действительно соответствовало моим мыслям. Я (почти) уверен, что синий значок там быть не должен был. Они не были помечены как «слежение» автоматически из-за времени, проведённого в них. Как я уже говорил, я, по-моему, никогда их не открывал, и позже проверил — для обоих статус был «обычный».

При моём предыдущем посещении meta сегодня, кажется, была одна тема с такой «проблемой». Я не стал вникать слишком глубоко, поэтому не помню, какая именно, и не могу быть полностью уверен. Но то, что описано в начале этого сообщения, я довольно уверен, что это произошло и не должно было случиться. Думаю, я никогда раньше такого не видел. Надеюсь, это поможет.

У меня только что снова появилось сообщение о 1 непрочитанном сообщении (синяя цифра) в одной из тем, чего не должно было быть (или я не понимаю, почему). Вот эта: Email for specific category. Это происходит нечасто, лишь изредка. Похоже, всегда отображается только 1 непрочитанное сообщение (я пока не уверен в этом, но буду отслеживать). Я попытался сравнить три темы, в которых это произошло, но не вижу никакой заметной закономерности.

Никто другой этого не замечает?

(Или это связано с датой/временем? Похоже, что это произошло ровно через неделю после последнего раза?)

Подумав об этом, я предположил, что это может происходить, когда браузер остается открытым на странице «Последние» (Latest), а затем, вернувшись, я нажимаю на синюю панель «Показать x новых или обновленных тем». Возможно, это случается только в такой ситуации, когда сообщения были опубликованы в короткий промежуток времени в раннее воскресенье утром!

Я пока не уверен (проверю эту теорию в дальнейшем), но это кажется логичным с учетом того, что я наблюдал. Возможно, не так много людей оставляют браузер открытым на странице «Последние» в течение длительного времени (а я это делаю), поэтому проблема могла остаться незамеченной.

Если вы хотите попытаться воспроизвести это, @simon, вы можете попробовать: оставьте браузер открытым на странице «Последние» в следующие выходные и через некоторое время нажмите на синюю панель, чтобы увидеть новые сообщения. Если я правильно предположил, это может произойти.

Я продолжу: на данный момент кажется, что это связано с тем, что мета-форум открыт в браузере на странице «Последние», и со временем я нажимаю на синюю панель, чтобы увидеть новые сообщения. Интересный момент: это произошло только для одной темы. Я зашел в нее, вышел с помощью кнопки «Назад», и после этого их стало больше (действительно, для каждой темы отображалась только синяя цифра «1»), но просто нажатие кнопки «Обновить страницу» в браузере заставило их исчезнуть.

Так что это может происходить, когда страница не обновлялась несколько дней, и вы используете её «непрерывно» (если только проблема не на моей стороне!?)

Я иногда сталкиваюсь с этим. Я нашел эту тему, когда это произошло снова (синий диск с номером на «нормальном» и, как мне кажется, ранее не виденная тема), и стал искать, чтобы узнать, что на самом деле означают эти цифры.

Похоже, это баг (числа означают «непрочитанные» сообщения, но вы даже не отслеживаете и не наблюдаете за этими темами! Вы часто даже никогда не заходили в них). Сейчас у меня то же самое: это случается довольно «периодически». Было бы хорошо однажды выяснить, откуда это берётся, и исправить проблему.

Вот пост, который я добавил в закладки вчера. Синий круг означает «новые», а серый — «непрочитанные»:

Но вот что говорит Meta: они называют синие кружки с цифрами «непрочитанными» (цифра 1 находится в синем кружке):

Ваши непрочитанные темы отображаются здесь.

По умолчанию темы считаются непрочитанными, и если вы:

  • Создали тему
  • Ответили на тему
  • Прочитали тему более 4 минут

Или если вы явно установили для темы статус «Отслеживаемая» или «Наблюдаемая» через панель уведомлений в нижней части каждой темы.

Перейдите в настройки, чтобы изменить это.

Кажется, я немного ушёл от темы…

Есть ещё кое-что, что кажется совершенно не связанным, но somehow близко: в последние дни я вижу большое количество непрочитанных сообщений в некоторых темах, за которыми слежу (подписан). Эти синие кружки появляются на темах, за которыми я действительно слежу, в отличие от описанного выше бага.

Количество «непрочитанных сообщений» намного превышает фактическое число сообщений в теме. Я подозреваю, что, возможно, в теме было удалено столько сообщений!? И удалённые сообщения отображаются как «непрочитанные», хотя их на самом деле уже нет? Последнее такое случилась у меня в этой теме: Discourse Signatures (мне показано 92 непрочитанных сообщения, хотя в теме всего 4 ответа).

Похоже, это ещё один баг, связанный с «синими кружками»/«непрочитанными сообщениями».

Да, при удалении элементов счёт будет неверным.

Разве не стоило бы когда-нибудь исправить это? Учитывать количество «непрочитанных» при удалении. Ваш ответ, похоже, подразумевает, что нет :confused:

Текущая работа системы явно показывает, что было массовое удаление, и это немного странно (вам сообщают, что у вас есть x постов для чтения, хотя вы их уже прочитали, и их даже больше нет)

Это очень сложное изменение, и мы не можем исправить этот подсчет без экстремальных потерь в производительности.

Главной странице пришлось бы просматривать каждый отдельный пост в каждой отдельной теме, которую она отображает, чтобы получить 100% точные подсчеты. Это слишком затратно и привело бы к очень медленной загрузке главной страницы.

Справедливо.
Я не знаю, как это работает, так что простите, если мои рассуждения ошибочны. Мне казалось, что можно что-то сделать на стороне сервера при удалении: как-то исправить счетчики для всех пользователей, чтобы учесть удаления. Я понимаю, что нет смысла каждый раз проверять, не были ли удалены посты на «главной странице», особенно учитывая, что удаления — скорее исключение (новые посты — правило).

Подсчёт всегда динамический.

  1. Мы знаем, до какого номера сообщения вы дочитали.
  2. Мы знаем максимальный номер сообщения в теме.
  3. Критически важно: мы не хотим ломать существующие гиперссылки на тему, поэтому никогда не перенумеровываем сообщения. Если вы создадите сообщение после 1000 удалений, его номер будет 1001.

Мы не храним на сервере кэш для каждого пользователя с фактическими подсчётами. Если бы мы это делали, нам приходилось бы проводить потенциально очень дорогостоящий пересчёт каждый раз при создании или удалении сообщения. Например:

  • сообщение 1
  • сообщение 2 удалено
  • сообщение 3
  • сообщение 4 удалено
  • сообщение 5

В таком случае нужно пересчитывать всё для каждого пользователя при удалении и поддерживать этот кэш в актуальном состоянии. Стоимость всей этой учёбы очень и очень высока.

Спасибо за эти пояснения, @sam!

Это не кажется «таким уж плохим» (я полагаю, все понимают, что в счёт включаются удалённые посты). Однако у меня возникли трудности с пониманием того, как это привело к тому, что я наблюдал. Например, с последними «92 непрочитанными постами», которые я получил. Я не думаю, что между двумя моими посещениями было создано и удалено 92 новых поста.

Главный вопрос: что происходит, когда разница между (наивысшим номером поста — номером последнего прочитанного поста) отрицательна? Не показывает ли система в настоящее время абсолютное значение этого отрицательного числа как количество непрочитанных постов? Если да, то именно это и нужно исправить: НЕ показывать никакие отрицательные числа как непрочитанные сообщения.

Проблема возникает, когда «наивысший номер поста» становится фактически меньше «номера поста, до которого вы читали», потому что последний или несколько последних постов были удалены. Пока последний пост темы не удалён, согласно моим пониманиям ваших пояснений, проблем быть не должно. В приведённом выше примере, я считаю, мы могли прийти к ситуации, когда «наивысший номер поста» = ОП, потому что всё было удалено, кроме самого первого поста темы.

Мы предусмотрели защиту от этого. Вы не увидите синий пузырёк… мы не отображаем (-55).

Например:

  • пост 1
  • пост 2
  • пост 3   ← вы прочитали до сюда
  • пост 4
  • пост 5

Тогда:

  • пост 1
  • пост 2
  • пост 3   ← вы прочитали до сюда
  • пост 4
  • пост 5

Для вас ничего не прочитано, синего пузырька нет.

Теперь:

  • пост 1
  • пост 2
  • пост 3   ← вы прочитали до сюда
  • пост 4
  • пост 5
  • пост 6

У вас 3 непрочитанных… на самом деле у вас только 1, но такова цена текущей реализации, которую нельзя улучшить каким-либо тривиальным способом.

@sam, я понимаю, что ты имеешь в виду, и как ты это объясняешь (это логично и очень понятно), НО это не похоже на то, что я вижу здесь в Discourse :confused:

Последний пример: только что мне было показано 29 непрочитанных сообщений в этой теме: Discourse BBCode. Я почти уверен, что в прошлый раз, когда я был здесь (не так давно), не было НИ ОДНОГО непрочитанного сообщения, а теперь я вижу автора темы (OP) и всего 2 сообщения от 2 часов назад (всего сообщений в теме = 3). Не думаю, что за время моего отсутствия было создано и удалено 27 новых сообщений, или было? (это было бы простым объяснением!). Не могли бы вы взглянуть? (Если нет, то почему появилась синяя метка «29 непрочитанных»?)

Возможно, это связано с такими темами: «Ответы в этой теме автоматически удаляются через месяц». Или, может быть, это связано с тем, когда пользователь начал следить за темой?

Я немного запутался здесь :wink:

@sam Просто к сведению: у меня теперь появилась синяя метка «146 непрочитанных сообщений» по этой теме: Discourse Calendar (and Event), и я не могу понять, как это возможно, исходя из ваших объяснений выше. Единственное, что приходит в голову, — это то, что отметка до какого поста вы читали, сдвигается назад, когда сам пост удаляется (хотя вы говорили, что это не так). Тогда я не знаю. Но я точно знаю, что массовые удаления приводят к появлению больших синих меток с количеством непрочитанных сообщений.

В той теме удалено 139 ответов, и это, безусловно, причина.

Кажется, у нас есть код нормализации, который сбрасывает номер последнего прочитанного поста, если последний прочитанный вами пост больше не существует. Возможно, стоит это скорректировать.

Отлично. Действительно, в этом и был смысл.

Ещё один быстрый вопрос: я видел другую тему, где было удалено около 200 сообщений. Почему бы не создать категорию «Архив» и переместить эти сообщения туда в раздел «Архивные темы», вместо того чтобы удалять их безвозвратно? Эту категорию можно было бы по умолчанию исключить из поиска, но с возможностью поиска внутри неё. Таким образом, вы сохраняете накопленные знания и обсуждения, доступные для просмотра и поиска всем пользователям (при этом достигается и эффект «очистки» или «прореживания», которого вы стремитесь добиться).

Неужели «цена» сохранения доступности этих сообщений для всех действительно слишком высока? (Вопрос в сторону: вы удаляете их полностью или всё ещё можете получить к ним доступ изнутри? То есть они удаляются только публично?)

Спасибо.