import { NextResponse } from "next/server";
import { buildBusinessProfile } from "@/lib/business-brain";
import {
  generateAiSummary,
  generateMockBrandScore,
  generateMockCompetitors,
  generateMockOpportunities,
  generateMockRecommendations,
} from "@/lib/mock-data";
import type { Business, OnboardingInput } from "@/lib/types";

export async function POST(req: Request) {
  try {
    const input = (await req.json()) as OnboardingInput;
    const profile = buildBusinessProfile(input);
    const opportunities = generateMockOpportunities(input, profile);
    const competitors = generateMockCompetitors(profile);
    const recommendations = generateMockRecommendations(input, opportunities);
    const brandScore = generateMockBrandScore(input);
    const revenuePotential = opportunities.reduce((s, o) => s + o.estimatedValue, 0);
    const topPriority = opportunities.sort((a, b) => b.urgencyScore - a.urgencyScore)[0];

    const business: Business = {
      id: crypto.randomUUID(),
      createdAt: new Date().toISOString(),
      updatedAt: new Date().toISOString(),
      input,
      profile,
      opportunities,
      competitors,
      recommendations,
      brandScore,
      metrics: {
        opportunitiesFound: opportunities.length,
        recommendedActions: recommendations.length,
        revenuePotential,
        topPriorityToday: topPriority?.title ?? "Review opportunities",
      },
      aiSummary: generateAiSummary(input, opportunities),
    };

    return NextResponse.json({ ok: true, business });
  } catch (error) {
    return NextResponse.json(
      { ok: false, error: error instanceof Error ? error.message : "Onboarding failed" },
      { status: 500 },
    );
  }
}
