C_Ma_For
a2c0789625
fix: ignorer les désactivations lors d'un sync filtré par famille
...
Quand un onglet est sélectionné, les produits Shopify absents du tab
peuvent appartenir à d'autres familles — ne pas les marquer 'deactivate'.
Les désactivations ne s'appliquent qu'en mode catalogue complet (sans filtre).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-11 23:37:29 +02:00
C_Ma_For
23aa78d3da
feat: sélecteur de famille (onglet Sheets) en sync et création
...
- GET /api/sheets/tabs : liste les onglets Google Sheets disponibles
- readSheetProducts(tab?) et fetchPendingProducts(set, tab?) acceptent un filtre
- /api/sync/preview?tab=xxx et /api/creation/preview?tab=xxx filtrent sur un onglet
- Composant FamilySelector : grille de boutons chargeant les onglets dynamiquement
- Page Sync : étape 0 de sélection famille avant l'analyse
- Page Création : étape famille avant analyse, badge de famille sélectionnée
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-11 23:31:19 +02:00
C_Ma_For
1b07359415
feat: détection drift Sheets sur le dashboard (approche A)
...
- /api/dashboard/stats appelle Google Drive API pour récupérer modifiedTime du Sheets
- Compare avec createdAt de la dernière SyncRun → sheetDrift: boolean
- Dashboard affiche un bandeau amber cliquable si Sheets plus récent que la dernière sync
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-11 23:14:06 +02:00
C_Ma_For
211d8c5c01
fix: supprimer variables inutilisées bloquant le build ESLint
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-11 22:49:22 +02:00
C_Ma_For
d16cd1fbf5
feat: implémenter le dashboard avec KPIs, dernière sync et actions rapides
...
- Nouvel endpoint /api/dashboard/stats : comptes produits Shopify (actifs/brouillons/sans image) + dernière sync depuis Prisma
- Nouvel endpoint /api/dashboard/pending : nombre de produits en attente depuis Google Sheets (lazy)
- Page dashboard remplace le stub avec 4 KPIs, bloc dernière sync, et raccourcis vers les sections
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-11 22:42:57 +02:00
C_Ma_For
06cda68929
fix: match UGS comme mot entier n'importe où dans le nom de fichier
2026-06-11 12:51:27 +02:00
C_Ma_For
c19510d413
fix: match UGS en début de nom de fichier exact (évite 30 de matcher 30827)
2026-06-11 12:47:26 +02:00
C_Ma_For
2de5c6670d
fix: recherche produit par SKU Shopify avec fallback sans suffixe (30827-dessus → 30827)
2026-06-11 12:20:27 +02:00
C_Ma_For
6a08fccb7a
fix: recherche UGS par contains dans le nom de fichier (ex: 30827-dessus contient 30827)
2026-06-10 09:38:16 +02:00
C_Ma_For
da52080e3e
fix: match UGS en préfixe dans search-sheets pour les images avec suffixe (dessus, -2, etc.)
2026-06-10 09:17:22 +02:00
C_Ma_For
d1e78e91e4
feat: sélection manuelle de produit Shopify quand réf. introuvable
2026-06-09 21:00:45 +02:00
C_Ma_For
071f126244
fix: re-ajouter import map onnxruntime-web pour détourage IA CDN
2026-06-09 14:54:29 +02:00
C_Ma_For
8ede847ba0
fix: recherche produit via Google Sheets (UGS col C → Shopify ID col A) + fallback Shopify
2026-06-09 13:41:53 +02:00
C_Ma_For
1f8db29b15
fix: ErrorBoundary autour de ImagesPage pour capturer crash IA
2026-06-09 13:19:45 +02:00
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
bb596c7e32
feat(plan5): page /creation stepper 4 étapes + lien nav + fix TS shopifyMetafields
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-09 10:20:36 +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
4db43f833b
feat(plan4): page /parametres avec onglets Connexions + Utilisateurs
2026-06-08 23:29:32 +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
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
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 >
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
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
cf5bbf91d5
feat: module Images complet — drop, traitement IA, Shopify, upload
2026-06-08 20:00:20 +02:00
C_Ma_For
a5ced27e93
feat: API route POST /api/images/upload (TDD)
2026-06-08 17:25:40 +02:00
C_Ma_For
c9422be78e
feat: API route GET /api/products/search (TDD)
...
Implémentation test-driven du endpoint de recherche de produits par référence.
- Tests unitaires complets validant les cas nominaux et d'erreur
- Validation du paramètre ref avec gestion des chaînes vides
- Intégration avec searchProductByRef de lib/shopify
- Gestion appropriée des erreurs HTTP (400, 500)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-08 17:15:58 +02:00
C_Ma_For
51f87c0672
feat: app shell avec sidebar, header et pages placeholder
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-07 00:20:57 +02:00
C_Ma_For
8d06706a24
feat: page login avec gestion erreurs et rate limiting
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-07 00:20:36 +02:00
C_Ma_For
f9a14b009a
feat: NextAuth credentials + JWT 8h + rate limiting
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-07 00:05:14 +02:00
C_Ma_For
1b60fd79f7
chore: replace boilerplate page.tsx with minimal placeholder
2026-06-06 16:21:34 +02:00
C_Ma_For
f435b1f6cc
chore: scaffold Next.js 14 app
2026-06-06 16:04:15 +02:00