-- ============================================================================ -- 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;