import { NextRequest, NextResponse } from "next/server"; import { PRODUCT_PLANNING_ADVANCED_DISABLED, PRODUCT_PLANNING_ADVANCED_DISABLED_MESSAGE, } from "@/lib/product-planning/advanced-disabled"; import { getResolvedProductPlanningApiConfig } from "@/lib/product-planning/server-config"; import { isProductPlanningEnabled, PRODUCT_PLANNING_DISABLED_MESSAGE, } from "@/lib/product-planning/server-feature"; import { getProductPlanningToken } from "@/lib/product-planning/server-auth"; import { fetchProductPlanningJdItem } from "@/lib/product-planning/marketplace-items"; import type { ProductPlanningTaobaoItemResponse } from "@/lib/product-planning/types"; export const runtime = "nodejs"; function jsonError(status: number, error: string) { const payload: ProductPlanningTaobaoItemResponse = { success: false, error, }; return NextResponse.json(payload, { status }); } export async function GET(request: NextRequest) { if (PRODUCT_PLANNING_ADVANCED_DISABLED) { return jsonError(503, PRODUCT_PLANNING_ADVANCED_DISABLED_MESSAGE); } const token = await getProductPlanningToken(request); if (!token?.sub) { return jsonError(401, "未登录"); } if (!(await isProductPlanningEnabled())) { return jsonError(403, PRODUCT_PLANNING_DISABLED_MESSAGE); } const itemId = String(request.nextUrl.searchParams.get("id") || "").trim(); if (!itemId) { return jsonError(400, "缺少商品ID参数"); } const config = await getResolvedProductPlanningApiConfig(); try { const item = await fetchProductPlanningJdItem(itemId, config); return NextResponse.json({ success: true, item, } satisfies ProductPlanningTaobaoItemResponse); } catch (error) { console.error("[ProductPlanning][JdItem] request failed:", error); return jsonError(502, error instanceof Error ? error.message : "京东商品详情接口调用失败"); } }