Commit Graph

  • ac05d2ac30 chore: add bulk compare-at-price update script + restore middleware auth main C_Ma_For 2026-06-26 14:38:34 +02:00
  • 60dc9cc0ec feat: map prix marché as compare_at_price (barré) on Shopify C_Ma_For 2026-06-26 14:19:37 +02:00
  • eb5f605175 feat: refactor mockup page with 3-step flow (product → image → template) C_Ma_For 2026-06-26 14:05:25 +02:00
  • ac58289bb7 feat: auto-fill mockup dimensions and family from Google Sheets C_Ma_For 2026-06-26 13:35:39 +02:00
  • 4f617b15b2 feat: add reverse stock sync (Shopify → Sheets) C_Ma_For 2026-06-26 12:20:59 +02:00
  • 401b43cc04 fix: add rate limiting with retry on 429 in sync-stock C_Ma_For 2026-06-26 11:59:37 +02:00
  • d276f6224c fix: log errors in writeShopifyIdToSheet and skip 404s in sync-stock C_Ma_For 2026-06-26 11:40:12 +02:00
  • a9850c8efd feat: add bulk stock sync from Sheets to Shopify C_Ma_For 2026-06-26 10:35:52 +02:00
  • 747f8a47b8 fix: handle 'Stock (pièce)' header variant in addition to 'Stock (en pièce)' C_Ma_For 2026-06-26 09:47:14 +02:00
  • a334987b7c fix: connect inventory item to location before setting stock on product creation C_Ma_For 2026-06-26 09:35:09 +02:00
  • 06587c1ccd fix: include Surface (m2) in specificFields for metafield resolution C_Ma_For 2026-06-26 09:27:46 +02:00
  • 99de0da823 feat: add multi-select upload and unified selection bar on images page C_Ma_For 2026-06-25 12:03:20 +02:00
  • 3ec0b9fa3c feat: add background image upload to banner builder C_Ma_For 2026-06-25 10:46:45 +02:00
  • 461667c506 fix: remove unused domain variable in BannerBuilder C_Ma_For 2026-06-25 10:38:52 +02:00
  • 34ec818ad3 feat: replace product search with searchable combobox in banner builder C_Ma_For 2026-06-25 10:35:27 +02:00
  • f650225c98 fix: remove unused graphqlUrl variable in product-banner-data route C_Ma_For 2026-06-25 10:02:36 +02:00
  • 7ebb7e899d fix: escape apostrophe in BannerBuilder JSX C_Ma_For 2026-06-25 09:57:39 +02:00
  • 4ce62c1473 feat: add banner builder with product search and canvas rendering C_Ma_For 2026-06-25 09:53:58 +02:00
  • fcadea6758 fix: remove unused import in bannieres page C_Ma_For 2026-06-25 09:27:50 +02:00
  • 0a3f5042fc feat: add bannières page to manage Shopify homepage slideshow C_Ma_For 2026-06-25 09:12:52 +02:00
  • d616f1d74c feat: add mockup creation from image cards on images page C_Ma_For 2026-06-25 08:30:45 +02:00
  • eec9bd5dce feat: make AI background removal optional with resize-only upload and batch detour selection C_Ma_For 2026-06-25 08:21:46 +02:00
  • c95093a81f feat: add reprocess button to re-run AI background removal on image cards C_Ma_For 2026-06-24 20:52:18 +02:00
  • 03770d1a76 fix: propagate Shopify 404 through upload route so client retry triggers correctly C_Ma_For 2026-06-24 20:40:50 +02:00
  • 5e1b864ce7 fix: retry upload with fresh Shopify ID on 404 (stale cached ID) C_Ma_For 2026-06-24 20:35:43 +02:00
  • cc0d57bf2b feat: remove clear Sheets IDs button from creation UI C_Ma_For 2026-06-24 20:03:42 +02:00
  • 6ca2509ca6 fix: use original filename for upload to allow multiple images per product C_Ma_For 2026-06-24 19:56:42 +02:00
  • 42989a5ef3 fix: extract ref from filename not folder name in ZIP uploads C_Ma_For 2026-06-24 18:23:43 +02:00
  • f56e52f801 feat: show original filename on image card C_Ma_For 2026-06-24 18:15:03 +02:00
  • 949d7c60b9 debug: log product search result to trace not_found issues C_Ma_For 2026-06-24 18:01:56 +02:00
  • 36447a5c8c fix: improve product search robustness C_Ma_For 2026-06-24 17:54:56 +02:00
  • 920ec50402 fix: extract UGS from filename with sequence numbers and trailing dashes C_Ma_For 2026-06-24 17:45:31 +02:00
  • 2f6eea1122 feat: stop button for product creation stream C_Ma_For 2026-06-24 17:34:34 +02:00
  • 42ef490196 fix: strip trailing dashes from filename ref (26774-.HEIC -> 26774) C_Ma_For 2026-06-24 17:24:44 +02:00
  • 31b764f458 fix: limit concurrent AI background removal to 2 to prevent browser crash C_Ma_For 2026-06-24 17:08:32 +02:00
  • 8c9bce7aa5 feat: collection picker in product creation flow C_Ma_For 2026-06-24 16:12:54 +02:00
  • 9e7423eee3 fix: pass tab filter to execute route so only selected family is created C_Ma_For 2026-06-24 15:51:47 +02:00
  • 6d8be0645d feat: use 'Stock conditionné' for Shopify stock on carrelage tabs C_Ma_For 2026-06-24 15:42:55 +02:00
  • 114e20c9fb feat: persist metafield resolutions across sessions C_Ma_For 2026-06-24 15:28:53 +02:00
  • caef95bd55 feat: set stock and weight on Shopify product creation C_Ma_For 2026-06-24 15:11:17 +02:00
  • 34ade6beb2 feat: clear Shopify IDs from Sheets to allow product recreation C_Ma_For 2026-06-24 15:05:43 +02:00
  • cdde567558 feat: placement mur/sol pour templates carrelage avec prompt adapté C_Ma_For 2026-06-24 14:52:57 +02:00
  • e85314eb77 feat: gestion templates mockup dans les paramètres avec familles depuis Sheets C_Ma_For 2026-06-24 14:42:44 +02:00
  • 5a10fd4221 feat: mockup modal avec sélection image existante, familles sheets et métachamps produit C_Ma_For 2026-06-24 14:33:19 +02:00
  • 93a616e997 feat: affichage images produit dans la liste avec thumbnail et compteur C_Ma_For 2026-06-24 14:27:35 +02:00
  • 41f5c245d4 feat: mockup modal accessible depuis la liste produits C_Ma_For 2026-06-24 14:20:42 +02:00
  • f6b0ba9685 feat: product picker with search in mockup page C_Ma_For 2026-06-22 14:42:58 +02:00
  • 4811b73c69 feat: mockup page with template library and generator UI C_Ma_For 2026-06-22 12:27:35 +02:00
  • 921d9d6a77 feat: MockupGenerator UI component with generate/regenerate/upload flow C_Ma_For 2026-06-22 12:24:22 +02:00
  • d138577a9d feat: mockup generation API route using gpt-image-1 C_Ma_For 2026-06-22 12:14:31 +02:00
  • 1ef69dc205 feat: mockup template CRUD API routes C_Ma_For 2026-06-22 12:10:26 +02:00
  • 01e2fcd5e5 feat: mockup types and template storage library C_Ma_For 2026-06-22 12:08:13 +02:00
  • 07432bbd95 fix: conserver le type du métachamp lors de l'association manuelle C_Ma_For 2026-06-19 13:05:31 +02:00
  • 731d0dbde6 feat: recherche textuelle dans la sélection de métachamp existant C_Ma_For 2026-06-19 12:58:48 +02:00
  • 42d0e2f855 feat: écriture de l'ID Shopify en col A du Sheets après création produit C_Ma_For 2026-06-19 12:42:17 +02:00
  • 15f647f58a fix: vérifier le SKU exact dans la réponse Shopify (l'API ignore le filtre sur les SKUs avec tirets) C_Ma_For 2026-06-19 12:01:02 +02:00
  • cb227943f3 fix: prioritiser SKU sans suffixe numérique pour éviter faux match (ex: 26618-D-1 → 26618-D) C_Ma_For 2026-06-19 11:43:12 +02:00
  • d45c9490c0 feat: curseur tolérance verre pour récupérer les zones semi-transparentes du détourage C_Ma_For 2026-06-19 11:28:42 +02:00
  • c1fad5d0ed fix: retourner l'UGS la plus spécifique lors de la recherche par nom de fichier C_Ma_For 2026-06-19 11:02:13 +02:00
  • d8a3f26d0b fix: vérifier l'existence Shopify avant création pour éviter les doublons C_Ma_For 2026-06-12 00:08:06 +02:00
  • 297d47bd19 feat: détection et suppression des doublons produits Shopify C_Ma_For 2026-06-11 23:57:53 +02:00
  • a2c0789625 fix: ignorer les désactivations lors d'un sync filtré par famille C_Ma_For 2026-06-11 23:37:29 +02:00
  • 23aa78d3da feat: sélecteur de famille (onglet Sheets) en sync et création C_Ma_For 2026-06-11 23:31:19 +02:00
  • 1b07359415 feat: détection drift Sheets sur le dashboard (approche A) C_Ma_For 2026-06-11 23:14:06 +02:00
  • 6f4affcd66 fix: DiffTable colonnes visibles + filtrage lignes parasites dans Sheets C_Ma_For 2026-06-11 23:09:08 +02:00
  • 211d8c5c01 fix: supprimer variables inutilisées bloquant le build ESLint C_Ma_For 2026-06-11 22:49:22 +02:00
  • d16cd1fbf5 feat: implémenter le dashboard avec KPIs, dernière sync et actions rapides C_Ma_For 2026-06-11 22:42:57 +02:00
  • fecf56ff09 fix: retry 429 avec backoff + sérialisation uploadAll + 409 traité comme skipped C_Ma_For 2026-06-11 14:37:12 +02:00
  • 85b0590d85 fix: split avant/après avec overflow-hidden et largeur dynamique C_Ma_For 2026-06-11 13:40:14 +02:00
  • 725a7508b0 feat: vérification image existante sur Shopify avant upload (statut 'Déjà sur Shopify') C_Ma_For 2026-06-11 13:35:47 +02:00
  • 4df074f02d fix: image sortie 1000x1000 centrée + affichage split avant/après corrigé C_Ma_For 2026-06-11 13:14:41 +02:00
  • 06cda68929 fix: match UGS comme mot entier n'importe où dans le nom de fichier C_Ma_For 2026-06-11 12:51:27 +02:00
  • c19510d413 fix: match UGS en début de nom de fichier exact (évite 30 de matcher 30827) C_Ma_For 2026-06-11 12:47:26 +02:00
  • 2de5c6670d fix: recherche produit par SKU Shopify avec fallback sans suffixe (30827-dessus → 30827) C_Ma_For 2026-06-11 12:20:27 +02:00
  • 6a08fccb7a fix: recherche UGS par contains dans le nom de fichier (ex: 30827-dessus contient 30827) C_Ma_For 2026-06-10 09:38:16 +02:00
  • da52080e3e fix: match UGS en préfixe dans search-sheets pour les images avec suffixe (dessus, -2, etc.) C_Ma_For 2026-06-10 09:17:22 +02:00
  • f0b6ddf145 fix: propager le type réel du métachamp Shopify pour éviter les erreurs 422 C_Ma_For 2026-06-09 21:54:41 +02:00
  • d1e78e91e4 feat: sélection manuelle de produit Shopify quand réf. introuvable C_Ma_For 2026-06-09 21:00:45 +02:00
  • 071f126244 fix: re-ajouter import map onnxruntime-web pour détourage IA CDN C_Ma_For 2026-06-09 14:54:29 +02:00
  • 415b7db643 fix: détecter ligne d'en-têtes dynamiquement (row 1 vide sur OUTILLAGE etc, row 2 = vrais headers) C_Ma_For 2026-06-09 14:50:23 +02:00
  • 8ede847ba0 fix: recherche produit via Google Sheets (UGS col C → Shopify ID col A) + fallback Shopify C_Ma_For 2026-06-09 13:41:53 +02:00
  • 193edc80aa fix: originalUrl mis à jour avec JPEG après conversion HEIC (aperçu original noir) C_Ma_For 2026-06-09 13:27:10 +02:00
  • 1f8db29b15 fix: ErrorBoundary autour de ImagesPage pour capturer crash IA C_Ma_For 2026-06-09 13:19:45 +02:00
  • 4b9db5bebf fix: revert @imgly npm import → CDN + ErrorBoundary + next.config cleanup C_Ma_For 2026-06-09 13:15:04 +02:00
  • a77f44b800 fix: @imgly/background-removal via npm + publicPath CDN + asyncWebAssembly webpack C_Ma_For 2026-06-09 12:27:18 +02:00
  • 0b26a61f90 fix: import map onnxruntime-web pour @imgly/background-removal CDN C_Ma_For 2026-06-09 12:09:58 +02:00
  • 2efe339576 fix: conversion HEIC serveur via heic-convert (WASM, supporte HEIC Apple vs sharp AVIF only) C_Ma_For 2026-06-09 11:50:00 +02:00
  • c4edcb568c feat: conversion HEIC serveur via sharp (fallback fiable Chrome/Firefox) C_Ma_For 2026-06-09 11:24:24 +02:00
  • e3246d022e fix: conversion HEIC — ajout fallback img+canvas pour Chrome macOS C_Ma_For 2026-06-09 11:11:17 +02:00
  • 9ab8b3ef60 fix: conversion HEIC native d'abord (Safari/macOS), heic2any fallback 30s C_Ma_For 2026-06-09 11:07:04 +02:00
  • 7da453606e fix(ui): MetafieldResolver — défaut skip, UX claire create/map/ignore + labels C_Ma_For 2026-06-09 10:56:50 +02:00
  • 8d591bb769 fix: fetchMetafieldDefinitions + ensureMetafieldDefinition via GraphQL (REST n'expose pas cet endpoint) C_Ma_For 2026-06-09 10:46:34 +02:00
  • bb596c7e32 feat(plan5): page /creation stepper 4 étapes + lien nav + fix TS shopifyMetafields plan5-deployed C_Ma_For 2026-06-09 10:20:36 +02:00
  • 1ed8c055d7 feat(plan5): composants PendingRowsTable + MetafieldResolver + CreationProgress C_Ma_For 2026-06-09 10:14:12 +02:00
  • 40d537efb6 feat(plan5): API POST /api/creation/execute streaming NDJSON C_Ma_For 2026-06-09 10:09:27 +02:00
  • 015833150a feat(plan5): API GET /api/creation/metafields (TDD) C_Ma_For 2026-06-09 09:58:14 +02:00
  • 04833b490c feat(plan5): API GET /api/creation/preview (TDD) C_Ma_For 2026-06-09 09:57:29 +02:00
  • 072110e655 feat(plan5): shopifyCollections — ajout produit à collection C_Ma_For 2026-06-09 09:55:57 +02:00
  • 421c275d48 feat(plan5): shopifyMetafields — matching + gestion définitions (TDD) C_Ma_For 2026-06-09 09:52:23 +02:00
  • ed091711c8 feat(plan5): openaiClient — génération descriptions GPT-4o (TDD) C_Ma_For 2026-06-09 09:42:26 +02:00