mod.community — Comunidad¶
Community · Categoría core (siempre activo)
Qué hace¶
El feed social del tenant: posts (opcionalmente ligados a un curso y a un espacio), comentarios con un nivel de respuesta, reacciones por emoji, menciones @usuario con autocomplete, tags curados por el admin (nombre, color, icono) y espacios administrables (los 4 de sistema son editables pero no eliminables). Encima: moderación, pinning de posts, directorio de miembros, digest semanal por email y avisos masivos (broadcasts) con baja por enlace.
Cómo funciona¶
- Distinción deliberada entre ocultado de moderación (
hidden, reversible, la fila se preserva con motivo) y borrado del autor (soft-delete). - Un post con
notifyAll(solo admin) genera además un broadcast por email y campana a todos los miembros;importantignora el opt-out del receptor. - Los broadcasts se envían por lotes con throttling (para cuidar la reputación SMTP) y llevan cursor de reanudación para reintentos.
- Publicación por API externa (
/community-api, con API key de scopecommunity:postcuyo dueño sea admin): los posts entran consource='api'— así se distingue el contenido automatizado. - El digest semanal se programa con
COMMUNITY_DIGEST_CRON(lunes 09:00 UTC por defecto) y respeta el opt-out por usuario.
Dependencias¶
Opcional: mod.courses (posts ligados a curso).
Modelo de datos¶
mod_community_post · _comment · _reaction · _mention · _tag · _space · _broadcast (con estado y cursor) · _user_pref (preferencias, hoy el opt-out del digest).
API¶
Prefijo /modules/community + /community-api (integraciones) + baja pública por token. Detalle en Referencia → Comunidad y personas.
Eventos¶
Emite: community.post.created, community.comment.created, community.reaction.added (+ menciones). No consume. Sus eventos alimentan la gamificación y los webhooks salientes.
Configuración¶
Espacios, tags y digest se configuran desde el panel. Workers: COMMUNITY_DIGEST_CRON, COMMUNITY_BROADCAST_BATCH_SIZE (5), COMMUNITY_BROADCAST_INTERVAL_MS (10 s).