summarizeSessionsByGroup

expérimentaldepuis 0.1.0@legba-core/realtime

summarizeSessionsByGroup

Ce que ça fait

Regroupe et cumule des sessions de participants par une clé au choix de l’appelant (organisation, client, projet — Legba ne connaît aucune de ces notions).

Signature

function summarizeSessionsByGroup(
  sessions: ParticipantSession[],
  groupBy?: (session: ParticipantSession) => string,
): Record<string, SessionGroupSummary>

Paramètres

NomTypeRequisDéfautDescription
sessionsParticipantSession[]ouiRendu par computeParticipantSessions
groupBy(session) => stringnonregroupe par session.roomNameClé de regroupement au choix de l’appelant

Retour

Record<string, SessionGroupSummary>, chaque SessionGroupSummary portant groupKey, totalMinutes (somme des seules sessions "closed") et sessions (toutes les sessions du groupe, y compris "open"/"orphan-left").

Erreurs

N/A — fonction pure, ne lève jamais.

Exemple minimal

import { summarizeSessionsByGroup } from "@legba-core/realtime";

const parSalle = summarizeSessionsByGroup(sessions);

Exemple complet

import { computeParticipantSessions, summarizeSessionsByGroup } from "@legba-core/realtime";

const sessions = computeParticipantSessions(events);

// Regroupement par "organisation" : une convention propre à l'appelant
// (ici, le préfixe du nom de salle), pas une notion de Legba.
const parOrganisation = summarizeSessionsByGroup(sessions, (s) => s.roomName.split("-")[0] ?? s.roomName);

for (const { groupKey, totalMinutes } of Object.values(parOrganisation)) {
  console.log(`${groupKey} : ${totalMinutes} minutes`);
}

Pièges

  • Seules les sessions status: "closed" contribuent à totalMinutes : une session "open" ou "orphan-left" reste listée dans sessions mais n’ajoute rien au total, pour que l’appelant décide comment la traiter (attendre sa clôture, l’investiguer, etc.) plutôt que la voir ignorée en silence.

Voir aussi