6.2 KiB
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 Lire les annotations manuscrites, cliquez sur Finalisation web… en haut du GUI, choisissez Bnot ou BGnot, 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.
- 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.
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 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.
Anot reste géré par le workflow existant. La finalisation web concerne Bnot et BGnot, les deux modes qui disposent de corps de réponses éditables.
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.