- 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>
113 lines
3.5 KiB
Markdown
113 lines
3.5 KiB
Markdown
# 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 l’environnement `.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 l’audit :
|
||
- `.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 |