"""Échéances nationales de la fenêtre de veille.

Le calendrier de l'application mêle des échéances propres à chaque texte —
déduites de la base — et un petit nombre d'échéances nationales qui structurent
la période et n'appartiennent à aucun texte : décisions attendues du Conseil
constitutionnel, bascules du 1ᵉʳ septembre, sénatoriales du 27 septembre,
projet de loi de finances pour 2027, rentrée parlementaire.

Ces échéances sont **transcrites** du corpus, pas déduites : chacune porte le
fichier et l'extrait dont elle provient. Deux d'entre elles font l'objet d'une
vigilance particulière.

- Les sénatoriales du 27 septembre 2026 **ne concernent pas la Guadeloupe**.
  Le décret n° 2026-301 du 21 avril 2026 convoque la série 2 plus la Guyane, la
  Polynésie, Saint-Barthélemy, Saint-Martin et Wallis-et-Futuna ; la Guadeloupe
  relève de la série 1, renouvelée le 24 septembre 2023. Le §7 du cahier des
  charges en fait un critère d'acceptation.
- L'interdiction des réseaux sociaux aux moins de 15 ans au 1ᵉʳ septembre est
  **conditionnelle** : elle dépend de la décision n° 2026-911 DC attendue fin
  août. Elle est marquée prévisionnelle.
"""

from __future__ import annotations

from dataclasses import dataclass
from datetime import date


@dataclass(slots=True)
class Echeance:
    """Une échéance nationale de la fenêtre de veille."""

    code: str
    date_echeance: date
    libelle: str
    description: str
    concerne_guadeloupe: bool | None = None
    note_guadeloupe: str | None = None
    previsionnel: bool = True
    source_url: str | None = None
    source_extrait: str | None = None


