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>
- 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>
- 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>
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>
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>
- 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>
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>
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>
Utilise un compte de service Google avec JWT pour authentifier les écritures
dans le Sheets — sans dépendance npm supplémentaire (crypto natif Node.js).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
L'API variants.json ne filtre pas correctement par sku= quand le SKU contient
des tirets — elle retourne des variants aléatoires. On vérifie maintenant que
le variant retourné a bien le SKU demandé.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Un fichier nommé 26618-D-1.jpg trouvait le SKU 26618-D-1 (céramique) avant
de chercher 26618-D (la porte). On essaie maintenant d'abord le ref sans
suffixe purement numérique (-1, -2…).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Ajoute alphaThreshold (défaut 30) — les pixels dont l'alpha dépasse ce seuil
sont rendus opaques avant la composition sur fond blanc, évitant que le verre
ou les surfaces translucides soient supprimés par le modèle IA.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Évite que "26618" matche avant "26618-D" car le tiret est un séparateur
de mot dans la regex — on collecte tous les matches et on garde le plus long.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>