planBreakoutRooms

expérimentaldepuis 0.1.0@legba-core/realtime

planBreakoutRooms

Ce que ça fait

Répartit une liste de participants en groupes de sous-salle — pure planification, aucun appel réseau. Voir createBreakoutRooms pour provisionner réellement les salles et les jetons.

Signature

function planBreakoutRooms(
  participantIdentities: string[],
  options: PlanBreakoutRoomsOptions,
): BreakoutRoomAssignment[]

Paramètres

NomTypeRequisDéfautDescription
participantIdentitiesstring[]ouiIdentités à répartir ; aucun doublon, aucune chaîne vide
options.groupSizenumberouiTaille maximale d’un groupe ; strictement positif
options.roomNamePrefixstringnonDEFAULT_BREAKOUT_ROOM_NAME_PREFIXPréfixe des noms de salle générés ("<préfixe>-1", "<préfixe>-2", …)
options.mode"sequential" | "random"non"sequential""sequential" préserve l’ordre fourni ; "random" mélange avant de répartir

Retour

Un BreakoutRoomAssignment[]{ roomName, participantIdentities }[]. Le dernier groupe peut être plus petit que groupSize si le total n’est pas un multiple exact.

Erreurs

CodeQuandComment corriger
LEGBA_INVALID_ROOM_REQUESTgroupSize <= 0Fournir un groupSize strictement positif
LEGBA_INVALID_ROOM_REQUESTUne identité vide/blanche dans participantIdentitiesFiltrer les identités vides avant l’appel
LEGBA_INVALID_ROOM_REQUESTUne identité dupliquée dans participantIdentitiesDédupliquer la liste avant l’appel

Exemple minimal

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

const plan = planBreakoutRooms(["alice", "bob", "carol", "dave", "erin"], { groupSize: 2 });
// [{ roomName: "salle-groupe-1", participantIdentities: ["alice", "bob"] },
//  { roomName: "salle-groupe-2", participantIdentities: ["carol", "dave"] },
//  { roomName: "salle-groupe-3", participantIdentities: ["erin"] }]

Exemple complet

Voir createBreakoutRooms et docs/recipes/breakout-rooms.md.

Pièges

  • Une répartition décidée à la main (pas par cet algorithme) n’a pas besoin de cette fonction : construire directement un BreakoutRoomAssignment[] et le passer à createBreakoutRooms.
  • mode: "random" ne modifie jamais le tableau participantIdentities fourni par l’appelant (mélange dans une copie).
  • Cette fonction ne crée rien côté serveur : appeler createBreakoutRooms pour provisionner réellement les salles et les jetons.

Voir aussi