docs: décrire les services et la porte de qualité
Le README était réduit à « test 4 ». Il documente désormais les sept services, le fait que crawler et flaresolverr ne tournent qu'en dev, et surtout l'installation du hook pre-push — seul filet entre `git push` et la mise en ligne, le déploiement partant sur webhook. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
96ee3b831d
commit
22b7b8762f
1 changed files with 52 additions and 1 deletions
53
README.md
53
README.md
|
|
@ -1,2 +1,53 @@
|
||||||
# Stack metalfrom.eu
|
# Stack metalfrom.eu
|
||||||
test 4
|
|
||||||
|
Carte des groupes de metal européens, données issues de Metal Archives
|
||||||
|
(avec accord du propriétaire du site source).
|
||||||
|
|
||||||
|
## Services
|
||||||
|
|
||||||
|
| Service | Rôle |
|
||||||
|
|--------------------|-----------------------------------------------------------------|
|
||||||
|
| `web` | Site public (carte Leaflet) |
|
||||||
|
| `admin` | Back-office (nginx + reverse-proxy vers l'API) |
|
||||||
|
| `api` | API Fastify (public + routes admin), migrations DB |
|
||||||
|
| `crawler` | Scraping incrémental/complet de Metal Archives via FlareSolverr |
|
||||||
|
| `flaresolverr` | Contournement Cloudflare (Chrome headless) pour le crawler |
|
||||||
|
| `geocoder-enqueue` | Peuple `band_locations` depuis `bands.location_text` |
|
||||||
|
| `geocoder-worker` | Géocodage Geoapify |
|
||||||
|
| `groq-worker` | Désambiguïsation LLM (Groq) des lieux non géocodés |
|
||||||
|
|
||||||
|
`crawler` et `flaresolverr` ne tournent **qu'en dev** pour l'instant : ils sont
|
||||||
|
absents de `docker-compose.yml`. La prod partage la même base, alimentée depuis
|
||||||
|
l'environnement de dev.
|
||||||
|
|
||||||
|
## Déploiement
|
||||||
|
|
||||||
|
- `docker-compose.yml` : production
|
||||||
|
- `docker-compose.dev.yml` : environnement de dev (branche `dev`, auto-déployé
|
||||||
|
via webhook Forgejo → Coolify)
|
||||||
|
|
||||||
|
Base PostgreSQL + PostGIS gérée séparément par Coolify. Variables d'env : voir
|
||||||
|
`infra/.env.example`.
|
||||||
|
|
||||||
|
## Qualité
|
||||||
|
|
||||||
|
Le déploiement se déclenche sur webhook à chaque push : rien ne s'interpose
|
||||||
|
entre `git push` et la mise en ligne. La porte de qualité est donc **locale**,
|
||||||
|
et doit être installée une fois par clone :
|
||||||
|
|
||||||
|
```
|
||||||
|
npm install
|
||||||
|
npm run hooks:install
|
||||||
|
```
|
||||||
|
|
||||||
|
| Commande | Portée |
|
||||||
|
|--------------------------------|------------------------------------------------------------|
|
||||||
|
| `npm run check` | lint + types + tests JS + ruff + pytest (~6 s) |
|
||||||
|
| `npm run test:e2e` | parcours Playwright du dashboard admin (~22 s) |
|
||||||
|
| `npm run test:integration:full`| SQL validé contre un vrai PostgreSQL+PostGIS (exige Docker)|
|
||||||
|
| `npm run check:full` | tout ci-dessus + mutation + audits de dépendances |
|
||||||
|
|
||||||
|
Le hook `pre-push` lance `check` puis `test:e2e`. `.forgejo/workflows/ci.yml`
|
||||||
|
existe mais reste inerte tant qu'aucun runner Forgejo n'est enregistré.
|
||||||
|
|
||||||
|
Outillage Python de test : `pip install -r requirements-dev.txt`.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue