From 8e9dff683395b603f64f665fe30d4ffd01df9db7 Mon Sep 17 00:00:00 2001 From: ht Date: Sat, 5 Sep 2026 17:08:46 +0300 Subject: [PATCH] =?UTF-8?q?TED=20=C3=A7evirisi:=20par=C3=A7alar=203'l?= =?UTF-8?q?=C3=BC=20e=C5=9Fzamanl=C4=B1=20=E2=80=94=2030=20ilanl=C4=B1k=20?= =?UTF-8?q?liste=20daha=20h=C4=B1zl=C4=B1=20tamamlan=C4=B1r?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5.1 --- server/ted-ceviri.mjs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/server/ted-ceviri.mjs b/server/ted-ceviri.mjs index 71d43b1..889723d 100644 --- a/server/ted-ceviri.mjs +++ b/server/ted-ceviri.mjs @@ -116,10 +116,16 @@ export async function tedCevir(tenders, { blockMs = 12000 } = {}) { for (const t of bekleyen) devamEden.add(t.ikn); const parcalar = []; for (let i = 0; i < bekleyen.length; i += 6) parcalar.push(bekleyen.slice(i, i + 6)); + // Parçalar 3'lü eşzamanlı işlenir: 30 ilanlık liste ~5 yerine ~2 model turunda biter. const is = (async () => { - for (const parca of parcalar) { - try { await parcayiCevir(parca); } catch (e) { console.warn('[ted-ceviri] parça atlandı:', e.message); } - } + const kuyruk = [...parcalar]; + const isci = async () => { + while (kuyruk.length) { + const parca = kuyruk.shift(); + try { await parcayiCevir(parca); } catch (e) { console.warn('[ted-ceviri] parça atlandı:', e.message); } + } + }; + await Promise.all(Array.from({ length: Math.min(3, parcalar.length) }, isci)); })(); await Promise.race([is, new Promise((r) => setTimeout(r, blockMs))]); return tenders.filter((t) => !t.baslikTr).length;