Commit Graph

156 Commits

Author SHA1 Message Date
C_Ma_For 4f617b15b2 feat: add reverse stock sync (Shopify → Sheets)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 12:20:59 +02:00
C_Ma_For 401b43cc04 fix: add rate limiting with retry on 429 in sync-stock
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 11:59:37 +02:00
C_Ma_For d276f6224c fix: log errors in writeShopifyIdToSheet and skip 404s in sync-stock
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 11:40:12 +02:00
C_Ma_For a9850c8efd feat: add bulk stock sync from Sheets to Shopify
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 10:35:52 +02:00
C_Ma_For 747f8a47b8 fix: handle 'Stock (pièce)' header variant in addition to 'Stock (en pièce)'
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 09:47:14 +02:00
C_Ma_For a334987b7c fix: connect inventory item to location before setting stock on product creation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 09:35:09 +02:00
C_Ma_For 06587c1ccd fix: include Surface (m2) in specificFields for metafield resolution
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 09:27:46 +02:00
C_Ma_For 99de0da823 feat: add multi-select upload and unified selection bar on images page
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 12:03:20 +02:00
C_Ma_For 3ec0b9fa3c feat: add background image upload to banner builder
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 10:46:45 +02:00
C_Ma_For 461667c506 fix: remove unused domain variable in BannerBuilder
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 10:38:52 +02:00
C_Ma_For 34ec818ad3 feat: replace product search with searchable combobox in banner builder
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 10:35:27 +02:00
C_Ma_For f650225c98 fix: remove unused graphqlUrl variable in product-banner-data route
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 10:02:36 +02:00
C_Ma_For 7ebb7e899d fix: escape apostrophe in BannerBuilder JSX
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 09:57:39 +02:00
C_Ma_For 4ce62c1473 feat: add banner builder with product search and canvas rendering
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 09:53:58 +02:00
C_Ma_For fcadea6758 fix: remove unused import in bannieres page
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 09:27:50 +02:00
C_Ma_For 0a3f5042fc feat: add bannières page to manage Shopify homepage slideshow
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 09:12:52 +02:00
C_Ma_For d616f1d74c feat: add mockup creation from image cards on images page
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 08:30:45 +02:00
C_Ma_For eec9bd5dce feat: make AI background removal optional with resize-only upload and batch detour selection
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 08:21:46 +02:00
C_Ma_For c95093a81f feat: add reprocess button to re-run AI background removal on image cards
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 20:52:18 +02:00
C_Ma_For 03770d1a76 fix: propagate Shopify 404 through upload route so client retry triggers correctly
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 20:40:50 +02:00
C_Ma_For 5e1b864ce7 fix: retry upload with fresh Shopify ID on 404 (stale cached ID)
Quand l'ID en cache est périmé (produit supprimé/recréé), relance la recherche
par ref pour obtenir le nouvel ID et réessaie l'upload automatiquement.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 20:35:43 +02:00
C_Ma_For cc0d57bf2b feat: remove clear Sheets IDs button from creation UI
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 20:03:42 +02:00
C_Ma_For 6ca2509ca6 fix: use original filename for upload to allow multiple images per product
32263.heic -> 32263.jpg, 32263-.heic -> 32263-.jpg (non plus les deux 32263.jpg)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 19:56:42 +02:00
C_Ma_For 42989a5ef3 fix: extract ref from filename not folder name in ZIP uploads
PHOTOS:/32263-.heic → ref=32263 (non plus PHOTOS:)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 18:23:43 +02:00
C_Ma_For f56e52f801 feat: show original filename on image card
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 18:15:03 +02:00
C_Ma_For 949d7c60b9 debug: log product search result to trace not_found issues
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 18:01:56 +02:00
C_Ma_For 36447a5c8c fix: improve product search robustness
- search-sheets: ne bloque plus sur l'absence d'ID Shopify en col A
- Shopify GraphQL: first:10 + match exact insensible à la casse au lieu de first:1

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 17:54:56 +02:00
C_Ma_For 920ec50402 fix: extract UGS from filename with sequence numbers and trailing dashes
151721-2.HEIC -> 151721, 29679-G-1.HEIC -> 29679-G, 27228-GRIS-.HEIC -> 27228-GRIS

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 17:45:31 +02:00
C_Ma_For 2f6eea1122 feat: stop button for product creation stream
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 17:34:34 +02:00
C_Ma_For 42ef490196 fix: strip trailing dashes from filename ref (26774-.HEIC -> 26774)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 17:24:44 +02:00
C_Ma_For 31b764f458 fix: limit concurrent AI background removal to 2 to prevent browser crash
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 17:08:32 +02:00
C_Ma_For 8c9bce7aa5 feat: collection picker in product creation flow
- API /api/creation/collections liste toutes les collections Shopify
- Détection automatique depuis la colonne ID FAMILLE du Sheets
- Sélecteur avec recherche si absente ou pour modifier
- Collection affichée dans l'écran de confirmation
- collectionOverride passé à l'exécution comme fallback

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 16:12:54 +02:00
C_Ma_For 9e7423eee3 fix: pass tab filter to execute route so only selected family is created
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 15:51:47 +02:00
C_Ma_For 6d8be0645d feat: use 'Stock conditionné' for Shopify stock on carrelage tabs
Priorité à Stock conditionné (boîtes) sur Stock (en pièce) si renseigné.
Colonne exclue des métachamps spécifiques.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 15:42:55 +02:00
C_Ma_For 114e20c9fb feat: persist metafield resolutions across sessions
Les associations colonne→métachamp sont sauvegardées dans data/metafield-resolutions.json
et rechargées automatiquement à la prochaine création de produits.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 15:28:53 +02:00
C_Ma_For caef95bd55 feat: set stock and weight on Shopify product creation
- inventory_management: shopify + inventory_levels/set.json pour le stock
- weight/weight_unit sur le variant pour l'expédition

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 15:11:17 +02:00
C_Ma_For 34ade6beb2 feat: clear Shopify IDs from Sheets to allow product recreation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 15:05:43 +02:00
C_Ma_For cdde567558 feat: placement mur/sol pour templates carrelage avec prompt adapté 2026-06-24 14:52:57 +02:00
C_Ma_For e85314eb77 feat: gestion templates mockup dans les paramètres avec familles depuis Sheets 2026-06-24 14:42:44 +02:00
C_Ma_For 5a10fd4221 feat: mockup modal avec sélection image existante, familles sheets et métachamps produit 2026-06-24 14:33:19 +02:00
C_Ma_For 93a616e997 feat: affichage images produit dans la liste avec thumbnail et compteur 2026-06-24 14:27:35 +02:00
C_Ma_For 41f5c245d4 feat: mockup modal accessible depuis la liste produits 2026-06-24 14:20:42 +02:00
C_Ma_For f6b0ba9685 feat: product picker with search in mockup page 2026-06-22 14:42:58 +02:00
C_Ma_For 4811b73c69 feat: mockup page with template library and generator UI 2026-06-22 12:27:35 +02:00
C_Ma_For 921d9d6a77 feat: MockupGenerator UI component with generate/regenerate/upload flow 2026-06-22 12:24:22 +02:00
C_Ma_For d138577a9d feat: mockup generation API route using gpt-image-1 2026-06-22 12:14:31 +02:00
C_Ma_For 1ef69dc205 feat: mockup template CRUD API routes 2026-06-22 12:10:26 +02:00
C_Ma_For 01e2fcd5e5 feat: mockup types and template storage library 2026-06-22 12:08:13 +02:00
C_Ma_For 07432bbd95 fix: conserver le type du métachamp lors de l'association manuelle
Sans le type, on envoyait toujours 'single_line_text_field' à Shopify,
causant une erreur quand le métachamp existant est de type number_decimal.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-19 13:05:31 +02:00
C_Ma_For 731d0dbde6 feat: recherche textuelle dans la sélection de métachamp existant
Remplace le <select> par un input filtrant en temps réel sur le nom,
la clé et le namespace — utile quand il y a beaucoup de métachamps.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-19 12:58:48 +02:00