[UPD] spec: tags, table goals, goal modes, priority tiers, format 2
The specification now describes what the software does for tags, table goals and their rules, the goals CSV, the three goal modes, priority tiers with weights, the facilitator criterion and file format 2, each sentence checked against the code; captures 02, 02b and 03 are described by what their images show. The changelog's head section lists the step and names format 2; the guide says the default order is one order among others. A test brings the criteria registry to full branch coverage. Checked: node 4595, navigateur 963, node-long 124; captures stable over two republications; six coverage thresholds met. --- FR --- [UPD] spec : étiquettes, objectifs, modes, paliers pondérés, format 2 La spécification décrit désormais ce que fait le logiciel pour les étiquettes, les objectifs des tables et leurs règles, le CSV d'objectifs, les trois modes, les paliers pondérés, le critère des animateurs et le format 2, chaque phrase recoupée avec le code ; les captures 02, 02b et 03 sont décrites par ce que montrent leurs images. La section de tête du journal des changements nomme l'étape et le format 2 ; le guide dit que l'ordre par défaut n'est qu'un ordre parmi d'autres. Une épreuve porte le registre des critères à 100 % de branches. Vérifié : node 4595, navigateur 963, longues 124 ; captures stables sur deux republications ; six seuils de couverture tenus. Assisted-by: Claude Opus 5.5
This commit is contained in:
parent
0f8f4663b8
commit
883dcb2519
4 changed files with 982 additions and 117 deletions
64
CHANGELOG.md
64
CHANGELOG.md
|
|
@ -33,8 +33,68 @@
|
|||
- L'interface et les badges emploient la même police, Noto Sans.
|
||||
- Le guide d'usage suit la soirée étape par étape, captures d'écran à l'appui,
|
||||
de la création de l'événement à la planche de badges.
|
||||
- Chaque personne peut porter des **étiquettes** — « finance », « Montréal »,
|
||||
« bénévole » —, vingt au plus, ajoutées et retirées sur sa fiche, ou
|
||||
importées par une colonne « Étiquettes » du fichier des participants,
|
||||
plusieurs par cellule, séparées par une virgule, un point-virgule ou une
|
||||
barre verticale. Une étiquette écrite autrement qu'une étiquette déjà
|
||||
présente — casse, accents, espaces — reçoit l'orthographe existante, et le
|
||||
logiciel le dit ; une légende compte les personnes qui portent chacune. En
|
||||
mise à jour, une cellule vide garde les étiquettes de la personne.
|
||||
- L'export des participants écrit toujours la colonne `etiquettes`, en
|
||||
dernière position ; le collage en bloc suit le même ordre de colonnes.
|
||||
- Une table peut porter un **objectif** : les étiquettes des personnes qu'elle
|
||||
attend, sous la règle « au moins une » ou « toutes », pour la soirée ou pour
|
||||
un tour désigné, dont l'objectif remplace alors celui de la soirée. Un
|
||||
objectif ne fixe personne : il oriente la recherche. La règle par défaut se
|
||||
règle avec les places par défaut ; chaque objectif la suit ou porte la
|
||||
sienne. Un objectif auquel aucune personne présente ne correspond est
|
||||
signalé sous l'objectif ; retirer un tour retire les objectifs de ce tour,
|
||||
et le logiciel l'annonce avant d'appliquer.
|
||||
- Les objectifs s'importent d'un second fichier CSV — colonnes `table`,
|
||||
`tour`, `objectif`, `regle` —, en cochant « Objectifs de table » avant de
|
||||
choisir le fichier, par le même aperçu que les participants, en « Mettre à
|
||||
jour » ou en « Remplacer ». « Exporter les objectifs » écrit ce même format,
|
||||
en lecture et sur un plan bloqué aussi.
|
||||
- La section « Génération » porte deux cases nouvelles : « Respecter les
|
||||
objectifs des tables », cochée, et « Rencontrer le plus d'animateurs
|
||||
différents », décochée. Anime à un tour la personne qui y pourvoit un titre
|
||||
de place ; la seconde case fait rencontrer à chacun le plus d'animateurs
|
||||
différents, à la table où ils animent.
|
||||
- « Objectifs des tables : chercher d'abord » choisit ce que le critère des
|
||||
objectifs poursuit : le plus de places servies, par défaut ; chacun au moins
|
||||
une fois ; ou l'équité d'abord, qui sert d'abord la personne la plus mal
|
||||
servie, puis le plus grand total.
|
||||
- L'**ordre des priorités** se règle : des boutons montent ou descendent un
|
||||
critère d'un palier, ou le joignent au palier du dessus, où chaque critère
|
||||
reçoit un poids entier de 1 à 100 ; « Rétablir l'ordre par défaut » revient
|
||||
au départ. La recherche poursuit l'ordre réglé et le classement l'applique ;
|
||||
la phrase au-dessus du tableau nomme les paliers dans l'ordre. Un critère
|
||||
décoché garde son rang et ne compte nulle part. Sans objectif, sans la case
|
||||
des animateurs et sous l'ordre par défaut, une graine donne les mêmes
|
||||
propositions qu'avant.
|
||||
- Le tableau des propositions ajoute le groupe de colonnes des objectifs des
|
||||
tables et des animateurs, quand l'un de ces critères compte ; le diagnostic
|
||||
dit combien de tours hors objectif la configuration impose au moins, pour
|
||||
ne pas relancer vers un zéro qu'elle interdit.
|
||||
- Changer les étiquettes, les objectifs, les règles, les cases ou l'ordre des
|
||||
priorités ne met aucune proposition en dérive : le classement se refait.
|
||||
- Au lecteur d'écran, les commandes répétées sous chaque table — places,
|
||||
objectifs, règle, retrait, et les remèdes de leurs refus — nomment leur
|
||||
table ; après un remède qui lève son propre refus, le focus revient à la
|
||||
commande refusée.
|
||||
- Sur la grande démonstration, une génération sans objectif prend environ 1 %
|
||||
de plus qu'avant les étiquettes ; avec étiquettes et objectifs, 7 à 8 % de
|
||||
plus, quels que soient le mode et l'ordre. Recalculer le tableau de 200
|
||||
propositions prend 2 à 9 % de plus, ouvrir l'onglet des propositions
|
||||
environ 5 %.
|
||||
- Le guide d'usage montre les étiquettes, les objectifs des tables, leur
|
||||
import et l'ordre des priorités, captures à l'appui.
|
||||
|
||||
**Version de format des fichiers** : 1. L'horodatage des placements est
|
||||
facultatif : un fichier qui ne le porte pas s'ouvre tel quel.
|
||||
**Version de format des fichiers** : 2. Les étiquettes, les objectifs, leurs
|
||||
règles, les cases nouvelles, le mode des objectifs et l'ordre des priorités
|
||||
s'enregistrent dans des champs facultatifs, absents à leur défaut. Un fichier
|
||||
de format 1, écrit par une version de développement, s'ouvre tel quel et se
|
||||
convertit, son historique avec lui, au premier geste en écriture.
|
||||
|
||||
**En remplaçant** : rien à faire, c'est la première version.
|
||||
|
|
|
|||
|
|
@ -494,7 +494,9 @@ même plan diffèrent, et pourquoi relancer aide parfois, et parfois jamais.
|
|||
### Le problème
|
||||
|
||||
Asseoir chacun, à chaque tour, de sorte que la personne la plus mal servie
|
||||
rencontre le plus de monde possible.
|
||||
rencontre le plus de monde possible. C’est l’objectif de l’ordre par défaut ;
|
||||
vous pouvez en ranger d’autres devant, dans l’ordre des priorités de la
|
||||
section « Génération ».
|
||||
|
||||
### Pourquoi il n’a pas de réponse évidente
|
||||
|
||||
|
|
|
|||
|
|
@ -806,6 +806,14 @@ describe('criteres : compilationDe, la compilation d’une instance (D10, contra
|
|||
assert.deepEqual(noms, ['ecartAuPlafondAPrioriMax', 'excedentCollisions', 'collisionsCumulees', 'rencontresRepetees', 'redondance']);
|
||||
}
|
||||
});
|
||||
|
||||
test('un état des critères trop court ou hors de l’ordre du registre lève RangeError', () => {
|
||||
const etat = etatSous(TOUTES_COCHEES, 'places');
|
||||
const [premier, second, ...suite] = etat;
|
||||
for (const etatCriteres of [etat.slice(0, -1), [second, premier, ...suite]]) {
|
||||
assert.throws(() => compilationDe({ priorites: PRIORITES_PAR_DEFAUT, etatCriteres, modeObjectifs: 'places' }), RangeError);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Les modules JavaScript et les composants de src/, hors épreuves, chemins
|
||||
|
|
|
|||
Loading…
Reference in a new issue