SPB Git

Repository Public

route.ts 1.8 KB 21 lines typescript

1// Vrai-Prix — admin méthode du coût : consommation IA (ai_usage) et budgets jour / mois.2import { NextResponse } from "next/server";3import { adminAuth } from "@/lib/cost/connectors/admin";4import { getCostDb } from "@/lib/cost/db";56export const runtime = "nodejs";78export function GET(req: Request) {9  const denied = adminAuth(req);10  if (denied) return denied;11  const d = getCostDb();12  const day = d.prepare("SELECT COUNT(*) n, COALESCE(SUM(estimated_cost_usd),0) usd, COALESCE(SUM(input_tokens),0) input, COALESCE(SUM(output_tokens),0) output FROM ai_usage WHERE created_at >= date('now')").get();13  const month = d.prepare("SELECT COUNT(*) n, COALESCE(SUM(estimated_cost_usd),0) usd, COALESCE(SUM(input_tokens),0) input, COALESCE(SUM(output_tokens),0) output FROM ai_usage WHERE created_at >= date('now','start of month')").get();14  const byPurpose = d.prepare("SELECT purpose, model, COUNT(*) n, ROUND(COALESCE(SUM(estimated_cost_usd),0),4) usd, ROUND(AVG(latency_ms)) latencyMs, ROUND(AVG(estimated_cost_usd),5) avgUsd FROM ai_usage GROUP BY purpose, model ORDER BY usd DESC").all();15  const recent = d.prepare("SELECT id, analysis_id analysisId, purpose, model, input_images inputImages, input_tokens inputTokens, output_tokens outputTokens, estimated_cost_usd usd, latency_ms latencyMs, created_at createdAt FROM ai_usage ORDER BY created_at DESC LIMIT 50").all();16  const budgets = { dailyUsd: Number(process.env.AI_DAILY_BUDGET_USD ?? 5), monthlyUsd: Number(process.env.AI_MONTHLY_BUDGET_USD ?? 60) };17  const dayUsd = (day as { usd: number }).usd;18  const monthUsd = (month as { usd: number }).usd;19  return NextResponse.json({ day, month, byPurpose, recent, budgets, alerts: [dayUsd > budgets.dailyUsd ? "budget quotidien dépassé" : null, monthUsd > budgets.monthlyUsd ? "budget mensuel dépassé" : null].filter(Boolean) });20}21
Files main
Menu

Theme