Veille tarifaire sur des composants PC. Chaque matin, un batch Java relève le prix d'une quinzaine de produits chez six enseignes françaises et européennes, écarte les relevés douteux, puis un moteur de stratégies propose un prix et l'explique règle par règle. Cette page lit la base du projet en direct.
Projet personnel à but pédagogique : « notre prix » et le prix d'achat sont des valeurs fictives, mises à jour chaque jour par le moteur lui-même, et les stratégies sont celles des manuels de pricing. Les prix affichés sont ceux relevés publiquement sur les sites des enseignes, à la date indiquée.
Chargement des données…
Un catalogue explicite. Chaque produit suivi est décrit par sa famille et ses caractéristiques, avec ses identifiants (GTIN, référence fabricant) et l'annonce qui lui correspond chez chaque enseigne. Les produits d'un même segment, par exemple les RTX 5070 12 Go, sont déclarés équivalents.
Une collecte polie et robuste. Un batch Java tourne chaque matin sur GitHub Actions. Il respecte robots.txt, espace ses requêtes et s'annonce avec un User-Agent identifiable. Le prix est lu d'abord dans les données structurées de la page (JSON-LD), puis dans le JSON embarqué, puis dans le HTML : trois extracteurs en cascade, pour résister aux refontes de sites.
Des données qu'on peut croire. Un relevé par annonce et par jour, les échecs de collecte stockés, et un prix qui bouge brutalement est mis en quarantaine jusqu'à confirmation le lendemain. Un jour sans relevé reste un trou visible, jamais comblé.
Un prix conseillé qui s'explique. Le moteur n'a pas de serveur à lui : c'est un module du même batch, lancé juste après la collecte, sur le marché du jour. Il construit d'abord ce marché : offres fraîches, en stock, neuves, hors quarantaine. Une stratégie propose un prix (index sur la médiane, alignement, undercut, marge cible), puis des garde-fous le corrigent : marge plancher, plafond, variation maximale par jour, arrondi. Chaque étape est conservée en base et lisible dans la synthèse. Sept profils de règles sont calculés à chaque passage, c'est parmi eux que choisit le sélecteur de la synthèse. L'index qui accompagne les prix rapporte un prix à la médiane du marché : 100, c'est la médiane ; 95, c'est 5 % en dessous. Et chaque matin, une règle tirée au sort parmi les sept devient « notre prix » du jour, pour que la démo vive et que notre prix ait une histoire face au marché.
Aucun serveur à maintenir. Le batch tourne sur GitHub Actions, la base et son API REST sont hébergées par Supabase dans la région de Paris, ce site est servi par GitHub Pages. Les résultats sont précalculés et exposés en lecture seule sur un schéma de vues dédié, avec une clé publique : cette page les lit directement dans le navigateur. Rien n'est hébergé à la main, et l'ensemble tient dans les offres gratuites. Le même code, empaqueté avec Spring, peut être déployé comme service permanent le jour où un usage professionnel le demande.
Le code est un monolithe modulaire en architecture hexagonale : domaine pur, ports, adaptateurs interchangeables (HTTP, scraping, fichiers, PostgreSQL), et chaque décision structurante consignée dans un ADR. Les choix, les renoncements et les erreurs y sont écrits au moment où ils sont pris.