ICS → Discourse 가져오기 도구

좋은 질문입니다, Nathan — 캘린더/이벤트 플러그인의 작은 확장으로, 또는 경량화된 코어 잡으로 구현할 수 있는 최소한의 피드 비종속적 접근 방식이 충분히 가능하다고 생각합니다.

PR이 일반적으로 유용하려면, 핵심은 가져오기(importer)를 피드 전용이 아닌 어댑터 기반으로 만드는 것입니다. 예를 들어 다음과 같은 방식이 가능합니다:

  • 각 피드는 ICS 필드를 Discourse 토픽 필드(title, body, tags, start, end, location 등)로 매핑하는 작은 어댑터(Python, YAML, Ruby 등)를 정의합니다.
  • 코어는 멱등성(UID ↔ 토픽 ID 매핑), 취소(STATUS:CANCELLED), 조용한 편집(Latest를 올리지 않고 업데이트)을 처리합니다.
  • 플러그인 또는 사이트 설정을 통해 폴링 간격, 태그 매핑, 번(bump) 정책(always, never, on major change)을 구성할 수 있습니다.

이렇게 하면 소음이 많거나 복잡한 피드(대학 시간표, 강의실 예약, Outlook 캘린더 등)를 가진 기관이 코어에 아무것도 하드코딩하지 않고 자신의 데이터에 맞는 어댑터를 제공할 수 있습니다.

관심이 있으시다면, 그 어댑터 인터페이스를 개요로 정리하거나, 다른 사람들이 기반으로 구축할 수 있는 Ruby 잡 형태의 코어 “ICS 업서트(upsert)” 헬퍼를 프로토타입으로 만들어 볼 수 있습니다. 이를 통해 독립적인 Python 스크립트에서 Discourse 생태계 내에서 유지보수 가능하고 범용적인 것으로 점진적으로 발전시킬 수 있을 것입니다.

2개의 좋아요