import type { IImageHistoryDetail } from "#shared/types/openai"; import { clearNewApiAuthCookies, createApiLogger, createErrorResponse, createSuccessResponse, createUpstreamErrorResponse, getImageGenerationDetail, getNewApiUserIdFromCookie, isUnauthorizedError, toSafeLogError } from "~~/server/utils"; export default defineEventHandler(async (event) => { const logger = createApiLogger("images.history.detail"); logger.info("开始"); try { const userId = getNewApiUserIdFromCookie(event); const recordId = parseRecordId(getRouterParam(event, "id")); logger.info("查询参数", { userId, recordId: recordId.toString() }); const result = await getImageGenerationDetail(userId, recordId); if (!result) { logger.warn("记录不存在", { userId, recordId: recordId.toString() }); return createErrorResponse(404, "生图记录不存在"); } logger.done("成功", { userId, recordId: recordId.toString(), status: result.status, hasHostedImageUrl: Boolean(result.hostedImageUrl) }); return createSuccessResponse( result, "获取生图详情成功" ); } catch (error) { if (isUnauthorizedError(error)) { clearNewApiAuthCookies(event); logger.warn("未登录或登录态失效", { error: toSafeLogError(error) }); return createErrorResponse(401, "未登录"); } logger.error("失败", { error: toSafeLogError(error) }); return createUpstreamErrorResponse(error, "获取生图详情失败"); } }); const parseRecordId = (value: string | undefined): bigint => { if (!value || !/^\d+$/.test(value)) { throw createError({ statusCode: 400, statusMessage: "生图记录 ID 不正确" }); } return BigInt(value); };