Files
Copies/docs/finalisation_web.md

8.3 KiB
Raw Permalink Blame History

Finalisation dans le navigateur

La finalisation web est une alternative facultative aux quatre panneaux de finalisation. Les panneaux existants et les commandes restent disponibles. Elle fonctionne sur cet ordinateur, sans hébergement ni nouvel appel à Gemini.

Ouvrir

Après génération des annotations Anot, ou après Lire les annotations manuscrites pour Bnot/BGnot, cliquez sur Finalisation web… en haut du GUI, choisissez le dossier disponible, puis Ouvrir. Le GUI reste verrouillé par une fenêtre modale tant que le serveur fonctionne. Le bouton Arrêter le serveur et reprendre ferme la session et recharge les éditeurs. Fermer seulement l’onglet du navigateur ne ferme pas le serveur.

La commande équivalente est :

python -m copienator finalise-web CHEMIN_EVALUATION --annotation-dir BGnot

--no-browser affiche le lien sans ouvrir automatiquement le navigateur. Les commandes utilisant le gestionnaire CLI commun respectent le verrou de l’évaluation. Une régénération en cours doit finir avant l’arrêt normal du serveur. Le verrou système est libéré à l’arrêt du processus ; le fichier de verrou restant sur disque n’empêche pas la prochaine ouverture.

Vérifier et modifier

  • Copie seule : toutes les réponses de cette copie. Le champ Nom propose une complétion ; vous pouvez chercher une partie du nom, sans tenir compte des accents ou des majuscules. Choisir un nom renseigne l’identifiant de copie, et inversement. Les suggestions indiquent l’identifiant pour distinguer les doublons.
  • Label seul : toutes les copies pour ce label.
  • Les deux : leur intersection. Sans filtre, la page présente toutes les réponses par lots de vingt, avec chargement différé des images.
  • Cliquez sur une réponse pour l’agrandir. Les liens donnent accès au contexte, à l’énoncé, au corrigé et au PDF final lorsqu’ils existent.
  • Modifiez scores et remarques personnelles sous les images. Les remarques acceptent le LaTeX utilisé dans le workflow existant.
  • Identités et remarques générales permet de corriger les noms, d’ouvrir l’originale et d’ajouter, supprimer ou réordonner les remarques de chaque copie.
  • Couper / transférer montre exclusivement les corps de réponse. Cliquez sur la source pour placer la coupe, ou réglez son pourcentage. Choisissez la cible, la partie conservée et le placement, puis vérifiez Aperçu du résultat.

Les saisies locales sont conservées lors d’un changement de filtre. Enregistrez les modifications avant de régénérer. Si une autre page a changé les fichiers, une sauvegarde périmée est refusée ; Recharger les données actualise les valeurs enregistrées en conservant les saisies locales à réexaminer.

Score final exporté

Après Ajouter le score final, sélectionner une copie par identifiant ou nom fait apparaître son Score final exporté au-dessus des réponses. Cette note est celle du dernier export, arrondie comme sur le JPEG ; modifier les scores par question ne la recalcule pas. Le passage enregistre désormais les notes dans .copienator/final_scores.json, par identifiant, afin de conserver leur association après un changement de nom.

Pour les anciens exports, la note peut être récupérée du fichier ODS uniquement si ce fichier n’est pas plus récent que les documents exportés. Sinon, relancez Ajouter le score final pour enregistrer la note de façon explicite.

Brouillon, application et régénération

Ajouter au brouillon ne modifie pas les images. Enregistrer le brouillon écrit le même annotation_modifications.txt que le GUI. Le fichier Bnot/annotation_modifications_applied.txt ou son équivalent BGnot reste le relevé des instructions effectivement appliquées.

