// server/api/records.get.ts - 用户问答记录接口,供 Nuxt Dashboard 表格展示 import { getQuery } from "h3"; import { createApiLogger } from "~~/server/utils/logging"; import { getQaRecords } from "~~/server/utils/runtimeState"; /** * 用户问答记录接口(分页,最新在前) * * 安全边界: * - 必须携带有效 session cookie(由 api-auth middleware 统一鉴权) * - 只返回当前登录用户自己的记录,用 userId 严格隔离 * - 不包含 OpenAI 响应体、API Key 或内部错误 */ export default defineEventHandler(async (event) => { const logger = createApiLogger(event, "api.records"); const query = getQuery(event); const rawPage = Number.parseInt(query.page?.toString() || "1", 10); const rawSize = Number.parseInt(query.size?.toString() || "10", 10); const size = Number.isFinite(rawSize) ? Math.min(Math.max(rawSize, 1), 100) : 10; const page = Number.isFinite(rawPage) ? Math.max(rawPage, 1) : 1; const { records, total } = await getQaRecords(event.context.auth!.user.id, { page, size }); logger.info("finish_success", { page, size, total, count: records.length }); return { success: true, records, page, size, total }; });