From 3c05acd338539317fd7c1f6a3434802aab1f1a61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Tue, 23 Jun 2026 12:42:00 +0400 Subject: [PATCH] v1.0.150: bump version + revert parser.cfm --- index.cfm | 56 ++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 43 insertions(+), 13 deletions(-) diff --git a/index.cfm b/index.cfm index c499617..7d2e581 100644 --- a/index.cfm +++ b/index.cfm @@ -75,7 +75,7 @@
Nubes - Сверка договоров — LLM AI-driven Event Sourcing v1.0.149 — Lucee + Сверка договоров — LLM AI-driven Event Sourcing v1.0.150 — Lucee
@@ -339,14 +339,26 @@ fileInput.addEventListener('change', async function() { if (!contractId && zf.contract_id) contractId = zf.contract_id; renderTable(); - // Авто-парсинг — VM уже распарсила - var zt0 = Date.now(); - var zelapsed = ((Date.now() - zt0) / 1000).toFixed(1); - if (zf.PARSED && zf.PARSED.STATUS === 'parsed') { + // Авто-парсинг + var zIsPdf = zf.filename && zf.filename.toLowerCase().endsWith('.pdf'); + if (zIsPdf && zf.PARSED && zf.PARSED.STATUS === 'parsed') { fileQueue[zIdx].parsed = true; - fileQueue[zIdx].status = '✓ ' + zf.PARSED.ELEMENT_COUNT + ' эл. (' + zelapsed + 'с)'; - } else { + fileQueue[zIdx].status = '✓ ' + zf.PARSED.ELEMENT_COUNT + ' эл.'; + } else if (zIsPdf) { fileQueue[zIdx].status = '✗ ' + ((zf.PARSED && zf.PARSED.ERROR) || 'ошибка') + ''; + } else { + try { + var zpr = await fetch('/parser.cfm?doc_id=' + zf.doc_id); + var zpd = await zpr.json(); + if (zpd.OK && zpd.STATUS === 'parsed') { + fileQueue[zIdx].parsed = true; + fileQueue[zIdx].status = '✓ ' + zpd.ELEMENT_COUNT + ' эл.'; + } else { + fileQueue[zIdx].status = '✗ ' + (zpd.ERROR_COUNT > 0 ? (zpd.ERRORS && zpd.ERRORS[0] || 'ошибка') : 'ошибка') + ''; + } + } catch(zpe) { + fileQueue[zIdx].status = '✗ парсинг: сеть'; + } } renderTable(); } @@ -383,17 +395,35 @@ fileInput.addEventListener('change', async function() { fileQueue[rowIdx].status = ''; fileQueue[rowIdx].uploaded = true; - // Авто-парсинг — VM уже распарсила, берём из ответа + // Авто-парсинг: PDF → VM, остальное → Lucee parser.cfm + var isPdf = f.name.toLowerCase().endsWith('.pdf'); var t0 = Date.now(); - var elapsed = ((Date.now() - t0) / 1000).toFixed(1); - if (resp.PARSED && resp.PARSED.STATUS === 'parsed') { + if (isPdf && resp.PARSED && resp.PARSED.STATUS === 'parsed') { + var elapsed = ((Date.now() - t0) / 1000).toFixed(1); fileQueue[rowIdx].parsed = true; fileQueue[rowIdx].parseInfo = resp.PARSED; fileQueue[rowIdx].status = '✓ ' + resp.PARSED.ELEMENT_COUNT + ' эл. (' + elapsed + 'с)'; + } else if (isPdf) { + fileQueue[rowIdx].status = '✗ ' + ((resp.PARSED && resp.PARSED.ERROR) || 'ошибка') + ''; } else { - var errMsg = (resp.PARSED && resp.PARSED.ERROR) || 'ошибка'; - fileQueue[rowIdx].status = '✗ ' + errMsg + ''; - fileQueue[rowIdx].parseInfo = resp.PARSED; + // DOCX/DOC → Lucee Apache POI + fileQueue[rowIdx].status = '⏳ парсинг...'; + renderTable(); + try { + var pr = await fetch('/parser.cfm?doc_id=' + resp.DOC_ID); + var pd = await pr.json(); + var elapsed = ((Date.now() - t0) / 1000).toFixed(1); + if (pd.OK && pd.STATUS === 'parsed') { + fileQueue[rowIdx].parsed = true; + fileQueue[rowIdx].parseInfo = pd; + fileQueue[rowIdx].status = '✓ ' + pd.ELEMENT_COUNT + ' эл. (' + elapsed + 'с)'; + } else { + fileQueue[rowIdx].status = '✗ ' + (pd.ERROR_COUNT > 0 ? (pd.ERRORS && pd.ERRORS[0] || 'ошибка') : 'ошибка') + ''; + fileQueue[rowIdx].parseInfo = pd; + } + } catch(pe) { + fileQueue[rowIdx].status = '✗ парсинг: сеть'; + } } } catch(err) { fileQueue[rowIdx].status = '✗ ' + err.message + '';