"Слишком похожий текст" сравнивает посты и сообщения

«Текст слишком похож на то, что вы недавно опубликовали»

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

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

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

Как минимум, я хотел бы иметь возможность повторно использовать текст сообщения в посте.

Возможно, там упоминается обходной путь ЗДЕСЬ, но я не могу достаточно четко разобрать процесс, описанный автором темы (OP), чтобы понять его.

1 лайк

Боюсь, я не думаю, что это можно считать ошибкой, так как всё работает корректно. :slightly_smiling_face:

Это контролируется настройкой администратора unique posts mins (по умолчанию 5 минут), поэтому вы можете попросить администратора уменьшить её, если ожидание вызывает серьёзные проблемы?

4 лайка

Как всегда, превосходное внутреннее понимание ситуации!

К тому времени, как я вернулся на discuss.python.org, таймер истёк, и я смог опубликовать текст своего финального черновика «сообщения». Если бы меня не остановили на первом дубликате, я бы не писал здесь. (Это как-то напоминает мем «змея, пожирающая свой хвост» :upside_down_face:)

Я боюсь, что это нельзя считать ошибкой, …

Да, это действительно находится где-то посередине. Этот вопрос касается того, почему первый дубликат в объекте другого типа платформы вообще блокируется. Похоже, это случай замены решения одной проблемы на решение другой (хотя и менее значимой, поэтому «функциональность» такого поведения в целом является плюсом как защита от спам-публикаций и сообщений). Тем не менее, сравнивать тело поста с телом сообщения кажется несогласованным и, следовательно, неприменимым, поскольку у них совершенно разные области применения.

…поскольку это, похоже, работает правильно.

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

Как любая ошибка, которую вы не знаете, как исправить, по умолчанию становится «функцией», так и любая «функция», которая мешает, может считаться ошибкой.
Ожидание истечения unique posts mins — это даже обходной путь. :point_left: :stuck_out_tongue_winking_face:

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

4 лайка

Я большой поклонник подхода «pm-as-draft-message» и тоже сталкивался с подобными предупреждениями неоднократно. Возможно, я слишком легко принимал существующее положение дел. :slightly_smiling_face: Не знаю, насколько популярен этот рабочий процесс, возможно, мы составляем меньшинство, но можем превратить это в запрос на новую функцию (#feature request)?

В качестве альтернативы, в более минималистичном варианте, можно применить подход ux и добавить больше информации в сообщение о предупреждении (например: «Текст слишком похож на то, что вы недавно публиковали. Попробуйте снова через %{unique posts mins} мин»). Это, по крайней мере, подчеркнет, что ограничение связано со временем и носит временный характер (хотя, возможно, это ослабит саму цель ограничения?).

5 лайков

Действительно, это эффективное и простое (а значит, отличное) улучшение. Я отправлю это как отдельную просьбу о добавлении новой функции.

3 лайка

Я думаю, что @codinghorror довольно часто использует личные сообщения (ЛС) для черновиков большого объёма. Наша цель не в том, чтобы блокировать себя:

В Discourse есть очень простое исправление/изменение:

Замените на:

    def unique_post_key
      "unique-post-#{user_id}:topic?.private_message?:#{raw_hash}"
    end

Это вместе с быстрым тестом исправит данный рабочий процесс.

Я не считаю, что это изменение снижает гарантии безопасности.

Завтра я внесу это изменение, если не последует возражений.

4 лайка

Спасибо, Сэм!

Будет ли это включено в скорый релиз? Я обычно пишу более развёрнутые ответы на discuss.python.org, чем здесь — и также более тщательно вычитываю и редактирую их, поскольку обсуждения касаются технических деталей, где много возможностей для оговорок и опечаток при публикации непроверенного кода.

2 лайка

У нас уже есть исправление в разработке по адресу:

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

В это время рекомендую простое временное решение: просто добавьте несколько пробелов («отступ») при публикации черновика.

И

hello world, и

hello        world

в Markdown отображаются одинаково:

hello world.

2 лайка

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