import { NextResponse } from 'next/server'; import { and, eq } from 'drizzle-orm'; import { withAuth } from '@/lib/api/helpers'; import { db } from '@/lib/db'; import { systemSettings } from '@/lib/db/schema/system'; import { requestEmailDraft } from '@/lib/services/email-draft.service'; import { parseBody } from '@/lib/api/route-helpers'; import { requestDraftSchema } from '@/lib/validators/ai'; import { CodedError, errorResponse } from '@/lib/errors'; export const POST = withAuth(async (req, ctx) => { try { // Feature flag check const flag = await db.query.systemSettings.findFirst({ where: and(eq(systemSettings.key, 'ai_email_drafts'), eq(systemSettings.portId, ctx.portId)), }); if (flag?.value !== true) { throw new CodedError('NOT_FOUND', { internalMessage: 'AI email-draft feature flag disabled for this port', }); } const body = await parseBody(req, requestDraftSchema); const { jobId } = await requestEmailDraft(ctx.userId, { interestId: body.interestId, clientId: body.clientId, portId: ctx.portId, context: body.context, additionalInstructions: body.additionalInstructions, }); return NextResponse.json({ jobId }, { status: 202 }); } catch (error) { return errorResponse(error); } });