feat: 接口统一优化

This commit is contained in:
2026-05-23 13:45:58 +08:00
parent a3b1fba3ea
commit 7d68db723b
20 changed files with 302 additions and 302 deletions
+15 -10
View File
@@ -1,6 +1,9 @@
// server/api/cache/clear.post.ts - 清空当前用户 DB 缓存接口
import { setResponseStatus } from "h3";
import { prisma } from "~~/server/utils/db";
import { createApiLogger } from "~~/server/utils/logging";
import { apiErr, apiOk } from "~~/server/utils/response";
/**
* 清缓存:将当前用户的 cacheClearedAt 更新为当前时间
@@ -12,15 +15,17 @@ export default defineEventHandler(async (event) => {
const logger = createApiLogger(event, "api.cache.clear");
const userId = event.context.auth!.user.id;
await prisma.user.update({
where: { id: userId },
data: { cacheClearedAt: new Date() }
});
try {
await prisma.user.update({
where: { id: userId },
data: { cacheClearedAt: new Date() }
});
logger.info("finish_success");
return {
success: true,
message: "缓存已清除"
};
logger.info("finish_success");
return apiOk(null);
} catch (err) {
logger.error("db_error", { userId, err: String(err) });
setResponseStatus(event, 500);
return apiErr(500, "服务器内部错误");
}
});
+4 -3
View File
@@ -1,5 +1,6 @@
// server/api/health.get.ts - 服务健康检查接口
import { serverEnv } from "~~/server/utils/env";
import { apiOk } from "~~/server/utils/response";
import { SERVICE_VERSION } from "~~/server/utils/runtimeState";
/**
@@ -9,10 +10,10 @@ import { SERVICE_VERSION } from "~~/server/utils/runtimeState";
* 返回模型名,但不返回 API Key、baseURL 或其他敏感配置
*/
export default defineEventHandler(() => {
return {
status: "ok",
return apiOk({
status: "ok" as const,
message: "AI题库服务运行正常",
version: SERVICE_VERSION,
model: serverEnv.openAiModel
};
});
});
+19 -18
View File
@@ -1,7 +1,8 @@
// server/api/records.get.ts - 用户问答记录接口,供 Nuxt Dashboard 表格展示
import { getQuery } from "h3";
import { getQuery, setResponseStatus } from "h3";
import { createApiLogger } from "~~/server/utils/logging";
import { apiErr, apiOk } from "~~/server/utils/response";
import { getQaRecords } from "~~/server/utils/runtimeState";
/**
@@ -23,23 +24,23 @@ export default defineEventHandler(async (event) => {
const size = ALLOWED_SIZES.has(rawSize) ? rawSize : 10;
const page = Number.isFinite(rawPage) ? Math.max(rawPage, 1) : 1;
const { records, total } = await getQaRecords(event.context.auth!.user.id, {
page,
size
});
try {
const { records, total } = await getQaRecords(event.context.auth!.user.id, {
page,
size
});
logger.info("finish_success", {
page,
size,
total,
count: records.length
});
logger.info("finish_success", {
page,
size,
total,
count: records.length
});
return {
success: true,
records,
page,
size,
total
};
return apiOk({ records, page, size, total });
} catch (err) {
logger.error("db_error", { err: String(err) });
setResponseStatus(event, 500);
return apiErr(500, "服务器内部错误");
}
});
+15 -6
View File
@@ -1,6 +1,9 @@
// server/api/stats.get.ts - 服务运行统计接口
import { setResponseStatus } from "h3";
import { prisma } from "~~/server/utils/db";
import { createApiLogger } from "~~/server/utils/logging";
import { apiErr, apiOk } from "~~/server/utils/response";
import { getRuntimeStats } from "~~/server/utils/runtimeState";
/**
@@ -13,11 +16,17 @@ export default defineEventHandler(async (event) => {
const logger = createApiLogger(event, "api.stats");
const userId = event.context.auth!.user.id;
const [runtimeStats, qa_records_count] = await Promise.all([
Promise.resolve(getRuntimeStats()),
prisma.qaRecord.count({ where: { userId } })
]);
try {
const [runtimeStats, qa_records_count] = await Promise.all([
Promise.resolve(getRuntimeStats()),
prisma.qaRecord.count({ where: { userId } })
]);
logger.info("finish_success");
return { ...runtimeStats, qa_records_count };
logger.info("finish_success");
return apiOk({ ...runtimeStats, qa_records_count });
} catch (err) {
logger.error("db_error", { userId, err: String(err) });
setResponseStatus(event, 500);
return apiErr(500, "服务器内部错误");
}
});
+3 -2
View File
@@ -6,6 +6,7 @@ import { setResponseStatus } from "h3";
import { prisma } from "~~/server/utils/db";
import { createApiLogger } from "~~/server/utils/logging";
import { apiErr, apiOk } from "~~/server/utils/response";
export default defineEventHandler(async (event) => {
const logger = createApiLogger(event, "api.user.refresh-token");
@@ -21,9 +22,9 @@ export default defineEventHandler(async (event) => {
} catch (err) {
logger.error("db_error", { userId, err: String(err) });
setResponseStatus(event, 500);
return { success: false, msg: "服务器内部错误" };
return apiErr(500, "服务器内部错误");
}
logger.info("finish_success", { userId });
return { success: true, msg: "刷新成功", apiToken: newToken };
return apiOk({ apiToken: newToken });
});