Skip to content

Manquement de paragraphes dû aux versionnage de sections #11

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
tianyikillua opened this issue Dec 25, 2016 · 2 comments
Closed

Manquement de paragraphes dû aux versionnage de sections #11

tianyikillua opened this issue Dec 25, 2016 · 2 comments
Labels

Comments

@tianyikillua
Copy link
Contributor

Parfois le fichier obtenu manque quelques paragraphes dans certaines sections : cela vient du fait que les modifications chronologiques des sections deviennent trop complexes...

LEGISCT1 -> Chapitre I ancien
LEGISCT2 -> Chapitre I nouveau
LEGISCT3 -> Section 1, dont le id_parent est LEGISCT1, mais en vigueur dans la nouvelle version

Dans cette configuration, Section 1 disparaît dans la nouvelle version.

Je n'ai pas encore tout à fait compris votre base de données, mais le workaround que j'ai trouvé, au lieu de faire

articles_section = articles.select().where(Article.version_section == version_section_parente)

est de prendre maintenant toutes les possibilités

articles_section = articles.select().where( (Article.version_section == version_section_parente.cid.cid) | (Article.version_section == version_section_parente))

Idem pour les sections, dans le fichier exporter.py.

tianyikillua added a commit to tianyikillua/Archeo-Lex that referenced this issue Dec 25, 2016
tianyikillua added a commit to tianyikillua/Archeo-Lex that referenced this issue Dec 25, 2016
tianyikillua added a commit to tianyikillua/Archeo-Lex that referenced this issue Dec 25, 2016
C'est un peu moche mais je ne connais pas trop les manip sql
tianyikillua referenced this issue in tianyikillua/Archeo-Lex Dec 28, 2016
…igin/date_fond', 'origin/improve-markdown' and 'origin/mises-a-jour-des-scripts'
@Seb35 Seb35 added the bug label Feb 5, 2017
Seb35 added a commit that referenced this issue Mar 9, 2018
Le format de sortie est géré par différentes abstractions permettant
de générer différents formats de sortie tout en dissociant bien le
code interne :
* syntaxe utilisée : Markdown, etc.
* organisation des fichiers : un fichier unique, un article par
  fichier (sans répertoires), etc.
* versionnement : Git, etc. (#35)

Pour chaque abstraction, une "interface" est proposée. Étant donné
l’ampleur du changement, il est possible que ces interfaces évoluent
dans les semaines qui viennent.

Au passage, un cache de sections (#32) est implémenté pour éviter
de recalculer (récursivement) les sous-sections. La difficulté est
de repérer (récursivement) la plus proche date interne de fin de
vigueur, ce qui est fait en retournant ce résultat avec le texte
de la section pour invalider toutes les sections parentes au-delà
de cette date de fin de vigueur. Le gain de temps de calcul est
environ 30 à 100 (pifométriquement, ça passe d’heures de calcul à
minutes de calcul).

Avec le travail sur le cache de sections a été vérifié de façon
plus fine différentes exceptions sur les dates de vigueur. Entre
autres, l’exception où la date de début de vigueur est 2999-01-01
(=absence de date) notamment utilisée dans les arrêtés. Cela
pourrait corriger #11 et #30.
Seb35 added a commit that referenced this issue Mar 17, 2018
Performance
-----------

Plutôt que de faire 1+N requêtes SQL par section (1 pour obtenir ses sous-sections à
la date de vigueur + N pour obtenir les titres de sous-sections), une requête globale
à tout un texte est faite comprenant toutes les sections et sous-sections et une
jointure pour obtenir les titres. Le temps de démarrage est donc plus long mais la
suite est beaucoup plus rapide.

Articles manquants
------------------

Lorsque ce n’est pas imputable à la base LEGI elle-même (cf #30), certains articles
(ou sections ?) manquent du fait du code et/ou du mécanisme de cache et/ou de la
structure de données pas assez comprise. Par exemple, si une section a une plage de
vigueur 2000-01-01 – infini et une sous-section 2010-01-01 – 2011-01-01, le cache
doit expirer en 2000-01-01, 2010-01-01, 2011-01-01, c’est-à-dire prendre en compte
les dates de début et fin de vigueur des sous-sections : pour calculer la plus prochaine
date d’expiration du cache d’une section, il faut donc lister ses sous-sections
et donc les connaître, y compris celles qui ne sont pas encore en vigueur, c’est
l’objet de cette généralisation de la requête SQL (en plus de l’aspect performances).

Noter qu’il manque encore des articles, il faut rechercher à qui cela est imputable
(code, cache, mauvaise compréhension du schéma de données de la base LEGI, base LEGI
elle-même).

Une amélioration possible serait que le cache de sections ne soit pas un simple
dictionnaire (avec comme clé l’identifiant LEGISCTA), mais une structure arborescente.
Cela faciliterait la lecture, mais il faut trouver une méthode efficace de créer
cette structure.

Bug: #11 #30
Seb35 added a commit that referenced this issue May 27, 2018
Ce manque correspond au cas où un article est rattaché à plusieurs sections
parentes, lorsque la section parente change de titre.

Issue: #11
@Seb35
Copy link
Member

Seb35 commented May 27, 2018

La situation est beaucoup améliorée depuis le commit 367d633, cela corrige les exemples du "Chapitre III : La carte de séjour temporaire et la carte de séjour pluriannuelle" du CESEDA (qui était vide), la section "Chapitre VII : Sanctions prononcées par la formation restreinte de la Commission nationale de l'informatique et des libertés." de la loi 78-17 (qui était vide) et certains cas où le texte du CPI n’était nullement modifié d’une version à l’autre.

Il reste toutefois 3 versions du CPI où le texte n’est pas modifié n’est pas modifié d’une version à l’autre, ce qui n’est pas normal (2008-06-29, 2011-05-29, 2017-12-22).

@Seb35
Copy link
Member

Seb35 commented Aug 10, 2018

Bon, sur les trois versions manquantes du CPI

Je ferme ce bug puisque je ne constate plus de problème. Si d’autres problèmes similaires sont trouvés, il vaudrait mieux ouvrir un nouveau bug. Dans ce cas, décrire précisément le problème (noms du code, de la section, de l’article, date à laquelle ça arrive).

@Seb35 Seb35 closed this as completed Aug 10, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants