fix: log errors in writeShopifyIdToSheet and skip 404s in sync-stock
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { NextRequest, NextResponse } from 'next/server'
|
||||
import { getServerSession } from 'next-auth'
|
||||
import { authOptions } from '@/lib/auth'
|
||||
import { fetchPendingProducts, findColIndex } from '@/lib/creationSheets'
|
||||
import { findColIndex } from '@/lib/creationSheets'
|
||||
import { getConfig } from '@/lib/shopifySync'
|
||||
|
||||
export async function POST(req: NextRequest) {
|
||||
@@ -86,8 +86,13 @@ export async function POST(req: NextRequest) {
|
||||
try {
|
||||
// Récupérer le variant pour obtenir inventory_item_id
|
||||
const pRes = await fetch(`${baseUrl}/products/${shopifyId}.json?fields=variants`, { headers })
|
||||
if (pRes.status === 404) {
|
||||
// Produit supprimé de Shopify, on ignore silencieusement
|
||||
continue
|
||||
}
|
||||
if (!pRes.ok) {
|
||||
send({ type: 'error', title, message: `Produit ${shopifyId} introuvable (${pRes.status})` })
|
||||
const msg = `Produit ${shopifyId} erreur (${pRes.status})`
|
||||
send({ type: 'error', title, message: msg })
|
||||
errors++
|
||||
continue
|
||||
}
|
||||
@@ -121,6 +126,7 @@ export async function POST(req: NextRequest) {
|
||||
send({ type: 'done', updated, errors })
|
||||
} catch (err) {
|
||||
const message = err instanceof Error ? err.message : 'Erreur inconnue'
|
||||
console.error('[sync-stock] fatal:', message)
|
||||
send({ type: 'done', updated: 0, errors: 1, fatalError: message })
|
||||
} finally {
|
||||
controller.close()
|
||||
|
||||
@@ -114,11 +114,14 @@ export async function writeShopifyIdToSheet(tab: string, rowNumber: number, shop
|
||||
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
||||
body: new URLSearchParams({ grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer', assertion: jwt }),
|
||||
})
|
||||
if (!tokenRes.ok) return
|
||||
if (!tokenRes.ok) {
|
||||
console.error(`[sheets] token error ${tokenRes.status} for ${tab}!A${rowNumber}`)
|
||||
return
|
||||
}
|
||||
const { access_token } = await tokenRes.json() as { access_token: string }
|
||||
|
||||
const range = encodeURIComponent(`${tab}!A${rowNumber}`)
|
||||
await fetch(
|
||||
const writeRes = await fetch(
|
||||
`https://sheets.googleapis.com/v4/spreadsheets/${sheetId}/values/${range}?valueInputOption=RAW`,
|
||||
{
|
||||
method: 'PUT',
|
||||
@@ -126,6 +129,10 @@ export async function writeShopifyIdToSheet(tab: string, rowNumber: number, shop
|
||||
body: JSON.stringify({ range: `${tab}!A${rowNumber}`, majorDimension: 'ROWS', values: [[shopifyId]] }),
|
||||
},
|
||||
)
|
||||
if (!writeRes.ok) {
|
||||
const txt = await writeRes.text()
|
||||
console.error(`[sheets] write error ${writeRes.status} for ${tab}!A${rowNumber}: ${txt}`)
|
||||
}
|
||||
}
|
||||
|
||||
export async function fetchPendingProducts(
|
||||
|
||||
Reference in New Issue
Block a user