From 0f6f1026648a9cc7bc2af66b4400c22240cc5157 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Thu, 25 Jun 2026 09:50:06 +0400 Subject: [PATCH] =?UTF-8?q?v1.0.178:=20addZipFile=20=E2=80=94=20=D0=B4?= =?UTF-8?q?=D1=83=D0=B1=D0=BB=D0=B8=D0=BA=D0=B0=D1=82=D1=8B=20=D0=B8=D0=B7?= =?UTF-8?q?=20ZIP=20=D1=82=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=B7=D0=B0=D0=BF=D0=B8=D1=81=D1=8B=D0=B2=D0=B0?= =?UTF-8?q?=D1=8E=D1=82=D1=81=D1=8F=20(=D0=BA=D0=B0=D0=BA=20addRegularFile?= =?UTF-8?q?).=20=D0=A3=D0=BD=D0=B8=D1=84=D0=B8=D1=86=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=BE=20=D0=BF=D0=BE=D0=B2=D0=B5=D0=B4=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5:=20=D1=84=D0=B0=D0=B9=D0=BB=20=D0=B8=D0=B7?= =?UTF-8?q?=20=D0=B0=D1=80=D1=85=D0=B8=D0=B2=D0=B0=20=D0=B7=D0=B0=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D1=8F=D0=B5=D1=82=20=D1=81=D1=83=D1=89=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D0=B2=D1=83=D1=8E=D1=89=D0=B8=D0=B9=20=D1=81=20=D1=82?= =?UTF-8?q?=D0=B5=D0=BC=20=D0=B6=D0=B5=20=D0=B8=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BC.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/files.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/deploy/files.js b/deploy/files.js index d742c25..eb3bc23 100644 --- a/deploy/files.js +++ b/deploy/files.js @@ -346,14 +346,27 @@ async function addZipFile(file) { doc_id: zf.doc_id, uploaded: true, status: { kind: 'parsing' } }; - state.files.push(zEntry); - var zIdx = state.files.length - 1; + + // Проверить дубликат по имени + var dup = -1; + for (var dj = 0; dj < state.files.length; dj++) { + if (state.files[dj].name === zf.filename) { dup = dj; break; } + } + + if (dup >= 0) { + // Заменить существующий (как addRegularFile — перезапись) + state.files[dup] = zEntry; + } else { + state.files.push(zEntry); + dup = state.files.length - 1; + } + // Если это первый файл — запомнить contract_id if (!state.contractId && zf.contract_id) state.contractId = zf.contract_id; render(state); // Применить результат парсинга от бэкенда (clean function) - applyParseResult(state.files[zIdx], zf.parsed); + applyParseResult(state.files[dup], zf.parsed); render(state); } } catch(ze) {