import { NextRequest, NextResponse } from 'next/server'
import { getSessionUser } from '@/lib/auth'
import { extractRateConfirmation, isFlaskConfigured } from '@/lib/adapters/flask'

export const runtime = 'nodejs'
export const maxDuration = 120

/**
 * Rate-con extraction preview for the carrier create-trip wizard (Task 17):
 * "drag and drop, boom" — the extracted fields come back editable so the user
 * corrects gaps instead of typing everything. Honest empty result until the
 * Flask extractor is connected.
 */
export async function POST(req: NextRequest) {
  const user = await getSessionUser()
  if (!user) return NextResponse.json({ error: 'Sign in required.' }, { status: 401 })

  const form = await req.formData()
  const file = form.get('file')
  if (!(file instanceof File) || file.size === 0 || file.size > 25 * 1024 * 1024) {
    return NextResponse.json({ error: 'A file up to 25MB is required.' }, { status: 400 })
  }

  if (!isFlaskConfigured()) {
    return NextResponse.json({ ok: false, configured: false, data: null })
  }

  const result = await extractRateConfirmation(file, file.name)
  return NextResponse.json({ ok: result.ok, configured: true, data: result.data ?? null })
}
