import { NextResponse } from "next/server";
import { evaluateInspectionRules } from "@/lib/risk-engine";
import { getSession } from "@/lib/auth";
import { canOperateCapital, resolveInspectionTenant } from "@/lib/authorization";

export const runtime = "nodejs";

export async function POST(request: Request, { params }: { params: Promise<{ externalId: string }> }) {
  try {
    const session = await getSession();
    if (!session) return NextResponse.json({ error: "Faça login para aplicar regras." }, { status: 401 });
    if (!canOperateCapital(session)) return NextResponse.json({ error: "A aplicação de regras é exclusiva da operação Capital." }, { status: 403 });
    const { externalId } = await params;
    const tenantId = await resolveInspectionTenant(session, new URL(request.url).searchParams.get("tenantId"));
    if (!tenantId) return NextResponse.json({ error: "Cliente da vistoria não encontrado ou inativo." }, { status: 404 });
    const result = await evaluateInspectionRules(tenantId, externalId);
    return NextResponse.json({ message: "Regras aplicadas com sucesso.", ...result });
  } catch (error: unknown) {
    const message = error instanceof Error ? error.message : "Não foi possível aplicar as regras.";
    const code = typeof error === "object" && error && "code" in error ? String(error.code) : "";
    if (code === "ER_NO_SUCH_TABLE") return NextResponse.json({ error: "A estrutura do motor de regras ainda não foi instalada.", hint: "Execute a migration 008_rule_engine.sql." }, { status: 503 });
    console.error("Erro ao aplicar regras", error);
    return NextResponse.json({ error: message }, { status: 400 });
  }
}
