C_Ma_For
a77f44b800
fix: @imgly/background-removal via npm + publicPath CDN + asyncWebAssembly webpack
2026-06-09 12:27:18 +02:00
C_Ma_For
0b26a61f90
fix: import map onnxruntime-web pour @imgly/background-removal CDN
2026-06-09 12:09:58 +02:00
C_Ma_For
2efe339576
fix: conversion HEIC serveur via heic-convert (WASM, supporte HEIC Apple vs sharp AVIF only)
2026-06-09 11:50:00 +02:00
C_Ma_For
c4edcb568c
feat: conversion HEIC serveur via sharp (fallback fiable Chrome/Firefox)
2026-06-09 11:24:24 +02:00
C_Ma_For
e3246d022e
fix: conversion HEIC — ajout fallback img+canvas pour Chrome macOS
2026-06-09 11:11:17 +02:00
C_Ma_For
9ab8b3ef60
fix: conversion HEIC native d'abord (Safari/macOS), heic2any fallback 30s
2026-06-09 11:07:04 +02:00
C_Ma_For
7da453606e
fix(ui): MetafieldResolver — défaut skip, UX claire create/map/ignore + labels
2026-06-09 10:56:50 +02:00
C_Ma_For
8d591bb769
fix: fetchMetafieldDefinitions + ensureMetafieldDefinition via GraphQL (REST n'expose pas cet endpoint)
2026-06-09 10:46:34 +02:00
C_Ma_For
bb596c7e32
feat(plan5): page /creation stepper 4 étapes + lien nav + fix TS shopifyMetafields
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
plan5-deployed
2026-06-09 10:20:36 +02:00
C_Ma_For
1ed8c055d7
feat(plan5): composants PendingRowsTable + MetafieldResolver + CreationProgress
2026-06-09 10:14:12 +02:00
C_Ma_For
40d537efb6
feat(plan5): API POST /api/creation/execute streaming NDJSON
2026-06-09 10:09:27 +02:00
C_Ma_For
015833150a
feat(plan5): API GET /api/creation/metafields (TDD)
2026-06-09 09:58:14 +02:00
C_Ma_For
04833b490c
feat(plan5): API GET /api/creation/preview (TDD)
2026-06-09 09:57:29 +02:00
C_Ma_For
072110e655
feat(plan5): shopifyCollections — ajout produit à collection
2026-06-09 09:55:57 +02:00
C_Ma_For
421c275d48
feat(plan5): shopifyMetafields — matching + gestion définitions (TDD)
...
Implémente Task 4 du Plan 5:
- normalizeMetafieldKey: minuscules, accents retirés, espaces/parenth→_, max 30 chars
- matchMetafields: compare clé normalisée d'une colonne avec les clés existantes
- fetchMetafieldDefinitions: récupère les définitions Shopify existantes
- ensureMetafieldDefinition: crée une définition si manquante
- setProductMetafield: définit un métachamp sur un produit
7 tests passants (4 normalizeMetafieldKey + 3 matchMetafields).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-09 09:52:23 +02:00
C_Ma_For
ed091711c8
feat(plan5): openaiClient — génération descriptions GPT-4o (TDD)
2026-06-09 09:42:26 +02:00
C_Ma_For
3aa770321c
feat(plan5): creationSheets — lecture lignes en attente (TDD)
2026-06-09 09:40:23 +02:00
C_Ma_For
2e9df3659f
feat(plan5): types création + modèle Prisma ProductCreation
2026-06-09 09:33:11 +02:00
C_Ma_For
1e48ca142f
fix: remplacer status=any par deux appels active+draft (API REST Shopify)
2026-06-09 00:05:53 +02:00
C_Ma_For
c89ab1c818
feat: lire tous les onglets Google Sheets (un onglet par famille de produits)
2026-06-08 23:56:22 +02:00
C_Ma_For
4263b8afd0
fix: onglet Google Sheets par défaut MATRICE au lieu de Produits
2026-06-08 23:52:09 +02:00
C_Ma_For
4db43f833b
feat(plan4): page /parametres avec onglets Connexions + Utilisateurs
plan4-deployed
2026-06-08 23:29:32 +02:00
C_Ma_For
4e4268d678
feat(plan4): composants ConnectionStatus + UsersManager
2026-06-08 23:28:29 +02:00
C_Ma_For
1934d0b655
feat(plan4): page /produits avec catalogue Shopify + filtres
2026-06-08 23:26:41 +02:00
C_Ma_For
119123e006
feat(plan4): composants ProductFiltersBar + ProductTable
2026-06-08 23:26:01 +02:00
C_Ma_For
5825640105
feat(plan4): API GET /api/admin/connections/test
2026-06-08 23:23:53 +02:00
C_Ma_For
f27b62a403
feat(plan4): API CRUD /api/admin/users (TDD)
2026-06-08 23:23:10 +02:00
C_Ma_For
9303aab78e
feat(plan4): API GET /api/products/list avec filtre statut (TDD)
2026-06-08 23:21:18 +02:00
C_Ma_For
6dd6dc301e
feat(plan4): types CatalogProduct, ProductFilters, ProductListResponse
2026-06-08 23:18:29 +02:00
C_Ma_For
e576df334a
fix: fusionner imports next/server dupliqués
2026-06-08 23:05:51 +02:00
C_Ma_For
dc88e56f49
fix: supprimer API_VERSION inutilisé + eslint-disable _req
2026-06-08 22:59:30 +02:00
C_Ma_For
e04e286111
fix: API Key Google Sheets (remplace service account) + signatures routes GET
2026-06-08 22:52:40 +02:00
C_Ma_For
abf5210de6
fix: corriger erreurs ESLint sync (apostrophes, imports inutilisés)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
plan3-deployed
2026-06-08 22:37:54 +02:00
C_Ma_For
97f011a24b
feat: module Sync Sheets complet — stepper 4 étapes, diff, streaming, historique
...
- Replace placeholder page.tsx with full implementation:
- 4-step stepper (Analyser → Diff → Confirmer → Progression)
- Step 1: Call /api/sync/preview to analyze Sheet vs Shopify
- Step 2: Display DiffTable with changes summary
- Step 3: Confirmation with actionable changes count
- Step 4: Real-time progress streaming from /api/sync/execute
- History section with loadable entries
- Fix type annotations in preview.test.ts (SyncProduct, ShopifyProductFull)
- All 40 tests passing, TypeScript strict mode clean
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-08 22:26:37 +02:00
C_Ma_For
cdbddddaec
feat: composant SyncHistory
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-08 22:07:10 +02:00
C_Ma_For
94993c3cbc
feat: composant SyncProgress
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-08 22:07:04 +02:00
C_Ma_For
9c3ec2a953
feat: composant DiffTable
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-08 22:06:53 +02:00
C_Ma_For
e6a670c67b
feat: composant SyncStepper
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-08 22:06:46 +02:00
C_Ma_For
e9d4f9dc20
feat: API route GET /api/sync/history (TDD)
2026-06-08 21:04:45 +02:00
C_Ma_For
16fece8ca9
feat: API route POST /api/sync/execute (NDJSON streaming)
2026-06-08 21:04:45 +02:00
C_Ma_For
d4b54efa17
feat: API route GET /api/sync/preview (TDD)
2026-06-08 21:04:00 +02:00
C_Ma_For
2988ecab0b
feat: logique diff Sheets/Shopify (TDD)
...
Implémentation de la fonction pure computeDiff pour calculer les changements
entre les produits Google Sheets et Shopify, avec distinction des opérations
(create, update, deactivate, unchanged) et traçabilité des champs modifiés.
- Matching par handle (ref normalisée)
- Comparaison des champs: title, description, price, status
- Draft products Shopify non synchronisés ne sont pas déactivés
- Tests TDD: 9 cas couverts (empty, create, unchanged, update, deactivate)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-08 20:51:21 +02:00
C_Ma_For
f415138103
feat: client Shopify sync (fetch all products + CRUD)
2026-06-08 20:47:35 +02:00
C_Ma_For
c4010e8c5e
feat: client Google Sheets + parseSheetRows (TDD)
...
Implémente la lecture depuis Google Sheets avec la fonction de parsing en TDD.
- parseSheetRows(): parseur pur, testé avec 7 cas (tests unitaires)
- readSheetProducts(): client async qui utilise l'API v4 de Google Sheets
- Normalisation des handles (minuscules, tirets, trim)
- Gestion des prix français (virgule → point), status inactif → draft
- Valeurs par défaut pour colonnes manquantes
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-08 20:44:26 +02:00
C_Ma_For
1daf9bda72
feat: types sync + dépendance googleapis
2026-06-08 20:42:00 +02:00
C_Ma_For
cf5bbf91d5
feat: module Images complet — drop, traitement IA, Shopify, upload
plan2-deployed
2026-06-08 20:00:20 +02:00
C_Ma_For
fe9c3b9ccb
fix: inclure 'uploading' dans le compteur processing de GlobalActions
2026-06-08 19:18:40 +02:00
C_Ma_For
568fe0d38e
feat: composants Lightbox plein écran + GlobalActions barre d'upload
2026-06-08 17:45:22 +02:00
C_Ma_For
683db58f4b
feat: composant ImageCard avec miniatures avant/après, feather, rotation, upload
2026-06-08 17:44:45 +02:00
C_Ma_For
4c1cf73435
feat: composant DropZone drag & drop HEIC/JPG/PNG/ZIP
2026-06-08 17:43:40 +02:00