Перенос сообщений чата в новый канал всё перемешал

Я перенёс 28 сообщений из одного канала в новый, и они все оказались в неправильном порядке:

Хм. Это только мне так кажется, или они теперь действительно в неправильном порядке? :thinking:

Я ещё раз посмотрел на сообщения в неправильном порядке в https://meta.discourse.org/chat/channel/147/chat?messageId=2644, и оказалось, что у всех у них одинаковая временная метка.

6 лайков

Спасибо за сообщение. Я действительно пытался учесть это при разработке функции, но, похоже, мне слишком повезло с тестированием :sweat_smile: Действительно, здесь мы устанавливаем все временные метки в одно и то же значение:

Проблема в том, что мы не хотим вставлять перемещённые сообщения между существующими сообщениями канала, и чем больше сообщений вы перемещаете, тем сложнее это становится.

Прежде чем я углублюсь в это, один вопрос: можете ли вы вспомнить и определить, какие именно сообщения находятся не на своих местах? Их всего несколько, или они полностью перепутаны? Думаю, причина расхождений может быть в том, что при получении сообщений для канала мы сортируем их по ID (в большинстве случаев сортируем по убыванию, а затем разворачиваем):

В то время как в модуле перемещения сообщений я сортирую по created_at, чтобы сохранить порядок, что может вызывать небольшие расхождения:

У меня есть несколько идей, как это можно исправить (возможно, достаточно изменить сортировку в модуле перемещения сообщений на ID или изменить сортировку в контроллере на created_at; я склоняюсь ко второму варианту, так как он кажется более логичным), но мне бы хотелось узнать, насколько сильно нарушен порядок, если это возможно определить.

5 лайков

Я восстановил их в оригинальном канале после того, как заметил, что в новом они перемешаны. Должен суметь процитировать их здесь в правильном порядке: :crossed_fingers:

Исходный порядок
Originally sent in The Chat Feedback topic
JammyDodger

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

Есть ли у кого-нибудь идеи, как мы можем это сделать, исходя из того, где мы сейчас находимся с тестированием чата здесь, на Meta?

Пункты обратной связи отличные, и я думаю, что вскоре они будут выделены в отдельные темы, но я надеялся на что-то, что могло бы служить отличным примером для всех, кто только присоединяется к @chat-testers. Что-то, на что люди могут просто посмотреть и сказать: «Ах, да. Сначала я не был уверен, но теперь вижу, как чат может быть предшественником глубокого обсуждения».

Возможно, я прошу слишком многого :slightly_smiling_face:

RGJ

Честно говоря, я не вижу, как чат может быть предшественником глубокого обсуждения :thinking:

Но это может быть потому, что я старый.

JammyDodger

Так что мы ищем пример, который поможет переубедить и @RGJ :slightly_smiling_face:

Moin

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

JammyDodger

@Moin, ваши навыки поиска всегда являются благословением :slightly_smiling_face:

Я искал что-то о семенах и деревьях, но не мог найти это здесь.

Но, да. Какой-то расслабленный/дружелюбный/неформальный чат, в котором идея формируется в ходе лёгкого диалога, а затем вдохновляет на создание полноценной темы для обсуждения.

oshyan

Это на 100% соответствует моим интересам и сценарию использования чата. Но можете ли вы уточнить, что именно вы имеете в виду под примером этого? Вас интересуют, скажем, образцы чата (независимо от того, происходил ли он в чате Discourse), которые могли бы/должны были бы (очевидно) привести к более глубокому обсуждению и/или привели к более глубокому обсуждению, но в, возможно, менее идеальной среде для этого (чата по сравнению с форумом)? Если это так, мне может потребоваться немного времени, чтобы найти их, но у меня точно есть хорошие примеры из моего сообщества по продуктивности. Если вы ищете примеры в чате Discourse, конкретно, это будет сложнее найти. Но я абсолютно уверен, что это является большой ценностью чата в Discourse, и в зависимости от сообщества это будет играть большую или меньшую роль.

Jonathan_Poyer

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

oshyan

