мс вместо сек, идемпотентность (кнопка блокируется после успеха), v1.9
This commit is contained in:
+3
-3
@@ -221,7 +221,7 @@ class ContractsApp:
|
|||||||
"UPDATE documents SET parsed_text=%s, status='parsed' WHERE id=%s",
|
"UPDATE documents SET parsed_text=%s, status='parsed' WHERE id=%s",
|
||||||
(ztext, str(zdoc_id)),
|
(ztext, str(zdoc_id)),
|
||||||
)
|
)
|
||||||
zelapsed = round(time_mod.time() - zf_start, 1)
|
zelapsed = round(time_mod.time() - zf_start, 2)
|
||||||
files_processed += 1
|
files_processed += 1
|
||||||
yield f"data: {json.dumps({'type': 'file_done', 'name': zname, 'time_s': zelapsed, 'elements': len(zelements)})}\n\n"
|
yield f"data: {json.dumps({'type': 'file_done', 'name': zname, 'time_s': zelapsed, 'elements': len(zelements)})}\n\n"
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@@ -242,11 +242,11 @@ class ContractsApp:
|
|||||||
"UPDATE documents SET parsed_text=%s, status='parsed' WHERE id=%s",
|
"UPDATE documents SET parsed_text=%s, status='parsed' WHERE id=%s",
|
||||||
(text, str(s["doc_id"])),
|
(text, str(s["doc_id"])),
|
||||||
)
|
)
|
||||||
elapsed = round(time_mod.time() - file_start, 1)
|
elapsed = round(time_mod.time() - file_start, 2)
|
||||||
files_processed += 1
|
files_processed += 1
|
||||||
yield f"data: {json.dumps({'type': 'file_done', 'name': s['filename'], 'time_s': elapsed, 'elements': len(elements)})}\n\n"
|
yield f"data: {json.dumps({'type': 'file_done', 'name': s['filename'], 'time_s': elapsed, 'elements': len(elements)})}\n\n"
|
||||||
|
|
||||||
total_time = round(time_mod.time() - start_time, 1)
|
total_time = round(time_mod.time() - start_time, 2)
|
||||||
yield f"data: {json.dumps({'type': 'summary', 'total_time_s': total_time, 'total_bytes': total_bytes, 'files_processed': files_processed})}\n\n"
|
yield f"data: {json.dumps({'type': 'summary', 'total_time_s': total_time, 'total_bytes': total_bytes, 'files_processed': files_processed})}\n\n"
|
||||||
|
|
||||||
return Response(generate(), mimetype="text/event-stream")
|
return Response(generate(), mimetype="text/event-stream")
|
||||||
|
|||||||
@@ -47,7 +47,7 @@
|
|||||||
<body>
|
<body>
|
||||||
<div class="topbar">
|
<div class="topbar">
|
||||||
<img src="{{ url_for('static', filename='nubes-logo.svg') }}" alt="Nubes">
|
<img src="{{ url_for('static', filename='nubes-logo.svg') }}" alt="Nubes">
|
||||||
<span class="title">Сверка договоров <span style="font-weight:400;color:var(--muted);font-size:12px;">v1.8</span></span>
|
<span class="title">Сверка договоров <span style="font-weight:400;color:var(--muted);font-size:12px;">v1.9</span></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
@@ -265,7 +265,7 @@
|
|||||||
var now = Date.now();
|
var now = Date.now();
|
||||||
document.querySelectorAll('.proc-timer').forEach(function(el) {
|
document.querySelectorAll('.proc-timer').forEach(function(el) {
|
||||||
var start = parseInt(el.dataset.start);
|
var start = parseInt(el.dataset.start);
|
||||||
if (start) el.textContent = '⏳ ' + Math.round((now - start) / 1000) + 'с';
|
if (start) el.textContent = '⏳ ' + ((now - start) / 1000).toFixed(1) + 'с';
|
||||||
});
|
});
|
||||||
}, 500);
|
}, 500);
|
||||||
|
|
||||||
@@ -310,7 +310,11 @@
|
|||||||
else if (d.type === 'summary') {
|
else if (d.type === 'summary') {
|
||||||
clearInterval(timerInterval);
|
clearInterval(timerInterval);
|
||||||
es.close();
|
es.close();
|
||||||
resetBtn();
|
|
||||||
|
// Идемпотентность: больше нельзя запустить
|
||||||
|
parseBtn.disabled = true;
|
||||||
|
parseBtn.innerHTML = '<i data-lucide="check" style="width:16px;height:16px;"></i> ✓ Готово';
|
||||||
|
lucide.createIcons();
|
||||||
|
|
||||||
var summaryRow = document.createElement('tr');
|
var summaryRow = document.createElement('tr');
|
||||||
summaryRow.className = 'summary-row';
|
summaryRow.className = 'summary-row';
|
||||||
|
|||||||
Reference in New Issue
Block a user