# Administration de Vèy Lalwa ## Où sont les choses | Quoi | Où | |---|---| | Code et application construite | `__INSTALL_DIR__` | | Base de veille, cache, export JSON | `__DATA_DIR__` | | Configuration (identifiants compris) | `__INSTALL_DIR__/.env`, mode 600 | | Journal de l'application web | `/var/log/__APP__/__APP__.log` | | Journal des passages de collecte | `/var/log/__APP__/pipeline.log` | Tout ce qui compte vit dans `__DATA_DIR__` : le répertoire d'installation est **intégralement remplacé** à chaque mise à jour. ## Le pipeline Deux passages par jour, à 6 h et 18 h, plus un le dimanche à 9 h pour rattraper le Journal officiel de fin de semaine. Une dispersion de quinze minutes évite de frapper Légifrance en même temps que tout le monde. ```bash # Déclencher un passage tout de suite systemctl start __APP__-pipeline.service # Suivre ce qu'il fait journalctl -u __APP__-pipeline -f # Voir la prochaine échéance systemctl list-timers __APP__-pipeline.timer ``` ### Voir ce que le pipeline changerait, sans rien écrire ```bash cd __INSTALL_DIR__ sudo -u __APP__ bash -c 'set -a; . ./.env; set +a; \ ./venv/bin/python -m pipeline.update --dry-run' ``` (`set -a` exporte automatiquement ce que le fichier définit ; `xargs` échouerait sur les valeurs contenant des espaces.) Le rapport liste chaque écart avec son ancienne et sa nouvelle valeur. **Commencez toujours par là** avant de soupçonner un problème. ## Identifiants Légifrance L'application fonctionne sans. Le rapport de passage indique alors : ``` legifrance ignoré — LEGIFRANCE_CLIENT_ID absent de .env — repli sur l'Assemblée nationale, le Sénat et le Conseil constitutionnel ``` Pour les ajouter, éditez `__INSTALL_DIR__/.env`, puis `systemctl start __APP__-pipeline.service`. **Le piège** : une application PISTE affiche deux couples de valeurs. | Ce que PISTE affiche | À utiliser | |---|---| | **Client ID** / **Client secret** | ✅ oui | | API key / API key secret | ❌ non — `invalid_client` | Second piège : les identifiants de production ne fonctionnent pas en bac à sable, qui exige une application distincte. ## Sauvegarde La sauvegarde YunoHost couvre la base et la configuration. À la main : ```bash sqlite3 __DATA_DIR__/veille.db ".backup /sauvegardes/veille-$(date +%F).db" ``` N'utilisez jamais `cp` pendant un passage : le mode WAL laisse des fichiers annexes que `.backup` gère correctement. ## Diagnostic | Symptôme | Piste | |---|---| | Page blanche, 502 | `systemctl status __APP__` puis `tail /var/log/__APP__/__APP__.log` | | « Base introuvable » | La base a disparu de `__DATA_DIR__`. Rejouez le remplissage (voir plus bas). | | Formulaire de recherche refusé | `ORIGIN` dans `.env` ne correspond plus au domaine servi | | Aucun texte nouveau depuis des semaines | Normal hors session parlementaire. Vérifiez avec `--dry-run`. | | `invalid_client` dans le journal | Clé d'API utilisée au lieu du couple OAuth, ou application non abonnée à l'API Légifrance | ### Reconstruire la base depuis le corpus Le corpus de recherche est embarqué dans l'archive : la base peut toujours être reconstruite, sans réseau. ```bash cd __INSTALL_DIR__ sudo -u __APP__ bash -c 'set -a; . ./.env; set +a; \ ./venv/bin/python -m pipeline.seed_from_research --repartir-de-zero' systemctl restart __APP__ ``` Vous perdrez l'historique des passages, pas les 52 textes du corpus.