diff --git a/app/api/metric/route.ts b/app/api/metric/route.ts deleted file mode 100644 index c9d6b86..0000000 --- a/app/api/metric/route.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { prisma } from "@/lib/prisma"; -import { ModelType } from "@prisma/client"; -import { NextResponse } from "next/server"; -import { MetricData } from "@/lib/types/metrics"; -import { getCurrentMarketState } from "@/lib/trading/current-market-state"; - -// 最大返回数据点数量 -const MAX_DATA_POINTS = 50; - -/** - * 从数组中均匀采样指定数量的元素 - * @param data - 原始数据数组 - * @param sampleSize - 需要采样的数量 - * @returns 均匀分布的采样数据 - */ -function uniformSample(data: T[], sampleSize: number): T[] { - if (data.length <= sampleSize) { - return data; - } - - const result: T[] = []; - const step = (data.length - 1) / (sampleSize - 1); - - for (let i = 0; i < sampleSize; i++) { - const index = Math.round(i * step); - result.push(data[index]); - } - - return result; -} - -export const GET = async () => { - try { - const metrics = await prisma.metrics.findFirst({ - where: { - model: ModelType.Deepseek, - }, - }); - - if (!metrics) { - return NextResponse.json({ - data: { - metrics: [], - }, - }); - } - - const btcPricing = await getCurrentMarketState("BTC/USDT"); - - const databaseMetrics = metrics.metrics as unknown as { - createdAt: string; - accountInformationAndPerformance: MetricData[]; - }[]; - - const metricsData = databaseMetrics - .map((item) => { - return { - ...item.accountInformationAndPerformance, - createdAt: item?.createdAt || new Date().toISOString(), - }; - }) - .filter((item) => (item as unknown as MetricData).availableCash > 0); - - // 均匀采样数据,最多返回 MAX_DATA_POINTS 条 - const sampledMetrics = uniformSample(metricsData, MAX_DATA_POINTS); - - console.log( - `📊 Total metrics: ${metricsData.length}, Sampled: ${sampledMetrics.length}` - ); - - return NextResponse.json({ - data: { - metrics: sampledMetrics, - totalCount: metricsData.length, // 返回总数量供前端参考 - model: metrics?.model || ModelType.Deepseek, - name: metrics?.name || "Deepseek Trading Bot", - createdAt: metrics?.createdAt || new Date().toISOString(), - updatedAt: metrics?.updatedAt || new Date().toISOString(), - pricing: { - btc: btcPricing, - }, - }, - message: "Metrics fetched successfully", - success: true, - }); - } catch (error) { - console.error("Error fetching metrics:", error); - // Return sample data on error - return NextResponse.json({ - data: { - metrics: [], - model: ModelType.Deepseek, - name: "Deepseek Trading Bot", - createdAt: new Date().toISOString(), - updatedAt: new Date().toISOString(), - }, - message: "Metrics fetched successfully (sample data)", - success: true, - }); - } -};