Phase 2 : parseur de l'annexe sec10 — 52 textes, 12 affaires CC
Briques réutilisables : - dates_fr : lit les formes réelles du corpus (« 23 avr. 2026 (JO 24 avr.) », « 1er juill. », « 24.07.2026 ») et distingue une date exacte d'une échéance prévisionnelle (« Fin août 2026 » → situé au 25, libellé conservé, jamais présenté comme un fait) - markdown : découpage des tableaux (barres échappées, lignes courtes), nettoyage, extraction des marqueurs [^dim07-24^] / [^phase5-3.1^] Parseur sec10 : - 27 lois promulguées + 21 lignes simples + 2 lignes éclatées en 4 textes = 52 - éclatement justifié : les lignes « accords Kazakhstan et Colombie » et « MACF » décrivent chacune deux textes de statuts différents - migration 002 : regime_libertes stocké à part, faute de savoir quel public la cotation globale du rapport vise — dérouler « droits+ » sur les trois publics aurait inventé une ventilation absente de la source - migration 003 : la facette « devant le CC » couvre aussi les saisines sans numéro d'affaire (programmation militaire), sinon 6 textes au lieu de 7 Trois pièges du corpus, corrigés et couverts par des tests : - « eau » matchait comme sous-chaîne dans réseaux / drapeau / Retailleau - une décision citée sans saisine créait une fausse saisine (loi Philippine) - la date de saisine était pêchée dans la colonne « échéance », datant la saisine de l'aide à mourir du mois suivant 72 tests, 90 % de couverture sur pipeline/. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
31d3935bce
commit
c36b8dc631
@@ -82,6 +82,15 @@ class Pertinence(StrEnum):
|
||||
FAIBLE = "faible"
|
||||
|
||||
|
||||
class RegimeLibertes(StrEnum):
|
||||
"""Cotation globale d'un texte par l'annexe du rapport (`sec10.md`)."""
|
||||
|
||||
DROITS_PLUS = "droits_plus" # création ou extension de droits
|
||||
CONTROLE_PLUS = "controle_plus" # restriction, ou extension des contrôles
|
||||
MIXTE = "mixte"
|
||||
NEUTRE = "neutre"
|
||||
|
||||
|
||||
class Confiance(StrEnum):
|
||||
HIGH = "high"
|
||||
MEDIUM = "medium"
|
||||
@@ -258,6 +267,9 @@ class Texte(BaseModel):
|
||||
themes: list[Theme] = Field(default_factory=list)
|
||||
impacts: dict[Public, Impact] = Field(default_factory=dict)
|
||||
|
||||
regime_libertes: RegimeLibertes | None = None
|
||||
regime_libertes_note: str | None = None
|
||||
|
||||
guadeloupe_pertinence: Pertinence | None = None
|
||||
guadeloupe_note: str | None = None
|
||||
|
||||
@@ -353,6 +365,8 @@ class Texte(BaseModel):
|
||||
{str(p): {"sens": str(i.sens), "note": i.note} for p, i in self.impacts.items()},
|
||||
ensure_ascii=False,
|
||||
),
|
||||
"regime_libertes": str(self.regime_libertes) if self.regime_libertes else None,
|
||||
"regime_libertes_note": self.regime_libertes_note,
|
||||
"guadeloupe_pertinence": (
|
||||
str(self.guadeloupe_pertinence) if self.guadeloupe_pertinence else None
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user