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>
33 lines
1.5 KiB
SQL
33 lines
1.5 KiB
SQL
-- ============================================================================
|
|
-- Migration 002 — régime de libertés
|
|
--
|
|
-- L'annexe du rapport (`sec10.md`, note méthodologique) cote chaque texte selon
|
|
-- trois régimes : « droits+ » (création ou extension de droits), « contrôle+ »
|
|
-- (restriction, ou extension des pouvoirs de contrôle), « mixte » ou « neutre ».
|
|
--
|
|
-- Cette cotation porte sur le texte dans son ensemble : elle ne dit pas quel
|
|
-- public est touché. Elle est donc stockée à part, et non dépliée d'office dans
|
|
-- `impacts` — remplir les trois publics à partir d'une cotation globale
|
|
-- reviendrait à inventer une ventilation que la source ne donne pas.
|
|
-- ============================================================================
|
|
|
|
ALTER TABLE textes ADD COLUMN regime_libertes TEXT
|
|
CHECK (regime_libertes IN ('droits_plus', 'controle_plus', 'mixte', 'neutre'));
|
|
|
|
ALTER TABLE textes ADD COLUMN regime_libertes_note TEXT;
|
|
|
|
CREATE INDEX idx_textes_regime ON textes (regime_libertes);
|
|
|
|
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'
|
|
OR EXISTS (SELECT 1 FROM decisions_cc d
|
|
WHERE d.texte_id = t.id AND d.date_decision IS NULL)
|
|
THEN 1 ELSE 0 END AS devant_cc
|
|
FROM textes t;
|