import { NextRequest, NextResponse } from "next/server" import { prisma } from "@/lib/db" import { getStagesForProfile } from "@/lib/curriculum/engine" export async function GET(request: NextRequest) { try { const childId = request.nextUrl.searchParams.get("childId") const profile = request.nextUrl.searchParams.get("profile") || "ISABELLA" const topic = request.nextUrl.searchParams.get("topic") || "lectura" if (!childId) { return NextResponse.json({ error: "childId required" }, { status: 400 }) } const child = await prisma.child.findUnique({ where: { id: childId }, select: { id: true, name: true, profile: true }, }) const progress = await prisma.curriculumProgress.findMany({ where: { childId }, orderBy: [{ topic: "asc" }, { stage: "asc" }], }) const skillAttempts = await prisma.skillAttempt.findMany({ where: { sessionLog: { childId } }, orderBy: { createdAt: "desc" }, take: 20, }) const fsrsCards = await prisma.fsrsCard.findMany({ where: { childId }, orderBy: { dueAt: "asc" }, }) const sessionLogs = await prisma.sessionLog.findMany({ where: { childId }, orderBy: { startedAt: "desc" }, take: 5, }) // Count mastered exercises for this topic const mastered = new Set( skillAttempts .filter((a) => a.exerciseId && a.exerciseId.startsWith(`${topic[0]}${topic[1]}`) && a.correct) .map((a) => a.exerciseId), ) const stages = await getStagesForProfile(profile, topic) const totalExercises = Object.values(stages).reduce((sum, s) => sum + s.exercises.length, 0) return NextResponse.json({ child, progress, skillAttempts: skillAttempts.slice(0, 10), fsrsCards: fsrsCards.slice(0, 10), sessionLogs, stats: { totalExercisesInTopic: totalExercises, masteredInTopic: mastered.size, progressPercent: totalExercises > 0 ? Math.round((mastered.size / totalExercises) * 100) : 0, currentStage: progress.find((p) => !p.completedAt)?.stage || null, currentTopic: progress.find((p) => !p.completedAt)?.topic || null, }, }) } catch (error) { console.error("Debug state error:", error) return NextResponse.json({ error: "Internal error" }, { status: 500 }) } }