openfisca / openfisca-france

French tax and benefit system for OpenFisca
https://openfisca.org/fr
259 stars 99 forks source link

Migrer les barèmes IPP des fichiers Excel vers le format YAML des paramètres openfisca #905

Closed benjello closed 6 years ago

benjello commented 6 years ago

Contexte:

L'IPP est convaincu qu'une source unique de vérité des paramètres de législation serait très utile en général et notamment pour le projet openfisca. L'IPP est également convaincu que le format Excel n'est pas adapté au contrôle de version ni à l'édition collaborative et à un suivi des validations.

Cependant les barèmes IPP actuels présentaient les avantages suivants:

Proposition:

Proposition de Roadmap

Questions à régler:

Autres références:

Commentaires bienvenus ! @maukoquiroga @Anna-Livia @sandcha @guillett @fpagnoux

tfrancart commented 6 years ago

Bonjour

Il est possible d'utiliser les références ELI (European Legislation Identifier) pour référencer des textes ou des articles de texte sur Légifrance. Ces références peuvent la plupart du temps se calculer à partir de la référence législative dans les fichiers XLS des barêmes IPP :

Pour prendre un exemple, dans https://www.ipp.eu/outils/baremes-ipp/prelevements-sociaux/, onglet "CSG-ACTIVITE", ligne 5 : "Loi 2010-1594 du 20/12/2010, art. 20 (LFSS pour 2011)" se transforme assez directement en https://www.legifrance.gouv.fr/eli/loi/2010/12/20/2010-1594/jo/article_20, qui donne directement accès à l'article. La forme des références ELI pour Legifrance, documentée à http://www.eli.fr/fr/constructionURI.html, est ..../eli/{type du texte}/{annee}/{mois}/{jour}/{numéro de texte}/jo/article_{numero}. On peut omettre la dernière partie "article_xxx" pour avoir accès au texte entier (https://www.legifrance.gouv.fr/eli/loi/2010/12/20/2010-1594/jo).

Si les colonnes du tableau Excel sont remplies avec des références juridiques écrites d'une façon cohérente, une série d'expressions régulières ou d'extraction simples devraient permettre de générer les ELI correspondants. On peut ensuite faire une seconde passe pour tester que les URI générées ne renvoient pas une erreur.

tfrancart commented 6 years ago

Plus d'infos sur ELI :

guillett commented 6 years ago

@tfrancart c'est vraiment top !

En pratique j'ai voulu utiliser ce format pour référencer le décret suivant, sans succès…

Sais-tu quel est le périmètre pour lequel ces liens ELI sont disponibles ? Merci !

tfrancart commented 6 years ago

