C_Ma_For
60dc9cc0ec
feat: map prix marché as compare_at_price (barré) on Shopify
...
When Prix remisé is set: price = remisé, compare_at_price = marché
When no remise: price = marché, compare_at_price = null
Diff now detects compareAtPrice changes to trigger updates
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-26 14:19:37 +02:00
C_Ma_For
eb5f605175
feat: refactor mockup page with 3-step flow (product → image → template)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-26 14:05:25 +02:00
C_Ma_For
ac58289bb7
feat: auto-fill mockup dimensions and family from Google Sheets
...
- Extend Sheets read range from A1:Z to A1:AZ (52 columns)
- Parse longueur, largeur, marque, famille, sousFamille, prixRemise, specificFields
- Add /api/products/sheet-info endpoint to fetch product data by ref
- Auto-fill family and dimensions on product selection in all 3 mockup entry points
- Strengthen carrelage mockup prompt with strict tile-size consistency rules
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-26 13:35:39 +02:00
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