Files
suivi_produit/README.md
gilles 5c3e6b84a4 feat: ajout Docker Compose et documentation outils
- Dockerfile backend (Python 3.11 + Poetry + Playwright/Chromium)
- Dockerfile frontend (Node 20 + Vite build + Nginx)
- docker-compose.yml avec services et volumes persistants
- Proxy Nginx pour API (/api -> backend:8008)
- Healthchecks sur les deux services
- Configuration Docker (.env.docker, .dockerignore)
- Documentation déploiement Docker dans README
- Fichier docs/tools_used.md avec liste des technologies

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 08:01:55 +01:00

113 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# suivi_produit
Suite self-hosted pour suivre les prix et l'état des produits Amazon.fr (et autres stores à venir).
## Structure
- `backend/` : API FastAPI + scraper Playwright + persistance SQLite
- `frontend/` : SPA Gruvbox dark pour afficher les vignettes, graphiques et logs
- `docker/` : fichiers nécessaires pour docker-compose + builds
- `docs/`, `TODO.md`, `CHANGELOG.md`, `kanban.md` : documentation et suivi
## Objectif MVP
1. CRUD produits + historique des snapshots
2. Scraper Amazon via Playwright avec logs et artifacts
3. Interface responsive avec vignettes & graphique 30j
4. Configuration JSON frontend/backend rangée dans le repo
5. Docker Compose + scheduler interne pour lancer les scrapes
## Environnement
1. Copier `cp .env.example .env` avant tout lancement backend/tests.
2. Activer le venv :
- `source .venv/bin/activate`
- ou `poetry shell`
3. `poetry install` (backend)
4. `npm install` (frontend, à compléter)
## Tests
- Toujours exécuter `poetry run pytest` dans lenvironnement `.env` avant un `docker compose up`.
- Test scraper en CLI (Playwright) :
- `SCRAPE_TEST_MAX=0 .venv/bin/poetry run python backend/app/scraper/run_scrape_tests.py`
- Optionnel (ouvrir le navigateur si blocage) :
- `SCRAPE_TEST_HEADFUL_ON_BLOCK=1 SCRAPE_TEST_MAX=0 .venv/bin/poetry run python backend/app/scraper/run_scrape_tests.py`
## Audit code (imports / code mort)
- Installer les outils (dans le venv) :
- `.venv/bin/pip install ruff vulture coverage pip-check-reqs pyright`
- Lancer laudit :
- `.venv/bin/ruff check backend/`
- `.venv/bin/vulture backend/`
- `.venv/bin/pip-check-reqs backend/`
- `.venv/bin/coverage run -m pytest`
- `.venv/bin/coverage report -m`
## Déploiement Docker
### Lancement rapide
```bash
# Copier la configuration Docker
cp .env.docker .env
# Build et lancement
docker compose up --build -d
# Voir les logs
docker compose logs -f
```
### Services
| Service | Port | Description |
|---------|------|-------------|
| frontend | 8080 | Interface web (Nginx) |
| backend | 8008 | API FastAPI + Scheduler |
### Volumes persistants
- `suivi_produit_data` : base SQLite + raw JSON (`backend/data/`)
- `suivi_produit_logs` : fichiers de log (`backend/logs/`)
### Commandes utiles
```bash
# Arrêter les services
docker compose down
# Reconstruire après modification
docker compose up --build -d
# Voir l'état des services
docker compose ps
# Accéder aux logs d'un service
docker compose logs backend -f
docker compose logs frontend -f
# Backup de la base (volume Docker)
docker run --rm -v suivi_produit_data:/data -v $(pwd):/backup alpine tar cvf /backup/data_backup.tar /data
```
### Configuration
Variables d'environnement (`.env`) :
- `API_PORT` : port du backend (défaut: 8008)
- `FRONTEND_PORT` : port du frontend (défaut: 8080)
- `APP_ENV` : environnement (development/production)
- `LOG_LEVEL` : niveau de log (DEBUG/INFO/WARNING/ERROR)
## Notes
- Le scraping est volontairement lent (15-20 produits/jour) pour éviter le blocage.
- Le raw JSON est conservé pendant 30 jours dans `backend/data/raw`.
Voici les commandes pour lancer les services :
Backend (port 8008) :
cd /home/gilles/Documents/vscode/suivi_produit
.venv/bin/python -m uvicorn backend.app.main:app --host 0.0.0.0 --port 8008 --reload
Frontend (port 5173) :
cd /home/gilles/Documents/vscode/suivi_produit/frontend
npm run dev
Ou en une seule commande avec Poetry pour le backend :
poetry run uvicorn backend.app.main:app --host 0.0.0.0 --port 8008 --reload