Как, возможно, более концептуальный пример ситуации, когда чат может (и должен) быстро превратиться в тему, даже в середине обсуждения, это то, что часто происходит в сообществах управления разработкой программного обеспечения, в которых я участвую, а также в моём сообществе по продуктивности:

  • Новый человек присоединяется к чату и задаёт, казалось бы, простой или безобидный вопрос.
  • Ответы от хорошо информированных и/или эмоционально вовлечённых постоянных участников быстро растут до десятков строк текста, начинают появляться разрывы абзацев, и этот канал чата насыщается только обсуждением этого одного вопроса (темы).
  • Всё становится трудным для ответа, так как каждое «сообщение» включает множество пунктов и идей, а отсутствие функции выбора для цитирования/ответа затрудняет анализ и ответ на каждую часть.
  • Эти разговоры также часто представляют собой ценные дебаты, которые быстро исчезнут в последующем потоке чата, поэтому даже ретроспективное перемещение их в тему может быть очень ценным.
JammyDodger

Я думаю, что изначально я искал что-то, что мы могли бы предоставить в качестве примера темы/чата здесь, на Meta, чтобы продемонстрировать новичкам в Discourse Chat, как он может гармонично сочетаться с устоявшимися представлениями о «длинных абзацах» в Discourse.

Так что даже что-то, что мы создали специально, чтобы аккуратно продемонстрировать этот принцип.

Хотя звучит так, будто у вас есть много примеров, которые станут отличной темой для обсуждения :slightly_smiling_face:

Я думаю, что всё, что поможет людям легко представить, где в структуре их форума может вписаться чат, будет полезно. Я открыт ко всем идеям :+1:

agungor

Мне кажется, что этот разговор сам по себе становится таким примером. :smiley:

Jonathan_Poyer

Чувствуется, что то, что на других платформах превратилось бы в ветку, здесь должно либо превратиться в другой чат, либо стать отдельной темой. Но в то же время тема кажется больше похожей на долгосрочное обсуждение, а не на разовое, как здесь?

jimkleiber

Возможно, один из способов — процитировать начальное сообщение чата, которое запустило идею, в теме: How can chat seed topic discussions?

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

Но, иронично, я отвечаю здесь lol.

Хм, я только что попытался процитировать свои ответы здесь в той же теме, но, кажется, у меня есть возможность цитировать только в новую тему, а не в существующую.

JammyDodger

Я как раз обдумывал это. :slightly_smiling_face: Я пытался понять, могу ли я создать тему, где чат каждого человека будет каким-то образом ответом, так как не было подходящих каналов чата, куда их можно было бы перенести. Но теперь, когда вы это сделали, я вижу, что у этого может быть свой собственный канал чата, и мы можем перенести туда этот разговор :+1:

jimkleiber

Ах да, почти как создание темы, которая создаст новый канал чата.

А затем тему можно наполнить только цитатами из чата, выделяя главное.

Перепутано
oshyan

Это на 100% соответствует моим интересам и сценарию использования чата. Но можете ли вы уточнить, что именно вы имеете в виду под примером этого? Вас интересуют, скажем, образцы чата (независимо от того, происходил ли он в чате Discourse), которые могли бы/должны были бы (очевидно) привести к более глубокому обсуждению и/или привели к более глубокому обсуждению, но в, возможно, менее идеальной среде для этого (чата по сравнению с форумом)? Если это так, мне может потребоваться немного времени, чтобы найти их, но у меня точно есть хорошие примеры из моего сообщества по продуктивности. Если вы ищете примеры в чате Discourse, конкретно, это будет сложнее найти. Но я абсолютно уверен, что это является большой ценностью чата в Discourse, и в зависимости от сообщества это будет играть большую или меньшую роль.

Jonathan_Poyer

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

oshyan

Как, возможно, более концептуальный пример ситуации, когда чат может (и должен) быстро превратиться в тему, даже в середине обсуждения, это то, что часто происходит в сообществах управления разработкой программного обеспечения, в которых я участвую, а также в моём сообществе по продуктивности:

  • Новый человек присоединяется к чату и задаёт, казалось бы, простой или безобидный вопрос.
  • Ответы от хорошо информированных и/или эмоционально вовлечённых постоянных участников быстро растут до десятков строк текста, начинают появляться разрывы абзацев, и этот канал чата насыщается только обсуждением этого одного вопроса (темы).
  • Всё становится трудным для ответа, так как каждое «сообщение» включает множество пунктов и идей, а отсутствие функции выбора для цитирования/ответа затрудняет анализ и ответ на каждую часть.
  • Эти разговоры также часто представляют собой ценные дебаты, которые быстро исчезнут в последующем потоке чата, поэтому даже ретроспективное перемещение их в тему может быть очень ценным.
JammyDodger

Я думаю, что изначально я искал что-то, что мы могли бы предоставить в качестве примера темы/чата здесь, на Meta, чтобы продемонстрировать новичкам в Discourse Chat, как он может гармонично сочетаться с устоявшимися представлениями о «длинных абзацах» в Discourse.

Так что даже что-то, что мы создали специально, чтобы аккуратно продемонстрировать этот принцип.

Я думаю, что всё, что поможет людям легко представить, где в структуре их форума может вписаться чат, будет полезно. Я открыт ко всем идеям :+1:

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

Хотя звучит так, будто у вас есть много примеров, которые станут отличной темой для обсуждения :slightly_smiling_face:

Есть ли у кого-нибудь идеи, как мы можем это сделать, исходя из того, где мы сейчас находимся с тестированием чата здесь, на Meta?

RGJ

Честно говоря, я не вижу, как чат может быть предшественником глубокого обсуждения :thinking:

agungor

Мне кажется, что этот разговор сам по себе становится таким примером. :smiley:

Jonathan_Poyer

Чувствуется, что то, что на других платформах превратилось бы в ветку, здесь должно либо превратиться в другой чат, либо стать отдельной темой. Но в то же время тема кажется больше похожей на долгосрочное обсуждение, а не на разовое, как здесь?

JammyDodger

Пункты обратной связи отличные, и я думаю, что вскоре они будут выделены в отдельные темы, но я надеялся на что-то, что могло бы служить отличным примером для всех, кто только присоединяется к @chat-testers. Что-то, на что люди могут просто посмотреть и сказать: «Ах, да. Сначала я не был уверен, но теперь вижу, как чат может быть предшественником глубокого обсуждения».

jimkleiber

Возможно, один из способов — процитировать начальное сообщение чата, которое запустило идею, в теме: How can chat seed topic discussions?

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

JammyDodger

Я думаю, по крайней мере. :slightly_smiling_face: Я перепроверю свои мысли перед тем, как что-то делать.

Возможно, я прошу слишком многого :slightly_smiling_face:

jimkleiber

Но, иронично, я отвечаю здесь lol.

RGJ

Но это может быть потому, что я старый.

JammyDodger

Я как раз обдумывал это. :slightly_smiling_face: Я пытался понять, могу ли я создать тему, где чат каждого человека будет каким-то образом ответом, так как не было подходящих каналов чата, куда их можно было бы перенести. Но теперь, когда вы это сделали, я вижу, что у этого может быть свой собственный канал чата, и мы можем перенести туда этот разговор :+1:

jimkleiber

Ах да, почти как создание темы, которая создаст новый канал чата.

JammyDodger

Так что мы ищем пример, который поможет переубедить и @RGJ :slightly_smiling_face:

jimkleiber

А затем тему можно наполнить только цитатами из чата, выделяя главное.

Moin

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

JammyDodger

@Moin, ваши навыки поиска всегда являются благословением :slightly_smiling_face:

Я искал что-то о семенах и деревьях, но не мог найти это здесь.

Но, да. Какой-то расслабленный/дружелюбный/неформальный чат, в котором идея формируется в ходе лёгкого диалога, а затем вдохновляет на создание полноценной темы для обсуждения.

2 лайка

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

  1. Цитировать сообщения чата в существующей теме
  2. Переместить сообщения чата в существующую тему
  3. Цитировать сообщения чата в новой теме
  4. Переместить сообщения чата в новую тему

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

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

2 лайка

Если вы просто процитируете обсуждение, оно может продолжаться в двух местах.

@Moin, вы предлагаете, что перемещение сообщений было бы предпочтительнее, когда вы на самом деле хотите этого избежать?

