Support for post annotation label reassignement.
This commit is contained in:
1 parent
698ac4240c
commit
370f3252ef
10 files changed
+242
-36
No files matched your search
@@ -256,3 +256,33 @@ ones. Weighting and the final overall mark belong to the separate grading flow.
|
||||
- [ODS export](../copienator/commands/update_ods.py)
|
||||
- [Final-mark stamping](../copienator/commands/add_final_score.py)
|
||||
- [Cleanup retention](../copienator/commands/clean.py)
|
||||
|
||||
|
||||
## Manual modifications after annotation reading
|
||||
|
||||
`modify-annotations EVALUATION --annotation-dir BGnot` (or `Bnot`) applies
|
||||
`annotation_modifications.txt`. The GUI exposes it between annotation reading
|
||||
and return preparation. Its `### Source: BGnot`/`Bnot` line must match the mode.
|
||||
Instruction operators follow manual resolution syntax but act on reviewed raster
|
||||
**bodies**, excluding headers and all supplementary pages. Headers and scores stay
|
||||
with their labels. Missing target bodies are allowed; their new header identifies
|
||||
the target and its existing score, without inventing feedback or a score.
|
||||
|
||||
Both readers record `annotation_baseline.json` and lossless hidden
|
||||
`.annotation-base-*.png` images in each copy's annotation directory. The JSON
|
||||
stores the exact header height, baseline answer metadata, and filtered membership.
|
||||
Older outputs require one full annotation read before body editing. Legacy
|
||||
selective redo still works, but cannot infer missing header boundaries.
|
||||
|
||||
Each application rebuilds from that baseline and publishes all affected copies
|
||||
and the mode's `annotation_modifications_applied.txt` in one rollback-capable
|
||||
transaction. Reapplying is idempotent; removing an instruction restores its prior
|
||||
content and membership. Annotation rereads refresh the baseline and replay the
|
||||
applied snapshot, not the draft. Selective redo preserves unaffected baseline
|
||||
layers so previous transfers are never included twice.
|
||||
|
||||
The operation rebuilds per-label JPEGs, `info.json`, `Concat.jpg`, and the filtered
|
||||
BGnot PDF or Bnot JPEG. Every changed non-empty body is included in the filtered
|
||||
output, with its destination label's supplementary material. `score.json` is not
|
||||
modified. The GUI marks downstream return preparation stale. Rerun `giving-names`
|
||||
without `--update` to refresh both full outputs and individual answer exports.
|
||||
@@ -368,6 +368,56 @@ score.json** sert à mettre à jour les scores sur les images finales à
|
||||
partir d'une modification manuelle des fichiers `score.json`.
|
||||
|
||||
|
||||
### Modifier les réponses annotées
|
||||
|
||||
Cette étape facultative se trouve après la lecture des annotations, pour **Bnot**
|
||||
et **BGnot**. Pour une ancienne évaluation, relancez d’abord **Lire les annotations
|
||||
manuscrites** : cette lecture enregistre maintenant la limite exacte de chaque
|
||||
en-tête et une référence sans perte des images annotées.
|
||||
|
||||
Saisissez la **Copie**, le **Label source** et le **Label cible**, puis **Ajouter**.
|
||||
Les deux labels doivent exister ; la source doit avoir une réponse annotée. Une
|
||||
cible sans réponse est acceptée. Vous pouvez ajouter plusieurs instructions.
|
||||
|
||||
Les boutons **Source**, **Cible** et **Cut** montrent uniquement le **corps de la
|
||||
réponse** : copie originale, annotations Gemini conservées et annotations
|
||||
manuscrites situées sur ce corps. Ils excluent le score, les commentaires globaux
|
||||
de l’en-tête, le contexte, l’énoncé et le corrigé. Les annotations manuscrites de
|
||||
l’en-tête restent dans leur en-tête. Le pourcentage de coupe porte sur la hauteur
|
||||
du corps uniquement. Aucun fragment n’est redimensionné lors des transferts.
|
||||
|
||||
Les instructions sont enregistrées dans `annotation_modifications.txt` :
|
||||
|
||||
```text
|
||||
### Source: BGnot
|
||||
Copie43 Ex 1 c{43}1> Ex 2|
|
||||
```
|
||||
|
||||
Cet exemple conserve le début de la source (43 %) et ajoute la fin après le corps
|
||||
de la cible. `2` conserve la fin, `x` remplace le corps cible au lieu d’ajouter, et
|
||||
`|Ex 2` place le fragment avant la cible. Les opérateurs sans coupe de la résolution
|
||||
manuelle sont aussi disponibles et décrits dans le panneau. Une instruction par
|
||||
source ; une cible ne peut pas être source dans le même fichier. Plusieurs sources
|
||||
peuvent alimenter une cible, dans l’ordre du fichier.
|
||||
|
||||
**Cut** prépare une commande à recopier. Utilisez **Ouvrir dans un éditeur de
|
||||
texte**, enregistrez puis **Recharger**. **Aperçu du résultat** montre les corps
|
||||
résultants pour la copie saisie. Cliquez sur **Make modifications** pour appliquer
|
||||
le fichier enregistré. Chaque label conserve son en-tête ; les scores restent
|
||||
inchangés. Les images individuelles, les images combinées, le PDF filtré BGnot
|
||||
(ou l’image filtrée Bnot) et les informations de présence sont reconstruits.
|
||||
Les réponses modifiées non vides sont incluses dans le résultat filtré, avec les
|
||||
compléments propres à leur label.
|
||||
|
||||
Le fichier reste éditable après application. Réappliquer ne cumule pas les
|
||||
transferts : le traitement repart de la référence issue de la lecture des
|
||||
annotations. Retirer une ligne puis appliquer annule son effet. Une nouvelle
|
||||
lecture des annotations renouvelle la référence et réapplique les dernières
|
||||
instructions **appliquées**, sans prendre en compte un brouillon non appliqué.
|
||||
|
||||
Relancez ensuite **Attribuer les noms et préparer A Rendre**, sans cocher l’option
|
||||
limitée aux images `answers`, afin d’actualiser tous les livrables.
|
||||
|
||||
### Attribuer les noms et préparer A Rendre
|
||||
|
||||
**Effet :** rassemble les résultats de chaque élève dans le dossier `A Rendre`.
|
||||
|
||||
Reference in new issue
Block a user