diff --git a/app/api/canvas/world/upload/route.ts b/app/api/canvas/world/upload/route.ts index 66385e137..2561e25ab 100644 --- a/app/api/canvas/world/upload/route.ts +++ b/app/api/canvas/world/upload/route.ts @@ -1,5 +1,6 @@ import { NextResponse } from "next/server"; import { auth } from "@/app/(auth)/auth"; +import { createLogger } from "@/lib/observability/logger"; import { WorldLabsApiError, worldLabsRequest } from "@/lib/worldlabs/client"; import { disableWorldLabsProvider, @@ -11,6 +12,8 @@ import type { WorldLabsPrepareUploadResponse } from "@/lib/worldlabs/types"; export const runtime = "nodejs"; export const maxDuration = 120; +const logger = createLogger("world-labs-upload"); + const ALLOWED_IMAGE_TYPES = new Set(["image/png", "image/jpeg", "image/webp"]); const ALLOWED_VIDEO_TYPES = new Set([ "video/mp4", @@ -229,12 +232,12 @@ export async function POST(request: Request) { ); } - console.info("[WorldLabsUpload] success", { + logger.info("upload completed", { elapsedMs: Date.now() - startedAt, providerId: config.providerId || null, kind: isImage ? "image" : "video", size: file.size, - mediaAssetId, + mediaAssetIdLength: mediaAssetId.length, }); return NextResponse.json({ @@ -262,12 +265,11 @@ export async function POST(request: Request) { ? lastError : new Error("上传 World Labs 媒体失败"); } catch (error) { - console.error("[WorldLabsUpload] failed", { + logger.error("upload failed", error, { elapsedMs: Date.now() - startedAt, providerId: providerForLog, kind: kindForLog, size: sizeForLog, - error: error instanceof Error ? error.message : String(error), }); if (error instanceof WorldLabsApiError) { return NextResponse.json( diff --git a/scripts/check-log-hygiene.mjs b/scripts/check-log-hygiene.mjs index 706ab8f90..72e7dbf34 100644 --- a/scripts/check-log-hygiene.mjs +++ b/scripts/check-log-hygiene.mjs @@ -32,6 +32,7 @@ const files = [ "app/api/canvas/detail-plan/route.ts", "app/api/scene-fusion/route.ts", "app/api/pick-object/route.ts", + "app/api/canvas/world/upload/route.ts", ]; const consolePattern = /\bconsole\.(log|warn|error|info|debug)\b/g;