import { NextRequest, NextResponse } from 'next/server' import { getMobileUserId } from '@/lib/mobile-auth' import { runLaneWithBillingUser } from '@/lib/ai/provider-for-user' import { getSystemConfig } from '@/lib/config' import { checkEntitlementOrThrow, QuotaExceededError, incrementUsageAsync } from '@/lib/entitlements' export async function POST(req: NextRequest) { const userId = getMobileUserId(req) if (!userId) return NextResponse.json({ error: 'Non autorisé' }, { status: 401 }) const { content } = await req.json().catch(() => ({})) if (!content?.trim()) return NextResponse.json({ error: 'Contenu requis' }, { status: 400 }) const wordCount = content.split(/\s+/).length if (wordCount < 5) return NextResponse.json({ error: 'Contenu trop court (min 5 mots)' }, { status: 400 }) try { await checkEntitlementOrThrow(userId, 'auto_title') } catch (err) { if (err instanceof QuotaExceededError) { return NextResponse.json({ error: 'quota_exceeded' }, { status: 402 }) } throw err } const config = await getSystemConfig() const prompt = `Génère 3 titres concis pour ce texte. Réponds UNIQUEMENT avec un tableau JSON: [{"title":"titre1"},{"title":"titre2"},{"title":"titre3"}]\n\nTexte: ${content.slice(0, 400)}` const { result: titles, usedByok } = await runLaneWithBillingUser( 'tags', config, userId, (provider) => provider.generateTitles(prompt), ) if (!usedByok) incrementUsageAsync(userId, 'auto_title') return NextResponse.json({ suggestions: (titles ?? []).map((t: any) => t.title ?? t) }) }