# Transcription du corpus. Chaque entrée cite le fichier dont elle provient.
ECHEANCES_NATIONALES: tuple[Echeance, ...] = (
    # ── research/lois-2026_dim11.md §5 — entrées en vigueur au 1ᵉʳ septembre ──
    Echeance(
        code="facturation-electronique-reception",
        date_echeance=date(2026, 9, 1),
        libelle="Réception obligatoire des factures électroniques",
        description=(
            "Toute entreprise et toute association assujettie à la TVA, franchise en "
            "base comprise, doit être en capacité de recevoir des factures "
            "électroniques. Les grandes entreprises et les entreprises de taille "
            "intermédiaire doivent en outre en émettre ; les PME, TPE et "
            "micro-entreprises au 1ᵉʳ septembre 2027."
        ),
        concerne_guadeloupe=True,
        note_guadeloupe=(
            "Applicable de plein droit en Guadeloupe, en Martinique et à La Réunion, "
            "aux taux de TVA locaux. Hors champ en Guyane et à Mayotte, où la TVA "
            "n'est provisoirement pas applicable. La préparation locale documentée se "
            "limite à une réunion de la direction régionale des finances publiques "
            "début juin 2026."
        ),
        previsionnel=False,
        source_url="https://www.economie.gouv.fr/facturation-electronique-entreprises",
        source_extrait=(
            "À partir du 1er septembre 2026, toutes les entreprises devront être en "
            "capacité de recevoir des factures électroniques."
        ),
    ),
    Echeance(
        code="assurance-chomage-rupture-conventionnelle",
        date_echeance=date(2026, 9, 1),
        libelle="Réduction des durées d'indemnisation après rupture conventionnelle",
        description=(
            "La durée maximale d'indemnisation après rupture conventionnelle passe à "
            "15 mois avant 55 ans et 20,5 mois à partir de 55 ans (loi n° 2026-470 du "
            "11 juin 2026). Des textes d'application restaient attendus au 25 juillet."
        ),
        concerne_guadeloupe=True,
        note_guadeloupe=(
            "Le régime dérogatoire des départements d'outre-mer est préservé : 20 et "
            "30 mois. La Guadeloupe compte 15,2 % de chômage et 53 780 demandeurs "
            "d'emploi, dont 56 % de longue durée."
        ),
        previsionnel=False,
        source_url="https://www.service-public.fr/particuliers/actualites/A17812",
        source_extrait=(
            "La loi portant transposition de l'avenant n° 3 du 25 février 2026 modifie "
            "la durée maximale de versement des allocations chômage aux salariés en cas "
            "de rupture conventionnelle."
        ),
    ),
    Echeance(
        code="malus-textile-mode-ultra-express",
        date_echeance=date(2026, 9, 1),
        libelle="Malus « mode ultra-express » sur les produits textiles",
        description=(
            "Pénalité de 0,25 € à 12 € par produit en 2026, portée à 2–20 € en 2030 et "
            "plafonnée à 50 % du prix hors taxes (loi n° 2026-602 du 8 juillet 2026, "
            "art. 5). L'arrêté d'application était en consultation publique depuis le "
            "8 juillet."
        ),
        concerne_guadeloupe=True,
        note_guadeloupe="Applicable dans les départements d'outre-mer.",
        previsionnel=False,
        source_url="https://www.vie-publique.fr/loi/295986-loi-fast-fashion-mode-ephemere",
        source_extrait=(
            "Ce texte a pour objet de permettre l'entrée en vigueur, le 1er septembre "
            "2026, d'un dispositif de pénalités financières applicables aux produits de "
            "la mode ultra express."
        ),
    ),
    Echeance(
        code="seuils-concentration-releves",
        date_echeance=date(2026, 9, 1),
        libelle="Relèvement des seuils de contrôle des concentrations",
        description=(
            "Nouveaux seuils de notification à l'Autorité de la concurrence : 250 M€ de "
            "chiffre d'affaires mondial et 80 M€ en France, contre 150 et 50 ; commerce "
            "de détail 100 M€ et 20 M€, contre 75 et 15 (loi n° 2026-403, art. 24)."
        ),
        concerne_guadeloupe=None,
        previsionnel=False,
        source_url="https://www.autoritedelaconcurrence.fr/fr/controle-des-concentrations",
        source_extrait=(
            "Ces nouveaux seuils s'appliqueront aux opérations qui seront réalisées à "
            "compter du 1er septembre 2026."
        ),
    ),
    Echeance(
        code="reseaux-sociaux-moins-de-15-ans",
        date_echeance=date(2026, 9, 1),
        libelle="Interdiction des réseaux sociaux aux moins de 15 ans (sous condition)",
        description=(
            "Entrée en vigueur prévue pour les nouveaux comptes, mais suspendue à la "
            "décision n° 2026-911 DC attendue fin août 2026, et à l'articulation avec "
            "le règlement européen sur les services numériques — la Commission "
            "européenne a rendu un avis partiellement défavorable le 6 juillet 2026."
        ),
        concerne_guadeloupe=True,
        note_guadeloupe="Applicable de plein droit.",
        previsionnel=True,
        source_url="https://www.conseil-constitutionnel.fr/decisions/affaires-en-instances",
        source_extrait=None,
    ),
    # ── research/lois-2026_phase5_validation.md, point 4 ─────────────────────
    Echeance(
        code="senatoriales-2026",
        date_echeance=date(2026, 9, 27),
        libelle="Élections sénatoriales (série 2)",
        description=(
            "Le décret n° 2026-301 du 21 avril 2026 convoque les collèges électoraux "
            "des départements de la série 2, ainsi que la Guyane, la Polynésie "
            "française, Saint-Barthélemy, Saint-Martin et Wallis-et-Futuna, plus six "
            "des douze sièges des Français établis hors de France."
        ),
        concerne_guadeloupe=False,
        note_guadeloupe=(
            "La Guadeloupe n'est PAS concernée : elle relève de la série 1, renouvelée "
            "le 24 septembre 2023. Prochain renouvellement en 2029."
        ),
        previsionnel=True,
        source_url=(
            "https://www.haute-corse.gouv.fr/Actions-de-l-Etat/Vie-democratique/"
            "Elections/Mairies-Decret-de-convocation-election-senatoriale-2026"
        ),
        source_extrait=(
            "Le décret n° 2026-301 du 21 avril 2026 portant convocation des collèges "
            "électoraux fixe au dimanche 27 septembre 2026 la date des élections "
            "sénatoriales pour les départements de la série 2 figurant au tableau n° 5 "
            "annexé au code électoral, ainsi qu'en Guyane, en Polynésie française, à "
            "Saint-Barthélemy, à Saint-Martin et à Wallis-et-Futuna."
        ),
    ),
    # ── research/lois-2026_dim11.md §2 et §3 ─────────────────────────────────
    Echeance(
        code="rentree-parlementaire-ordinaire",
        date_echeance=date(2026, 10, 1),
        libelle="Ouverture de la session ordinaire 2026-2027",
        description=(
            "Aucune session extraordinaire de septembre n'était annoncée au "
            "25 juillet 2026. Les navettes renvoyées à l'automne — pacte migration, "
            "protection des enfants, cohésion républicaine, logement, entrisme, "
            "adaptation du droit des outre-mer — reprennent à cette date."
        ),
        concerne_guadeloupe=None,
        previsionnel=True,
        source_url="https://www.assemblee-nationale.fr/dyn/agenda",
        source_extrait=None,
    ),
    Echeance(
        code="plf-2027",
        date_echeance=date(2026, 10, 1),
        libelle="Présentation du projet de loi de finances pour 2027",
        description=(
            "Présentation en conseil des ministres fin septembre ou début octobre 2026, "
            "avec 3 milliards d'euros d'économies supplémentaires annoncés. L'élection "
            "présidentielle du printemps 2027 comprime le calendrier d'examen."
        ),
        concerne_guadeloupe=None,
        previsionnel=True,
        source_url="https://www.vie-publique.fr/loi-finances",
        source_extrait=None,
    ),
    # ── lois-france-2026-guadeloupe_sec10.md, conclusion ─────────────────────
    Echeance(
        code="prochaine-date-arrete",
        date_echeance=date(2026, 8, 24),
        libelle="Fin du délai d'examen des saisines du 24 juillet",
        description=(
            "Terme du délai constitutionnel d'un mois pour les saisines enregistrées le "
            "24 juillet 2026 — loi « Riposte » (2026-915 DC), urgence agricole "
            "(2026-914 DC), patrimoine immobilier (2026-913 DC), réseaux sociaux "
            "(2026-911 DC). C'est la prochaine date d'arrêté utile de la veille."
        ),
        concerne_guadeloupe=True,
        note_guadeloupe=(
            "Trois textes à enjeu maximal pour les libertés y sont suspendus, dont la "
            "loi « Riposte » et ses fouilles sans réquisition jusqu'à 40 km du "
            "littoral — soit la quasi-totalité de la Guadeloupe."
        ),
        previsionnel=True,
        source_url="https://www.conseil-constitutionnel.fr/decisions/affaires-en-instances",
        source_extrait=None,
    ),
)


def echeances_nationales() -> tuple[Echeance, ...]:
    return ECHEANCES_NATIONALES
