import type { IImageHistoryListData } from "#shared/types/openai"; import { clearNewApiAuthCookies, createApiLogger, createErrorResponse, createSuccessResponse, createUpstreamErrorResponse, getNewApiUserIdFromCookie, isUnauthorizedError, listImageGenerationHistory, toSafeLogError } from "~~/server/utils"; const DEFAULT_PAGE = 1; const DEFAULT_PAGE_SIZE = 10; const MAX_PAGE_SIZE = 50; export default defineEventHandler(async (event) => { const logger = createApiLogger("images.history.list"); logger.info("开始"); try { const userId = getNewApiUserIdFromCookie(event); const query = getQuery(event); const page = normalizePositiveInt(query.page, DEFAULT_PAGE); const pageSize = Math.min( normalizePositiveInt(query.size, DEFAULT_PAGE_SIZE), MAX_PAGE_SIZE ); logger.info("查询参数", { userId, page, pageSize }); const result = await listImageGenerationHistory({ userId, page, pageSize }); logger.done("成功", { userId, page, pageSize, total: result.total, itemCount: result.items.length }); 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 normalizePositiveInt = ( value: unknown, fallbackValue: number ): number => { const rawValue = Array.isArray(value) ? value[0] : value; const numberValue = Number.parseInt(String(rawValue ?? ""), 10); return Number.isInteger(numberValue) && numberValue > 0 ? numberValue : fallbackValue; };