ICS → Импорт в Discourse

Спасибо за напоминание!

Краткий статус: сейчас я запускаю три экземпляра своего импортера Python ICS→Discourse (расписание университета, бронирование в спортивном центре и календарь Outlook). Я начал обёртывать его в плагин Discourse, но версия плагина не дотягивает до функционала скрипта — в основном потому, что каждый источник данных требует индивидуальной обработки (особенности UID, частичные обновления, отмены, шумные правки и т. д.). Плагин Ангуса отлично подходит для многих случаев, но мои сценарии использования кажутся более «специфичными для источника».

Также у меня есть открытый PR в ядро, направленный на снижение «шума» от синей кнопки «Последние» во время крупных/всплесковых обновлений ICS. При активных источниках (например, расписании университета) пакет малозначимых правок может заставлять кнопку «Последние» постоянно мигать; этот PR фактически отключает кнопку «Новые темы», если раздел «Последние» открыт во время выполнения автоматизированного пакета.

В долгосрочной перспективе: я сейчас на самохостинге IONOS. Если позже я перейду на официальное хостинг-решение, мне всё равно хотелось бы иметь возможность сохранить поток Python (или его аналог) без необходимости использования функций Enterprise, если там существует входящий ICS. Я предполагаю, что универсальное решение ядра/плагина могло бы сработать, если бы оно позволяло подключать «адаптеры» для каждого источника данных, сохраняя при этом строгую идемпотентность (UID ICS), обработку отмен и семантику редактирования без поднятия темы.

Если есть интерес, я могу набросать минимальный интерфейс адаптера и путь миграции от моего скрипта на Python к Ruby-задаче или внести вклад в виде источников-независимых компонентов (маппинг UID, дебаунс/обновления без поднятия, логика отмены) в плагин календаря/событий.

1 лайк