diff --git a/app/api/canvas/3d/tasks/route.ts b/app/api/canvas/3d/tasks/route.ts index d15e5fd3d..ec3479a19 100644 --- a/app/api/canvas/3d/tasks/route.ts +++ b/app/api/canvas/3d/tasks/route.ts @@ -6,6 +6,7 @@ import { resolveThreeDModelRealId, } from "@/lib/model3d/model-alias-config"; import { getThreeDModelAliasConfigForRuntime } from "@/lib/model3d/model-alias-config-server"; +import { createLogger } from "@/lib/observability/logger"; import { prepareFeaturePointsCharge } from "@/lib/points/feature-charge"; import { get3DTaskCreditCost } from "@/lib/points/config"; import { @@ -17,6 +18,8 @@ import { TripoApiError, tripoRequest } from "@/lib/tripo/client"; export const runtime = "nodejs"; export const maxDuration = 60; +const logger = createLogger("canvas-3d-task-create"); + type CreateTaskRequest = { taskType: | "text_to_model" @@ -458,20 +461,32 @@ export async function POST(request: Request) { }); if (!consumeResult?.ok) { - console.warn( - `[Points] Failed to consume 3D points. user=${session.user.id} task=${taskId} cost=${unitCost}` - ); + logger.warn("points consume failed", { + userId: session.user.id, + taskId, + unitCost, + }); } else if (consumeResult.skipped) { - console.log( - `[Points] Skipped ${unitCost} 3D points for VIP user=${session.user.id} task=${taskId}` - ); + logger.info("points consume skipped", { + userId: session.user.id, + taskId, + unitCost, + reason: "vip", + }); } else { - console.log( - `[Points] Consumed ${unitCost} points for 3D model generation. user=${session.user.id} task=${taskId} balance=${consumeResult.balance}` - ); + logger.info("points consumed", { + userId: session.user.id, + taskId, + unitCost, + balance: consumeResult.balance, + }); } } catch (error) { - console.error("[Points] Failed to consume 3D points:", error); + logger.error("points consume threw", error, { + userId: session.user.id, + taskId, + unitCost, + }); } } diff --git a/scripts/check-log-hygiene.mjs b/scripts/check-log-hygiene.mjs index 72e7dbf34..2b20ebbcc 100644 --- a/scripts/check-log-hygiene.mjs +++ b/scripts/check-log-hygiene.mjs @@ -33,6 +33,7 @@ const files = [ "app/api/scene-fusion/route.ts", "app/api/pick-object/route.ts", "app/api/canvas/world/upload/route.ts", + "app/api/canvas/3d/tasks/route.ts", ]; const consolePattern = /\bconsole\.(log|warn|error|info|debug)\b/g;