import {
  processExpiredMailboxSpamMessages,
  retryFailedMailboxSynchronizations
} from "@/lib/official-mail";

export const runtime = "nodejs";
export const dynamic = "force-dynamic";
export const maxDuration = 300;

function hasValidCronSecret(request: Request) {
  const expected = process.env.OFFICIAL_MAIL_CRON_SECRET?.trim();

  return Boolean(
    expected &&
      request.headers.get("x-officialmail-cron-secret")?.trim() === expected
  );
}

export async function POST(request: Request) {
  if (!hasValidCronSecret(request)) {
    return Response.json(
      { error: "forbidden", message: "유효한 크론 시크릿이 필요합니다." },
      { status: 403 }
    );
  }

  try {
    const summary = await retryFailedMailboxSynchronizations({ limit: 1 });
    const spamRetention = await processExpiredMailboxSpamMessages({
      limitMailboxes: 1,
      limitMessagesPerMailbox: 50
    });
    return Response.json({ ok: true, spamRetention, summary });
  } catch (error) {
    console.error(
      "[mailbox-sync-recovery] run failed",
      error instanceof Error ? error.message : error
    );
    return Response.json(
      {
        error: "mailbox-sync-recovery-failed",
        message: "메일함 동기화 자동 복구에 실패했습니다."
      },
      { status: 500 }
    );
  }
}
