From a1da4fc97fa611adb0f4cadff582b607fe856b6a Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Sun, 26 Jul 2026 06:43:02 +0200 Subject: [PATCH] feat: annonce les reecritures que l'enregistrement imposera MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refuser une modification, c'est reenvoyer la valeur actuelle du document. Mais l'enregistrement ramene les donnees a une forme canonique (aujourd'hui les numeros de lot) : sur ces champs, le refus n'est pas conserve. L'interface le laissait croire. Plutot que de traiter le cas des lots en dur, le serveur devient seul juge de ce qu'il stocke et l'annonce : `canonicalize_extraction` regroupe les reecritures faites a la persistance, `save_document` et l'apercu passent par elle, et /api/documents/{id}/re-extract renvoie `previous_canonical` a cote de `previous_data`. Le front compare ces deux jeux et signale, sous chaque case decochee, la valeur que l'enregistrement reecrira — sans connaitre aucune regle. Une transformation ajoutee plus tard remontera donc toute seule dans l'interface. Toutes les differences restent visibles et toutes les cases actives : voir ce qui change et pouvoir se prononcer prime, quitte a etre prevenu que ce champ-la reviendra reecrit. Supprime au passage frontend/src/utils/lots.js, qui dupliquait la regle de normalisation cote client. Co-Authored-By: Claude Opus 5 --- .../src/components/ExtractionDiffDetails.vue | 37 +++++++-- frontend/src/pages/ReExtractionPage.vue | 14 +++- frontend/src/utils/diffExtraction.js | 72 ++++++++++++++--- frontend/src/utils/lots.js | 21 ----- frontend/src/utils/mergeExtraction.js | 17 ++-- frontend/tests/mergeExtraction.test.js | 79 +++++++++++-------- src/plesna_gerance/api/routes/documents.py | 12 ++- src/plesna_gerance/database/service.py | 8 +- src/plesna_gerance/utils/canonical.py | 39 +++++++++ tests/test_reextraction.py | 55 +++++++++++++ 10 files changed, 268 insertions(+), 86 deletions(-) delete mode 100644 frontend/src/utils/lots.js create mode 100644 src/plesna_gerance/utils/canonical.py diff --git a/frontend/src/components/ExtractionDiffDetails.vue b/frontend/src/components/ExtractionDiffDetails.vue index 7ace8e4..a34e831 100644 --- a/frontend/src/components/ExtractionDiffDetails.vue +++ b/frontend/src/components/ExtractionDiffDetails.vue @@ -4,7 +4,8 @@
Métadonnées
-
+
+
+
+

⚠ {{ overrideLabel(c.id) }}

@@ -50,19 +53,19 @@ {{ loc.title }}
+

⚠ {{ overrideLabel(loc.id) }}

-
- +
+
+ {{ c.label }} {{ c.before }} @@ -79,7 +82,8 @@ @input="edit(c, $event.target.value)" class="flex-1 min-w-0 px-1.5 py-0.5 rounded border border-gray-600 bg-gray-900 text-green-400 font-medium disabled:opacity-40 disabled:line-through focus:ring-1 focus:ring-amber-500 focus:border-amber-500 focus:outline-none" /> - {{ c.hint }} +
+

⚠ {{ overrideLabel(c.id) }}

@@ -103,6 +107,7 @@ {{ f.after }}
+

⚠ {{ overrideLabel(c.id) }}

@@ -131,6 +136,7 @@
{{ op.before }}
{{ op.after }}
+

⚠ {{ overrideLabel(op.id) }}

@@ -140,6 +146,8 @@