// ═══ Batch Generate All ═══
async function batchGenerateAll() {
  if (!confirm(`Hệ thống sẽ tự động quét TẤT CẢ sản phẩm thiếu mô tả trong database (tối đa 500 SP/lần) và đưa vào hàng đợi sinh AI chạy ngầm.\\n\\nBạn có chắc chắn muốn chạy không?`)) return;

  const btn = document.getElementById('btnBatchAll');
  const ogText = btn.innerHTML;
  btn.innerHTML = '<div class="spinner-sm"></div> Đang gửi...';
  btn.disabled = true;

  try {
    const res = await fetch(`${API}/batch-generate-all`, {
      method: 'POST'
    });
    const data = await res.json();
    if (data.status === 'error') throw new Error(data.message);

    alert(data.message);
    startBatchPolling();
    loadProducts();
    loadOverview();
  } catch (e) {
    alert('Lỗi chạy toàn bộ: ' + e.message);
  } finally {
    btn.innerHTML = ogText;
    btn.disabled = false;
  }
}

// ═══ Batch Tracking Polling ═══
let batchPollInterval = null;

