De ahora en adelante se publicarán aquí las últimas novedades de interés, debido al exceso de publicaciones en el grupo.

También estarán disponibles como feed RSS, por lo que se pueden recibir los mensajes desde clientes como Thunderbird, apps móviles (como Feeder), bots de Telegram (p.ej. @FeedRiverBot, con el comando /add https://ggelado.github.io/avisos5S2M-B/feed.xml)…

Se recomienda configurar las notificaciones push desde aquí.

Los avisos cuentan con categorías XML, que puede utilizar para filtrar si su cliente RSS lo permite.

Si se utiliza el cliente Feeder, se recomienda configurar las notificaciones y una frecuencia de refresco suficientemente alta, se recomienda 15 minutos.

Recuerda que si un post se modifica, su cliente RSS podría no reflejar los cambios. Por ello se recomienda que aquellos avisos que puedan estar sujetos a cambios regulares (como pueden ser las convocatorias de examen) se revisen accediendo al enlace del aviso y/o Moodle de las asignaturas.

INCLUSO HAY UN BOT DE DISCORD QUE PUEDES AGREGAR A TU SERVIDOR PULSANDO AQUÍ

¿Todavía no te parece suficiente? Puedes incluso agregar los distintos avisos a tu calendario. Simplemente accede a tu proveedor de calendario (p.ej. google calendar), agregar calendario por url e indica https://ggelado.github.io/avisos5S2M-B/avisos.ics

Agregar a Google Calendar. Agregar a Apple Calendar. (no tengo dispositivos de apple, si no va el link me decís)


La web está creada por alumnos y para alumnos. Bastantes cosas están muy chapuceras, lo reconocemos, pero por ello el código es público y está abierto a Pull Requests, por lo que animamos a todo el mundo a contribuir con lo que pueda, desde diseño gráfico (de ahí los logos tan cutres, era un requisito de Google para poder configurarla como web-app) hasta la lógica de negocio.

Contribuir

Y si encuentras alguna vulnerabilidad de seguridad, por favor, indícanoslo a través de la pestaña Security del repositorio o por los medios cifrados de contacto disponibles aquí. Por favor, insistimos en utilizar estos medios y no cualquier otro cuando se traten de vulnerabilidades o problemas de seguridad.


¿Cómo funciona? (POST EN REDACCIÓN)

AlumnoAdminScrapersServidorGitHubJekyllfeed.xmlWorker RSSMySQL DBWeb PushDiscordSuscriptorAlumnoAlumnoAdminAdminScrapers(fuentes externas)Scrapers(fuentes externas)ServidorServidorGitHubRepoGitHubRepoJekyllPlanificadorJekyllPlanificadorfeed.xmlfeed.xmlWorker RSSWorker RSSMySQL DBMySQL DBWeb PushWeb PushDiscordDiscordSuscriptorSuscriptor1. PROPUESTAEnvía aviso via formularioValida datos y rate limitAbre Pull RequestPublica aviso directamentePush directo a mainFuente externa detecta avisoAbre Pull Request2. APROBACIÓNRevisa y aprueba PRAdmin nonecesita aprobaciónalt[PR aprobada]Merge a main[PR rechazada]Notificación de rechazo3. PLANIFICACIÓN (Jekyll)Trigger rebuild tras mergeAdemás, rebuild periódico programadopara publicar avisos con fecha futuracuando llegue su momentoComprueba fecha de cada avisoalt[Fecha del aviso alcanzada]Publica aviso en feed.xml[Fecha futura]Aviso en espera4. PUBLICACIÓNAviso disponibleen GitHub Pages y RSS5. NOTIFICACIÓNWebhook: feed.xml actualizadoComprueba items ya vistosalt[Aviso nuevo]Marca como vistoObtiene suscripcionesEnvía notificación pushNotificación en navegadorEnvía mensaje con embed[Ya visto]OmiteAlta de suscriptoresSolicita suscripción pushGuarda suscripciónEnvía confirmaciónSuscripción confirmada
@startuml
skinparam sequenceMessageAlign center
skinparam shadowing false
actor "Alumno" as Alumno
actor "Admin" as Admin
participant "Scrapers\n(fuentes externas)" as Scraper
participant "Servidor" as Servidor
participant "GitHub\nRepo" as GitHub
participant "Jekyll\nPlanificador" as Jekyll
participant "feed.xml" as Feed
participant "Worker RSS" as Worker
participant "MySQL DB" as DB
participant "Web Push" as Push
participant "Discord" as Discord
actor "Suscriptor" as Suscriptor

== 1. PROPUESTA ==
Alumno -> Servidor : Envía aviso via formulario
Servidor -> Servidor : Valida datos y rate limit
Servidor -> GitHub : Abre Pull Request
Admin -> Servidor : Publica aviso directamente
Servidor -> GitHub : Push directo a main
Scraper -> Servidor : Fuente externa detecta aviso
Servidor -> GitHub : Abre Pull Request

== 2. APROBACIÓN ==
Admin -> GitHub : Revisa y aprueba PR
note right
  Admin no
  necesita aprobación
end note
alt PR aprobada
  GitHub -> GitHub : Merge a main
else PR rechazada
  GitHub --> Alumno : Notificación de rechazo
end

== 3. PLANIFICACIÓN (Jekyll) ==
GitHub -> Jekyll : Trigger rebuild tras merge
note over Jekyll
  Además, rebuild periódico programado
  para publicar avisos con fecha futura
  cuando llegue su momento
end note
Jekyll -> Jekyll : Comprueba fecha de cada aviso
alt Fecha del aviso alcanzada
  Jekyll -> Feed : Publica aviso en feed.xml
else Fecha futura
  Jekyll -> Jekyll : Aviso en espera
end

== 4. PUBLICACIÓN ==
Feed -> Feed : Aviso disponible\nen GitHub Pages y RSS

== 5. NOTIFICACIÓN ==
Feed -> Worker : Webhook: feed.xml actualizado
Worker -> DB : Comprueba items ya vistos
alt Aviso nuevo
  Worker -> DB : Marca como visto
  Worker -> DB : Obtiene suscripciones
  Worker -> Push : Envía notificación push
  Push --> Suscriptor : Notificación en navegador
  Worker -> Discord : Envía mensaje con embed
else Ya visto
  Worker -> Worker : Omite
end

== Alta de suscriptores ==
Suscriptor -> Servidor : Solicita suscripción push
Servidor -> DB : Guarda suscripción
Servidor -> Push : Envía confirmación
Push --> Suscriptor : Suscripción confirmada
@enduml