En ce qui concerne Legifrance "ELI est implémenté sur les textes législatifs et règlementaires publiés depuis le 01/01/2002" (Trouvé à http://www.eli.fr/fr/constructionURI.html)

guillett commented 6 years ago

@tfrancart merci beaucoup pour cette rapide réponse.

J'ai cherché davantage pour avoir le bon URI de l'article R351-5 du Code de la construction et de l'habitation.

Suis-je encore passé à côté ?

Merci d'avance.

tfrancart commented 6 years ago

ELI ne s'applique pas (encore ?) aux codes. Le ELI sert à identifier les lois publiées au JO; ces textes pouvant ensuite être intégrés dans des codes. Mais tout ce qui est code et lois consolidées ne sont pas encore identifiés par des ELI.

guillett commented 6 years ago

Ok, merci pour cette nouvelle clarification.

fpagnoux commented 6 years ago

Pour en revenir à la fusion barèmes IPP/barèmes OpenFisca:

Comme @benjello, je suis convaincu qu'il y a un gros intérêt à effectuer cette fusion. Je suis en phase avec la Proposition de l'état final vers lequel on veut aller. Maintenant, toute la difficulté va être dans le chemin pour y arriver...

L'étape qui consiste à améliorer le format YAML openfisca pour inclure les champs propres à l'IPP ne devrait pas poser trop de problèmes.

Le parsing des paramètres IPP en OpenFisca est par contre loin d'être trivial. Beaucoup d'efforts ont déjà été déployés pour construire des scripts qui permettent de passer des fichiers excels à YAML.

En pratique, ces scripts sont peu voir jamais utilisés. Quelques raisons:

J'ai l'impression que si on veut avancer il faut que les deux formats commencent à se rapprocher:

Je regarde ça d'un peu plus près.

fpagnoux commented 6 years ago

Ok, j'ai pris une journée pour regarder ce qu'on peut faire de ces fichiers XLSX.

Je me suis basé sur les explorations qu'avait fait @michelbl, et j'ai pu faire un POC qui prend un fichier de paramètre XLSX et qui en fait un répertoire qui contient des paramètres YAML au format OpenFisca. C'est ici.

Quelques remarques :

À partir de là, si on voulait aller plus loin:

@benjello je te laisse regarder ça 🙂

benjello commented 6 years ago

Bravo @fpagnoux. Il y a deux points qui sont important et qui ont été partiellement traités dans les précédents scripts:

Je regarde cela ASAP.

fpagnoux commented 6 years ago

le réagencement de l'arbre brut issu du parsing des fichiers excel IPP pour coller à l'arborescence openfisca et/ou en crée un nouvelle comme cela était réalisé ici

Justement, je pense que cette part du travail est par essence très fragile: dès qu'on change quelque chose d'un côté ou de l'autre, les scripts cassent. Je pense qu'on a plus à gagner à faire converger les arbres.

benjello commented 6 years ago

Oui bien sûr. Mais ce travail là permet d'aider à réaliser la première convergence des arbres (ou les convergences successives) avant d'atteindre l'arbre final.

benjello commented 6 years ago

@fpagnoux :

Qu'en penses-tu ?

fpagnoux commented 6 years ago

la première ligne cachée est en fait utilisé pour donner les noms de l'ancien modèle taxipp et notamment traités par ce parser. les noms retenus pour openfisca viennent de la slugification des label des colonnes

Ok, si cette première ligne est un code qui correspond à autre chose et qui doit rester inchangée, alors on peut ajouter une seconde ligne. Mais je ne pense pas que ce soit une bonne idée de se baser sur de la slugification: ça donne des noms à rallonge (cf les problèmes qu'on avait eu sur la longueur du path), et ça fait un changement de l'arbre à chaque micro-évolution de la case Excel (correction de faute d'orthographe...).

Après, si on veut avoir quelque chose qui fonctionne rapidement, on peut automatiquement donner à chaque colonne le nom slugifié de son label, mais je vois ça plus comme un pré-traitement initial que quelque chose à intégrer au process normal.

On pourrait essayer en effet de refaire fonctionner la transformation de l'arbre. Aux dernière nouvelles, elle ne fonctionnait pas, mais il suffit peut être de pas grand chose pour la réparer.

benjello commented 6 years ago

@fpagnoux :

guillett commented 6 years ago

@fpagnoux, @benjello, une fois qu'OpenFisca sera la source de vérité, faudra-il être capable de générer des fichiers Excel avec les paramètres de la législation ?

Je dirais que oui. Si c'est le cas, cette extraction serait donc, selon moi, un sujet prioritaire. Cela permettrait de modifier (normaliser) les fichiers IPP actuels et les re-construire de façon automatique progressivement).

Note : Question faisant suite à une discussion IRL avec @maukoquiroga et @sandcha.

benjello commented 6 years ago

@guillett : on veut pouvoir avoir des "vues" établies par l'IPP sur les paramètres en forme tableaux bi-dim qui peuvent s'exporter en excel et donc regénérer les barèmes IPP à partir des paramètres. En gros on veut pouvoir créer une arborescence qui n'est pas forcément celle des paramètres openfisca mais on va essayer de ne pas trop s'en éloigner.

Morendil commented 6 years ago

Je ferme en faveur de #1164