-- ============================================================================ -- Migration 004 — échéances du calendrier -- -- La page « calendrier » agrège trois natures d'échéance : -- -- * celles qui appartiennent à un texte (décision attendue du Conseil -- constitutionnel, entrée en vigueur, prochaine étape) — dérivées de -- `textes`, `evenements` et `decisions_cc` ; -- * celles qui n'appartiennent à aucun texte mais structurent la fenêtre de -- veille : sénatoriales du 27 septembre, présentation du projet de loi de -- finances 2027, rentrée parlementaire ordinaire du 1ᵉʳ octobre. -- -- Cette table porte les secondes. Le champ `concerne_guadeloupe` est explicite -- et non déductible : le scrutin sénatorial du 27 septembre 2026 ne concerne -- PAS la Guadeloupe (série 1, renouvelée en 2023), ce que le §7 du cahier des -- charges impose de ne pas se tromper. -- ============================================================================ CREATE TABLE echeances ( id INTEGER PRIMARY KEY AUTOINCREMENT, code TEXT NOT NULL UNIQUE, -- « senatoriales-2026 » date_echeance TEXT NOT NULL, libelle TEXT NOT NULL, description TEXT, -- `nationale` : elle vaut pour l'ensemble du territoire ; -- `texte` : elle découle d'un texte suivi (FK renseignée). portee TEXT NOT NULL DEFAULT 'nationale' CHECK (portee IN ('nationale', 'texte')), texte_id TEXT REFERENCES textes (id) ON DELETE CASCADE, -- 1 = concerne la Guadeloupe, 0 = ne la concerne pas, NULL = non tranché. concerne_guadeloupe INTEGER CHECK (concerne_guadeloupe IN (0, 1)), note_guadeloupe TEXT, -- Vrai tant que l'échéance est prévisionnelle (postérieure à la date -- d'arrêté du corpus et non confirmée par un collecteur). previsionnel INTEGER NOT NULL DEFAULT 1 CHECK (previsionnel IN (0, 1)), source_url TEXT, source_extrait TEXT, cree_le TEXT NOT NULL DEFAULT (datetime('now')) ); CREATE INDEX idx_echeances_date ON echeances (date_echeance); CREATE INDEX idx_echeances_texte ON echeances (texte_id);