erplibre/script/analyse
Mathieu Benoit 4028421cb8 [ADD] analyse: what a migration gained and lost, step by step
A migration leaves one database per step and they all still exist, so the
tool compares them side by side rather than replaying anything. Six Odoo
starts would cost an hour, write to the databases and need the checkout
switched at each step; the same inspection in SQL takes under half a
second per database and touches nothing. Measured on a real migration:
seven databases surveyed in 3.8 seconds.

It reports what each step gained and lost — modules, models, views, menus,
attachments — and ends on the comparison of the ENDS, which is not the sum
of the steps: a module dropped at 15 and put back at 17 lost nothing, and
adding the steps would count it twice.

The signal that matters is rows. A module removed is visible; a table
going from four thousand rows to zero is visible nowhere.

Two rename heuristics were tried and rejected on real data before the one
that holds. Row count alone paired an account tag table with dms_directory
— both had seven rows. A shared five-letter word paired two cleanup
tables. Overall name similarity separates them. And a renamed table stays
in the loss list, annotated: removing it was the real danger, since a
wrong pairing would have hidden a genuine loss.

--- FR ---

[ADD] analyse : ce qu'une migration a gagné et perdu, palier par palier

Une migration laisse une base par palier et elles existent toutes encore :
l'outil les compare côte à côte plutôt que de rejouer quoi que ce soit.
Six démarrages d'Odoo coûteraient une heure et écriraient dans les bases ;
la même inspection en SQL prend moins d'une demi-seconde par base. Mesuré
sur une vraie migration : sept bases inspectées en 3,8 secondes.

Le bilan final compare les EXTRÉMITÉS, ce qui n'est pas la somme des
paliers : un module retiré en 15 puis remis en 17 n'a rien perdu.

Le signal qui compte, ce sont les lignes. Un module en moins se voit ; une
table qui passe de quatre mille lignes à zéro ne se voit nulle part.

Deux rapprochements de renommage ont été essayés et rejetés sur des
données réelles. Et une table renommée reste dans la liste des pertes,
annotée : l'en retirer était le vrai danger.

Assisted-by: Claude Opus 5
2026-08-22 07:23:59 -04:00
..
shell [FIX] script: make the analysis and migration tools executable 2026-08-22 07:23:59 -04:00
analyse_custom_field.py [FIX] script: make the analysis and migration tools executable 2026-08-22 07:23:59 -04:00
analyse_diff_tui.py [FIX] script: make the analysis and migration tools executable 2026-08-22 07:23:59 -04:00
analyse_schema_size.py [FIX] script: make the analysis and migration tools executable 2026-08-22 07:23:59 -04:00
analyse_view_custom.py [FIX] script: make the analysis and migration tools executable 2026-08-22 07:23:59 -04:00
check_migration_quality.py [ADD] analyse: what a migration gained and lost, step by step 2026-08-22 07:23:59 -04:00
check_migration_quality_tui.py [ADD] analyse: what a migration gained and lost, step by step 2026-08-22 07:23:59 -04:00
lib_analyse.py [FIX] script: make the analysis and migration tools executable 2026-08-22 07:23:59 -04:00