Régénérer les sorties conserve par défaut ces instructions appliquées. Cochez Appliquer aussi le brouillon de transferts pour remplacer les instructions appliquées par le brouillon enregistré. Retirer une ligne du brouillon puis l’appliquer annule le transfert correspondant. Les contraintes existantes restent valables : une instruction par source, une cible ne peut pas être source, aucun déplacement automatique des scores ou des en-têtes.

La case Ignorer les copies inchangées, cochée par défaut près du bouton de régénération, évite de recomposer les copies et dossiers de retour dont les entrées n’ont pas changé. Une modification de score ou de remarque ne reconstruit que la copie concernée ; les changements de documents partagés peuvent concerner toute la classe. Le premier passage établit les empreintes nécessaires. Les changements de noms seuls sont suivis séparément : ils ne relancent pas la composition des corrections, même avant ce premier passage. Enregistrer un nom renomme déjà son dossier de retour existant et ses fichiers principaux. Les fichiers manquants sont reconstruits et les échecs sont retentés. Décochez cette case pour forcer une régénération complète. Le journal signale les copies ignorées.

La régénération actualise les réponses, les documents combinés et A Rendre selon les options de sortie existantes, en conservant les noms personnalisés. Le journal indique les erreurs et les résultats incomplets. La chaîne s’arrête à la première étape non réussie ; les modifications enregistrées restent récupérables pour une nouvelle tentative. Les publications gardent les garanties transactionnelles des moteurs existants (par copie pour la lecture, ensemble des copies concernées pour les transferts), pas une transaction globale de toute l’évaluation.

Compatibilité et état de lecture

Les scores restent dans le dossier d’annotations choisi ; les remarques utilisent custom_remarks.json et general_remarks.json. Les éditeurs existants utilisent la même source de scores, y compris lorsque A Rendre contient des copies de fichiers plutôt que des liens. La préparation des retours mémorise cette source et retrouve les dossiers renommés par leur identifiant de copie.

Les lecteurs enregistrent maintenant review_snapshot.json et des images .review-note-*.png : les données de correction après interprétation des cases, la géométrie et les couches manuscrites, avant ajout des remarques personnelles. Le navigateur utilise ces données pour reconstruire les en-têtes sans relire les PDF manuscrits ni accumuler les remarques. Les reprises sélectives fusionnent leurs seules questions avec l’état précédemment lu. Les baselines sans perte restent la référence des coupes et transferts.

Pour une ancienne évaluation sans cet état, une régénération web ordinaire peut le créer avec le lecteur existant et les scores conservés. En présence de BRnot, la régénération refuse cette conversion automatique : il faut disposer d’une lecture du passage principal puis de la reprise avec cette version pour conserver l’interprétation complète. L’affichage et les éditeurs restent accessibles.

Si vous importez de nouvelles annotations ou refaites la correction/découpe, repassez par Lire les annotations manuscrites dans le workflow existant avant de revenir au navigateur. regenerate-reviewed réutilise l’interprétation sauvegardée ; il ne recherche pas de nouvelles annotations.

Le mode Anot donne accès aux noms, scores, remarques et à leur régénération dès la génération initiale, sans lecture manuscrite intermédiaire. Les coupes et transferts restent réservés à Bnot/BGnot, qui disposent des limites exactes des corps de réponses relus. Les anciens résultats Anot peuvent créer leur état de rendu lors de la première régénération, sans remplacer leurs scores enregistrés.

Développement

L’API FastAPI/Uvicorn est dans copienator/finalisation_server.py, les opérations dans copienator/finalisation.py. Le client React/TypeScript est dans web/. Le paquet Python inclut les fichiers construits dans copienator/web_static/ : Node n’est pas nécessaire pour utiliser l’application installée.

cd web
npm ci
npm run build

Le serveur écoute uniquement sur 127.0.0.1, sur un port libre, et exige un jeton de session échangé contre un cookie HttpOnly. Les requêtes d’une autre origine sont refusées. Les chemins des documents sont déterminés à partir des identifiants validés, jamais fournis librement par le navigateur.