From 3974a032a5c235a9ec38a19aba865579fdc37a68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Wed, 24 Jun 2026 18:42:47 +0400 Subject: [PATCH] =?UTF-8?q?v1.0.176:=20=D1=80=D0=B0=D1=81=D0=BA=D1=80?= =?UTF-8?q?=D1=8B=D0=B2=D0=B0=D1=8E=D1=89=D0=B8=D0=B5=D1=81=D1=8F=20=D1=80?= =?UTF-8?q?=D0=B5=D0=B7=D1=83=D0=BB=D1=8C=D1=82=D0=B0=D1=82=D1=8B=20=D0=BA?= =?UTF-8?q?=D0=BB=D0=B0=D1=81=D1=81=D0=B8=D1=84=D0=B8=D0=BA=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D0=B8=20=D0=BF=D1=80=D1=8F=D0=BC=D0=BE=20=D0=B2=20=D1=82?= =?UTF-8?q?=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/app.js | 61 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 57 insertions(+), 4 deletions(-) diff --git a/deploy/app.js b/deploy/app.js index aac1fd3..f89c4b7 100644 --- a/deploy/app.js +++ b/deploy/app.js @@ -56,22 +56,75 @@ function resetStepper(fromId) { function renderTable() { if (fileQueue.length === 0) { - fileTable.innerHTML = 'Нет файлов — выберите .docx / .pdf'; + fileTable.innerHTML = 'Нет файлов — выберите .docx / .pdf'; } else { fileTable.innerHTML = fileQueue.map(function(f, i) { - return '' + - '' + escHtml(f.name) + '' + + var rows = '' + + '' + + (f.doc_id ? '' : '') + + escHtml(f.name) + '' + '' + formatDate(f.lastModified) + '' + '' + formatSize(f.size) + '' + '' + (f.status || '') + '' + '' + '' + - ''; + '' + + 'Загрузка...'; + return rows; }).join(''); } lucide.createIcons(); } +// ── Раскрыть/скрыть результат классификации под строкой файла ── +window.toggleClassifyDetail = async function(i) { + var detailRow = document.getElementById('detail_' + i); + var expandIcon = document.getElementById('expand_' + i); + if (!detailRow) return; + + if (detailRow.style.display !== 'none') { + detailRow.style.display = 'none'; + if (expandIcon) expandIcon.textContent = '▸'; + return; + } + + var f = fileQueue[i]; + if (!f || !f.doc_id) return; + + detailRow.style.display = ''; + if (expandIcon) expandIcon.textContent = '▾'; + + try { + var resp = await fetch(VM_API + '/api/documents/' + f.doc_id); + var qData = await resp.json(); + if (!qData.ok) { detailRow.cells[0].innerHTML = 'Ошибка загрузки'; return; } + + var html = ''; + if (qData.classify_status === 'classified') { + html += '
🏷️ Результат классификации
'; + html += '
'; + if (qData.doc_type) html += 'Тип: ' + escHtml(qData.doc_type) + ''; + if (qData.own_number) html += 'Номер: ' + escHtml(qData.own_number) + ''; + if (qData.parent_number) html += 'Родительский: ' + escHtml(qData.parent_number) + ''; + if (qData.doc_date) html += 'Дата: ' + escHtml(qData.doc_date) + ''; + if (qData.counterparty) html += 'Контрагент: ' + escHtml(qData.counterparty) + ''; + html += '
'; + if (qData.classify_raw) { + html += '
Сырой ответ LLM'; + html += '
' + escHtml(qData.classify_raw) + '
'; + html += '
'; + } + } else if (qData.classify_status === 'failed') { + html += '✗ Ошибка классификации: ' + escHtml(qData.error_message || '?') + ''; + } else { + html += 'Ещё не классифицирован'; + } + detailRow.cells[0].innerHTML = html; + } catch(e) { + detailRow.cells[0].innerHTML = 'Ошибка: ' + escHtml(e.message) + ''; + } +}; + // moveUp/moveDown/removeFile/openAbout/closeAbout — вынесены в app_utils.js // ── Автозагрузка при выборе файлов ──────────────────────────