feat: Add Amazon France search page with Crawl4AI anti-detection

- Created Amazon scraper service with advanced anti-bot techniques:
  * User-Agent rotation from realistic pool
  * Complete browser headers (Accept, Accept-Language, etc.)
  * Proxy rotation (10 residential proxies)
  * Random delays (1.5-4s) to mimic human behavior
  * Crawl4AI browser fingerprint randomization
  * NetworkIdle waiting for complete page load
  * Cookie acceptance automation

- Added Amazon search API endpoint with SSE streaming
  * Real-time progress updates
  * Proper error handling
  * Health check endpoint

- Created dedicated Amazon France frontend page:
  * Modern UI with product cards
  * Rating display (stars + review count)
  * Price formatting with discount badges
  * Prime badge support
  * Stock status indicators
  * Sponsored product labels
  * Direct Amazon links

- Removed store list (ENSEIGNES_DATA cleared)
  * Migration from discount stores to Amazon France
  * Catalog system kept for future use

- Updated navigation:
  * Added "Amazon France" menu item with ShoppingBag icon
  * Positioned between Search and Compare
  * Available on desktop and mobile

Technical stack:
- Backend: Crawl4AI + BeautifulSoup for scraping
- Frontend: React + Shadcn UI components
- API: FastAPI with SSE streaming
This commit is contained in:
Claude committed 2025-11-30 00:36:39 +00:00
1 parent 18171366db
commit 684535ee85
7 files changed
+887 -77

No files matched your search

+3 -75
View File
@@ -9,81 +9,9 @@ from app.models import Enseigne
logger = logging.getLogger(__name__)
# Data for the 9 enseignes
ENSEIGNES_DATA = [
{
"nom": "Gifi",
"slug_bonial": "Gifi",
"couleur": "#E30613",
"site_url": "https://www.gifi.fr",
"description": "Décoration, maison, bazar",
"ordre_affichage": 1,
},
{
"nom": "Action",
"slug_bonial": "Action",
"couleur": "#0066B3",
"site_url": "https://www.action.com/fr-fr/",
"description": "Discount non-alimentaire",
"ordre_affichage": 2,
},
{
"nom": "Centrakor",
"slug_bonial": "Centrakor",
"couleur": "#E94E1B",
"site_url": "https://www.centrakor.com",
"description": "Décoration, maison",
"ordre_affichage": 3,
},
{
"nom": "La Foir'Fouille",
"slug_bonial": "La-Foir-Fouille",
"couleur": "#009639",
"site_url": "https://www.lafoirfouille.fr",
"description": "Bazar, décoration",
"ordre_affichage": 4,
},
{
"nom": "Stokomani",
"slug_bonial": "Stokomani",
"couleur": "#FF6600",
"site_url": "https://www.stokomani.fr",
"description": "Déstockage textile et maison",
"ordre_affichage": 5,
},
{
"nom": "B&M",
"slug_bonial": "BM",
"couleur": "#D4145A",
"site_url": "https://bmstores.fr",
"description": "Discount britannique",
"ordre_affichage": 6,
},
{
"nom": "L'Incroyable",
"slug_bonial": "L-incroyable",
"couleur": "#8B0000",
"site_url": "https://www.lincroyable.fr",
"description": "Décoration et mobilier discount (Groupe Althys, siège à Denain)",
"ordre_affichage": 7,
},
{
"nom": "Bazarland",
"slug_bonial": "Bazarland",
"couleur": "#FFCC00",
"site_url": None,
"description": "Bazar discount",
"ordre_affichage": 8,
},
{
"nom": "Noz",
"slug_bonial": "Noz",
"couleur": "#003366",
"site_url": "https://www.noz.fr",
"description": "Déstockage généraliste",
"ordre_affichage": 9,
},
]
# Liste des enseignes vidée - migration vers Amazon France uniquement
# Les magasins discount ne sont plus gérés via le système de catalogues
ENSEIGNES_DATA = []
def seed_enseignes(db: Session) -> int: