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
| Nom | Type | Requis | Défaut | Description |
|---|---|---|---|---|
participantIdentities | string[] | oui | — | Identités à répartir ; aucun doublon, aucune chaîne vide |
options.groupSize | number | oui | — | Taille maximale d’un groupe ; strictement positif |
options.roomNamePrefix | string | non | DEFAULT_BREAKOUT_ROOM_NAME_PREFIX | Pré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
| Code | Quand | Comment corriger |
|---|---|---|
LEGBA_INVALID_ROOM_REQUEST | groupSize <= 0 | Fournir un groupSize strictement positif |
LEGBA_INVALID_ROOM_REQUEST | Une identité vide/blanche dans participantIdentities | Filtrer les identités vides avant l’appel |
LEGBA_INVALID_ROOM_REQUEST | Une identité dupliquée dans participantIdentities | Dé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 tableauparticipantIdentitiesfourni par l’appelant (mélange dans une copie).- Cette fonction ne crée rien côté serveur : appeler
createBreakoutRoomspour provisionner réellement les salles et les jetons.