ICS → Importador de Discourse vía API REST

Esa es una buena pregunta, Nathan, y creo que definitivamente hay espacio para un enfoque mínimo e independiente del feed que podría vivir como una pequeña extensión del plugin Calendar/Event o como un trabajo central ligero.

Para que una PR sea útil en general, la clave parece ser hacer que el importador esté basado en adaptadores en lugar de ser específico del feed. Algo como:

  • Cada feed define un pequeño adaptador (podría ser Python, YAML o Ruby) que mapea los campos ICS → campos del tema de Discourse (title, body, tags, start, end, location, etc.).
  • El núcleo maneja la idempotencia (mapeo UID ↔ ID de tema), la cancelación (STATUS:CANCELLED) y las ediciones silenciosas (actualización sin afectar a Latest).
  • Los plugins o la configuración del sitio podrían configurar el intervalo de sondeo, los mapeos de etiquetas y la política de actualización (always, never, on major change).

De esa manera, las instituciones con feeds ruidosos o complejos (horarios universitarios, reservas de salas, calendarios de Outlook, etc.) pueden proporcionar un adaptador adecuado a sus datos sin codificar nada en el núcleo.

Si hay interés, estaría encantado de esbozar esa interfaz de adaptador o prototipar la ayuda central de “ICS upsert” como un trabajo de Ruby sobre el que otros puedan construir, para que esto pueda evolucionar gradualmente de scripts independientes de Python a algo mantenible y genérico dentro del ecosistema de Discourse.

2 Me gusta