Files

95 lines
3.4 KiB
Markdown
Raw Permalink Normal View History

# 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.