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>
44 lines
2.2 KiB
SQL
44 lines
2.2 KiB
SQL
-- ============================================================================
|
|
-- Migration 003 — la facette « devant le Conseil constitutionnel »
|
|
--
|
|
-- Trois situations désignent un texte suspendu au Conseil constitutionnel, et
|
|
-- le corpus les documente inégalement :
|
|
--
|
|
-- 1. le statut vaut littéralement `saisie_cc` ;
|
|
-- 2. une affaire est enregistrée avec le résultat `en_instance` (« 2026-915
|
|
-- DC ») — c'est le résultat qui fait foi, et non l'absence de date de
|
|
-- décision : le corpus cite plusieurs décisions rendues sans les dater
|
|
-- (« Mixte ; 25 articles censurés (déc. 2026-903 DC) »), or celles-là ne
|
|
-- sont plus en instance ;
|
|
-- 3. la source signale la saisine sans donner de numéro d'affaire — cas de la
|
|
-- loi actualisant la programmation militaire, « Conseil constitutionnel
|
|
-- saisi le 6 juill. » (`sec10.md`, tableau B). Aucune ligne `decisions_cc`
|
|
-- ne peut être créée faute de numéro : c'est l'événement `saisine_cc`,
|
|
-- non suivi d'un `decision_cc`, qui fait foi.
|
|
--
|
|
-- Sans le troisième cas, la facette remonte 6 textes là où le §8.7 du cahier
|
|
-- des charges en attend au moins 7.
|
|
-- ============================================================================
|
|
|
|
DROP VIEW v_textes;
|
|
|
|
CREATE VIEW v_textes AS
|
|
SELECT
|
|
t.*,
|
|
(SELECT COUNT(*) FROM sources s WHERE s.texte_id = t.id) AS nb_sources,
|
|
(SELECT COUNT(*) FROM evenements e WHERE e.texte_id = t.id) AS nb_evenements,
|
|
CASE
|
|
WHEN t.statut = 'saisie_cc' THEN 1
|
|
WHEN EXISTS (SELECT 1 FROM decisions_cc d
|
|
WHERE d.texte_id = t.id
|
|
AND d.date_decision IS NULL
|
|
AND COALESCE(d.resultat, 'en_instance') = 'en_instance') THEN 1
|
|
WHEN EXISTS (SELECT 1 FROM evenements e
|
|
WHERE e.texte_id = t.id AND e.type_etape = 'saisine_cc')
|
|
AND NOT EXISTS (SELECT 1 FROM evenements e
|
|
WHERE e.texte_id = t.id AND e.type_etape = 'decision_cc')
|
|
AND t.statut <> 'promulguee' THEN 1
|
|
ELSE 0
|
|
END AS devant_cc
|
|
FROM textes t;
|