34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
// server/api/stats.get.ts - 服务运行统计接口
|
|
import { setResponseStatus } from "h3";
|
|
|
|
import {
|
|
invalidAccessTokenResponse,
|
|
verifyAccessToken
|
|
} from "~~/server/utils/auth";
|
|
import { createApiLogger } from "~~/server/utils/logging";
|
|
import { getRuntimeStats } from "~~/server/utils/runtimeState";
|
|
|
|
/**
|
|
* 运行统计接口
|
|
*
|
|
* 统计信息包含 uptime、模型名、缓存数量、最近问答记录数量
|
|
* 因为它能反映服务使用情况,所以和旧 Python 服务一样走可选 ACCESS_TOKEN 校验
|
|
*/
|
|
export default defineEventHandler((event) => {
|
|
const logger = createApiLogger(event, "api.stats");
|
|
|
|
// 未配置 ACCESS_TOKEN 时 verifyAccessToken 会放行;配置后必须携带正确 token
|
|
if (!verifyAccessToken(event)) {
|
|
setResponseStatus(event, 403);
|
|
logger.warn("invalid_access_token");
|
|
return {
|
|
success: false,
|
|
message: invalidAccessTokenResponse().msg
|
|
};
|
|
}
|
|
|
|
// getRuntimeStats 会实时清理过期缓存,再返回有效缓存数量
|
|
logger.info("finish_success");
|
|
return getRuntimeStats();
|
|
});
|