Спасибо за это — всё получилось совсем перемешано! Мне придётся провести локальное тестирование на больших наборах сообщений. Думаю, как минимум потребуется следующее:

Однако я в целом настороженно отношусь к сортировке по ID из-за странных несоответствий. Мне кажется, что для каналов в целом лучше сортировать сообщения по created_at. @j.jaffeux или @mcwumbly, что вы думаете по этому поводу? Если мы решим поступить так, то перемещатель сообщений, возможно, потребуется искусственно раздвигать значения created_at на 10 мс каждое, чтобы обеспечить стабильный порядок.

Я считаю, что в целом, если они совершенно не относятся к текущему каналу, лучше переместить их в более подходящий канал. Мы многократно использовали это ранее внутри компании, когда работали с Mattermost. Например, группа сообщений об инцидентах в канале general, которые следует переместить в канал incident для лучшего ведения записей. Или же пустые разговоры в канале, которые лучше переместить в random.

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

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

  • a) цитировать группы сообщений вместе (например, по 100 на пост) с использованием функции цитирования чата и
  • b) удалять оригиналы в канале, чтобы избежать дублирования.
5 лайков

Я воздержусь от комментариев по поводу реализации сортировки постов и предоставлю @j.jaffeux прокомментировать этот аспект.

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

Логично. Мне нравится общий формат цитирования в виде «транскрипта», как здесь, потому что, думаю, в любом случае он будет читаться именно так. В прошлом, когда я использовал функцию транскрипции Slack, я часто оборачивал её в [details], а также резюмировал информацию в основном теле поста.

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

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

4 лайка

Это происходит только в том случае, если вы выбираете опцию «Переместить в тему». Зачем тогда оставлять сообщения в канале, если ваша цель — переместить их? Мы уже обсуждали это internally. Конечно, обычное цитирование сообщений в теме ничего не удаляет.

Небольшой факт для вас: класс, который генерирует цитаты, на самом деле называется ChatTranscriptService :slight_smile:

Это интересно. У нас уже есть что-то похожее для цитирования тем (вы, вероятно, уже видели это). Было бы полезно получить немного больше контекста, не посещая сам канал.

3 лайка

Я бы сказал, что случай использования для перемещения следующий:

  • У нас есть канал, посвящённый обсуждению «китов».
  • Группа людей начинает активное обсуждение «пингвинов», потому что забыли нажать «#пингвин», и разговор зашёл слишком далеко.
  • Модератор вмешивается и :foot: перемещает обсуждение про пингвинов на канал для пингвинов.

Думаю, фундаментальная проблема здесь — это изменение последовательности.

Я бы сказал, что «подделка created_at» — это единственное разумное решение, так как вы хотите переместить всё одним блоком? К тому же технически сообщение создаётся в момент его перемещения.

5 лайков

Да, я думаю, что меня интересует, действительно ли это необходимо, или же стоит сосредоточиться на том, чтобы функция цитирования/транскрибации работала идеально.

3 лайка

Да, я бы на 100% поступил так, если бы наш обычный маршрут GET для получения сообщений канала был отсортирован по created_at. Именно это я хочу исправить. Просто хотел узнать, есть ли у Жоффри какая-то историческая информация по этому поводу. Если нет, то изменю оба момента сразу.

2 лайка

Да, я на 100% согласен с Сэмом и вами :grin: Перенос всего сразу и присвоение ему метки времени created_at на момент переноса — это единственный разумный подход, на мой взгляд. В противном случае это откроет огромный ящик Пандоры… как я узнаю, где его найти? Получение непрочитанных уведомлений о вещах, созданных до моего последнего прочтения? Нет, нет и ещё раз нет.

4 лайка

Отлично, я доработаю инструмент перемещения, чтобы перемещённые сообщения отображались в :sparkles: будущем :sparkles: с небольшим шагом, и изменю порядок сортировки сообщений в чате в общем контроллере по created_at вместо ID :+1:

3 лайка

Только что объединил это, чтобы, надеюсь, решить проблему:

Пока я ничего не делал для искусственного сдвига created_at в будущее, так что давайте сначала посмотрим, как это сработает.

4 лайка

Эта тема была автоматически закрыта через 11 дней. Новые ответы больше не допускаются.