2026-02-07 14:35:26 +01:00
2026-02-07 14:35:26 +01:00
2026-01-25 14:48:26 +01:00
2026-01-25 14:48:26 +01:00
2026-01-25 14:48:26 +01:00
1
2026-01-18 19:21:51 +01:00
2026-02-07 14:35:26 +01:00
1er
2026-01-18 12:23:01 +01:00
2026-01-25 14:48:26 +01:00
1er
2026-01-18 12:23:01 +01:00
1er
2026-01-18 12:23:01 +01:00
1er
2026-01-18 12:23:01 +01:00
2026-01-25 14:48:26 +01:00
2026-01-25 14:48:26 +01:00

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

# 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

# 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

Description
No description provided
Readme 478 MiB
Languages
JavaScript 43.3%
Python 39.7%
SCSS 14.9%
Dockerfile 1.2%
HTML 0.7%
Other 0.2%