Я смог сделать Google Takeout для моих групп Google, загрузить файлы .mbox и импортировать их.
Эти шаги помогли сопоставить data/folder с существующей категорией, но это нужно выполнять в контейнере import, а не в контейнере app, как указано в этой статье: ссылка:
./launcher enter import
rails c
# Используйте ID категории, отображаемый в URL, например
# это 16, если путь к категории выглядит так: /c/soccer/16
category = Category.find(16)
# Используйте имя директории, где хранятся файлы mbox. Например,
# если файлы хранятся в import/data/foo, в качестве имени директории следует использовать "foo".
category.custom_fields["import_id"] = "soccer"
category.save!
У меня уже есть пользователи в Discourse, которые перешли самостоятельно, поэтому скрипт импорта не смог создать контакты для них (вероятно, это не проблема), но импортированные сообщения, в которых участвовали эти существующие пользователи Discourse, показывают отправителя как system вместо их имени.
Есть ли способ сопоставить существующих пользователей с их импортированными сообщениями?
Пока я отменил всё, восстановившись из недавней резервной копии. Готов попробовать снова с рекомендациями по работе с существующими пользователями Discourse и их импортированными сообщениями.
Обновление:
Claude помог решить задачу сопоставления существующих пользователей. Необходимо запустить этот цикл в консоли rails в дополнение к вышеуказанному коду:
User.where("id > 0").find_each do |u|
email = u.email.downcase
unless u.custom_fields["import_id"].present?
u.custom_fields["import_id"] = email
u.save_custom_fields
end
end