import { NextResponse } from "next/server" import { eq } from "drizzle-orm" import { db } from "@/lib/db" import { ai_recommendations } from "@/lib/db/schema" import { getSessionUser } from "@/lib/session" export async function GET() { const user = await getSessionUser() if (!user) return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) const all = await db .select() .from(ai_recommendations) .where(eq(ai_recommendations.user_id, user.id)) const approved = all.filter((r) => r.status === "approved") const dismissed = all.filter((r) => r.status === "dismissed") const pending = all.filter((r) => r.status === "pending") let totalRevenue = 0 let totalSavings = 0 let totalRiskPrevented = 0 for (const r of approved) { const val = Number(r.action_data?.estimated_value ?? 0) const vtype = r.action_data?.value_type ?? "revenue" if (vtype === "revenue") totalRevenue += val else if (vtype === "savings") totalSavings += val else if (vtype === "risk_prevention") totalRiskPrevented += val } const byType = approved.reduce((acc: Record, r) => { acc[r.type] = (acc[r.type] ?? 0) + 1 return acc }, {}) return NextResponse.json({ totals: { generated: all.length, approved: approved.length, dismissed: dismissed.length, pending: pending.length, approval_rate: all.length > 0 ? Math.round((approved.length / all.length) * 100) : 0, }, impact: { revenue: totalRevenue, savings: totalSavings, risk_prevented: totalRiskPrevented, total: totalRevenue + totalSavings + totalRiskPrevented, }, by_type: byType, recent_approved: approved .sort((a, b) => new Date(b.applied_at ?? 0).getTime() - new Date(a.applied_at ?? 0).getTime()) .slice(0, 5), }) }