import { NextRequest, NextResponse } from 'next/server' import { getMobileUserId } from '@/lib/mobile-auth' import { paragraphRefactorService } from '@/lib/ai/services/paragraph-refactor.service' import { reserveUsageOrThrow, QuotaExceededError } from '@/lib/entitlements' const MODE_MAP: Record = { improve: 'improveStyle', shorten: 'shorten', clarify: 'clarify', fix_grammar: 'fix_grammar', } export async function POST(req: NextRequest) { const userId = getMobileUserId(req) if (!userId) return NextResponse.json({ error: 'Non autorisé' }, { status: 401 }) const { text, mode = 'improve' } = await req.json().catch(() => ({})) if (!text?.trim()) return NextResponse.json({ error: 'Texte requis' }, { status: 400 }) const refactorMode = MODE_MAP[mode] if (!refactorMode) { return NextResponse.json({ error: 'Mode invalide. Valeurs: improve, shorten, clarify, fix_grammar' }, { status: 400 }) } const validation = paragraphRefactorService.validateWordCount(text) if (!validation.valid) return NextResponse.json({ error: validation.error }, { status: 400 }) try { await reserveUsageOrThrow(userId, 'reformulate') } catch (err) { if (err instanceof QuotaExceededError) { return NextResponse.json({ error: 'quota_exceeded' }, { status: 402 }) } throw err } const result = await paragraphRefactorService.refactor(text, refactorMode, 'markdown', undefined) return NextResponse.json({ improved: result.refactored, original: result.original }) }