Сценарий использования заключается в своевременном удалении загрузок в рамках автоматизированных рабочих процессов с участием человека (human-in-the-loop) с помощью activepieces, data explorer и API.
Цель — предоставить обычным модераторам простой и надёжный способ немедленного полного удаления загрузок без доступа по SSH, а также комплексно охватить все известные случаи разрыва ссылок на загрузки и автоматически очистить соответствующие URL в CDN (в случае проксируемых аватаров — префикс URL, основанный на имени пользователя).
Меня успокоило то, что при тестировании выяснилось: ссылки на аватары, фоны профиля и фоны карточек автоматически обрабатываются при удалении загрузки.
https://github.com/discourse/discourse/commit/e1975e293f2625259e925b4a3c93d88d5acfcaa8
https://github.com/discourse/discourse/commit/38e7b1a0492dd4282c3cd3b1ddb2b3343661d31f
Два основных сценария: «выжженная земля» и «хирургическое удаление». Вот текущая работа над сценарием «выжженная земля»:
Преобразование в список хешей загрузок:
-
URL аватаров (извлечь имя пользователя с помощью регулярного выражения) → получить хеш аватара через запрос в data explorer (хеш не содержится в URL)
-
URL тем/сообщений → собрать все хеши загрузок, использованные в этом сообщении, с помощью data explorer
-
Прямые URL оригинальных/оптимизированных загрузок (включая фоны профиля и карточек) → извлечь хеши с помощью регулярного выражения
Затем выполнить запрос по каждому хешу для поиска всех вхождений (один запрос data explorer охватывает все случаи, по одному хешу за раз):
-
список имён пользователей/ID тех, кто использовал этот хеш для аватара
-
список имён пользователей/ID тех, кто использовал этот хеш для фона профиля
-
список имён пользователей/ID тех, кто использовал этот хеш для фона карточки
-
список всех сообщений (в сыром виде), использующих эту загрузку
Действия:
-
приостановить всех пользователей, использовавших загрузку в качестве аватара, фона профиля или фона карточки
-
приостановить всех пользователей, у которых есть сообщения, ссылающиеся на целевую загрузку, но исключить случаи, когда ссылка находится внутри цитаты
-
удалить все темы
-
удалить все сообщения
-
уничтожить загрузку (отсутствует конечная точка API)
-
очистить все URL CDN (оптимизированные и неоптимизированные)
-
очистить стандартный префикс для проксируемых URL аватаров для каждого связанного имени пользователя (чтобы охватить все размеры)
Сценарий «хирургического удаления» по сути аналогичен, но не предусматривает приостановку связанных пользователей и требует некоторых изменений в части сбора всех хешей загрузок из URL сообщений/тем.
Вероятно, всё ещё потребуется удалять сами сообщения и темы, чтобы избежать битых ссылок, но если возможно, предпочтительнее было бы просто удалить разметку Markdown для конкретной загрузки (не затрагивая другие загрузки). Как в этой автоматизации, если бы она не удаляла все ссылки на загрузку в разметке.
В идеале я хотел бы иметь возможность блокировать хеши, чтобы после выполнения описанных выше действий кто-то не мог просто создать новый аккаунт и повторно загрузить тот же файл.
![]()
На данный момент это, по-видимому, невозможно для обычного модератора, например, с помощью отслеживаемых слов. Поэтому, возможно, периодическое сканирование, аналогичное описанному выше, для списка хешей, станет способом решения этой проблемы.