Collecteurs, chacun isolé et tolérant à l'échec : - legifrance : OAuth PISTE validé en production. Deux pièges vérifiés sur le compte réel — seul le couple « Client ID / Client secret » ouvre un jeton (la clé d'API donne invalid_client), et les identifiants de production ne passent pas en bac à sable. - senat : liste chronologique des lois promulguées. L'URL du §5.1 (senat.fr/lois/index.html) est morte ; l'équivalent fonctionnel est /dossiers-legislatifs/lois-promulguees.html — 31 lois 2026 relevées. - conseil_constitutionnel : sans le paramètre ?id=32246 la page des affaires en instance ne rend que des QPC et aucune affaire DC. Les colonnes DC et QPC diffèrent : lecture par en-tête, jamais par position. Rapprochement à trois issues — numéro officiel, similarité de titre, et une zone de signalement où le pipeline s'abstient plutôt que de fusionner. make update-dry contre les sources réelles : aucun faux positif sur les 52 textes du corpus, et trois apports que le rapport n'avait pas — le numéro d'affaire 2026-907 DC de la programmation militaire, la date de saisine du 16 juillet pour l'aide à mourir, les décisions du 23 juillet sur 908 et 909. Une asymétrie de sources est documentée par un test plutôt que corrigée en douce : le Sénat ne qualifie pas la loi 2026-650 d'organique, Légifrance si. Le collecteur rapporte ce que sa source dit ; le champ n'est pas comparé. Fixtures HTML figées : aucun test ne touche au réseau. 156 tests, 91 % de couverture (chaque module au-dessus du seuil de 70 %). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
61 lines
3.4 KiB
Bash
61 lines
3.4 KiB
Bash
# ─────────────────────────────────────────────────────────────────────────────
|
|
# Veille législative Guadeloupe — variables d'environnement
|
|
# Copier en `.env` et renseigner. Le fichier `.env` n'est JAMAIS versionné.
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
# ── API Légifrance (PISTE) ───────────────────────────────────────────────────
|
|
# Compte : https://piste.gouv.fr — application abonnée à l'API « Légifrance ».
|
|
#
|
|
# ATTENTION : une application PISTE expose DEUX couples de valeurs, et un seul
|
|
# fonctionne ici. Il faut le couple OAuth (« Client ID » / « Client secret »),
|
|
# pas la clé d'API (« API key » / « API key secret »), qui donne un
|
|
# `invalid_client` au moment d'obtenir le jeton.
|
|
#
|
|
# Sans ces deux valeurs le pipeline fonctionne en mode dégradé documenté
|
|
# (repli sur le scraping léger AN / Sénat / Conseil constitutionnel).
|
|
LEGIFRANCE_CLIENT_ID=
|
|
LEGIFRANCE_CLIENT_SECRET=
|
|
# `sandbox` pour l'environnement de test PISTE, `prod` pour la production.
|
|
# Vérifié le 25 juillet 2026 : les identifiants de production ne sont PAS
|
|
# acceptés par le bac à sable, qui exige une application distincte.
|
|
LEGIFRANCE_ENV=prod
|
|
# Clé d'API PISTE. Facultative : l'API Légifrance se contente du jeton OAuth.
|
|
LEGIFRANCE_API_KEY=
|
|
|
|
# ── Comportement du pipeline ─────────────────────────────────────────────────
|
|
# Chemin de la base SQLite (relatif à la racine du dépôt).
|
|
VEILLE_DB=data/veille.db
|
|
# Répertoire du cache HTTP des collecteurs.
|
|
VEILLE_CACHE=data/cache_http
|
|
# Durée de validité du cache HTTP, en heures.
|
|
VEILLE_CACHE_TTL_H=6
|
|
# User-agent honnête envoyé aux sources publiques (contact obligatoire).
|
|
VEILLE_USER_AGENT=veille-legislative-971/1.0 (+contact: cyber.mawonaj@gmail.com)
|
|
# Délai minimal entre deux requêtes vers un même hôte, en secondes.
|
|
VEILLE_DELAI_REQUETES=1.0
|
|
# Seuil de similarité de titre pour le rapprochement flou (0.0 → 1.0).
|
|
VEILLE_SEUIL_FUZZY=0.86
|
|
|
|
# ── Notifications de fin de run (désactivées par défaut) ─────────────────────
|
|
VEILLE_NOTIF_ACTIVE=false
|
|
# Webhook générique (POST JSON). Compatible Matrix via un pont, Mattermost, etc.
|
|
VEILLE_NOTIF_WEBHOOK=
|
|
# Envoi courriel : laisser vide pour désactiver.
|
|
VEILLE_NOTIF_SMTP_HOTE=
|
|
VEILLE_NOTIF_SMTP_PORT=587
|
|
VEILLE_NOTIF_SMTP_UTILISATEUR=
|
|
VEILLE_NOTIF_SMTP_MOTDEPASSE=
|
|
VEILLE_NOTIF_DESTINATAIRE=
|
|
|
|
# ── Application web (adapter-node, production) ───────────────────────────────
|
|
# Node ≥ 20.6 : lancer avec `node --env-file=.env build`
|
|
HOST=127.0.0.1
|
|
PORT=3971
|
|
# Obligatoire derrière un reverse proxy, sinon « Cross-site POST form
|
|
# submissions are forbidden ». Alternative : PROTOCOL_HEADER + HOST_HEADER.
|
|
ORIGIN=https://veille.example.org
|
|
# PROTOCOL_HEADER=x-forwarded-proto
|
|
# HOST_HEADER=x-forwarded-host
|
|
# Mise en sommeil de l'app sans trafic (activation par socket systemd).
|
|
IDLE_TIMEOUT=300
|