/**
 * زمان‌بند داخلی سرور: یک بار هنگام روشن شدن سرور اجرا می‌شود.
 * هر دقیقه مسیر /api/cron/currency را روی همین سرور صدا می‌زند؛ آن مسیر خودش بررسی می‌کند که
 * فاصله بروزرسانی تنظیم‌شده در پنل (پیش‌فرض ۱۵ دقیقه) گذشته باشد. فراخوانی از طریق HTTP است تا
 * پاک کردن کش صفحات (revalidatePath) در بستر درخواست اجرا شود.
 *
 * فعال‌سازی: CRON_SECRET (حداقل ۲۴ کاراکتر) در .env. برای خاموش کردن زمان‌بند داخلی
 * (مثلاً وقتی cron سرور تنظیم شده یا چند نسخه از سایت اجرا می‌شود): CURRENCY_SCHEDULER=off
 */
export async function register() {
  if (process.env.NEXT_RUNTIME !== "nodejs") return;
  const secret = process.env.CRON_SECRET ?? "";
  if (secret.length < 24 || process.env.CURRENCY_SCHEDULER === "off") return;

  const port = process.env.PORT || "3000";
  const tick = () =>
    fetch(`http://127.0.0.1:${port}/api/cron/currency`, { headers: { Authorization: `Bearer ${secret}` }, signal: AbortSignal.timeout(30_000) }).catch(() => {
      /* سرور هنوز بالا نیامده یا خطای شبکه؛ دقیقه بعد دوباره */
    });
  // اولین تلاش کمی بعد از بالا آمدن سرور
  setTimeout(tick, 15_000);
  setInterval(tick, 60_000).unref?.();
}
