✓ ' + ed.ROWS_SAVED + ' строк
';
- else diffBody.innerHTML += '✗ ' + (ed.ERROR||'') + '
';
- } catch(e) {}
- }
- }
- } catch(e) {}
- // 2. Differ
- diffBody.innerHTML += '📊 Сравнение:
';
- try {
- var resp = await fetch('/differ.cfm?contract_id=' + contractId);
- var data = await resp.json();
- if (data.OK && data.ALL_CHANGES) {
- var all = data.ALL_CHANGES;
+ if (data.OK) {
+ // Показать результаты экстракции
+ var extr = data.EXTRACTED || [];
diffBody.innerHTML = '';
- all.forEach(function(ch) {
- var s = ch.SUMMARY || {};
- diffBody.innerHTML += '📄 Допник (' + ch.TYPE + ')
';
- diffBody.innerHTML += '+' + (s.ADDED||0) + ' ~' + (s.CHANGED||0) + ' -' + (s.DELETED||0) + '
';
- diffStatus.textContent = 'изм:' + (s.CHANGED||0) + ' +' + (s.ADDED||0) + ' -' + (s.DELETED||0);
-
- var changes = ch.CHANGES || [];
- if (changes.length === 0) {
- diffBody.innerHTML += 'Нет изменений
';
+ extr.forEach(function(e) {
+ if (e.ERROR) {
+ diffBody.innerHTML += '✗ ' + (e.FILENAME||e.SUPPLEMENT_ID) + ': ' + e.ERROR + '
';
+ } else if (e.SKIPPED) {
+ diffBody.innerHTML += '⏭ ' + (e.FILENAME||e.SUPPLEMENT_ID) + ' (уже извлечено, ' + e.ROWS_SAVED + ' строк)
';
} else {
- var tbl = '| № | Услуга | Цена | Объём | Сумма | Начало |
|---|---|---|---|---|---|
| ' + (c.ROW_NUM||'') + ' | ' + (vals.NAME||'') + ' | ' + _dc(c,'PRICE') + ' | ' + _dc(c,'QTY') + ' | ' + _dc(c,'SUM') + ' | ' + (vals.DATE_START||'') + ' |
✓ ' + (e.FILENAME||e.SUPPLEMENT_ID) + ': ' + e.ROWS_SAVED + ' строк
';
}
});
+
+ // Сравнение
+ diffBody.innerHTML += '📊 Сравнение:
';
+ var all = data.ALL_CHANGES || [];
+ if (all.length === 0) {
+ diffBody.innerHTML += 'Нет допников для сравнения.
';
+ } else {
+ all.forEach(function(ch) {
+ var s = ch.SUMMARY || {};
+ diffBody.innerHTML += '📄 Допник (' + ch.TYPE + ')
';
+ diffBody.innerHTML += '+' + (s.ADDED||0) + ' ~' + (s.CHANGED||0) + ' -' + (s.DELETED||0) + '
';
+ diffStatus.textContent = 'изм:' + (s.CHANGED||0) + ' +' + (s.ADDED||0) + ' -' + (s.DELETED||0);
+
+ var changes = ch.CHANGES || [];
+ if (changes.length === 0) {
+ diffBody.innerHTML += 'Нет изменений
';
+ } else {
+ var tbl = '| № | Услуга | Цена | Объём | Сумма | Начало |
|---|---|---|---|---|---|
| ' + (c.ROW_NUM||'') + ' | ' + (vals.NAME||'') + ' | ' + _dc(c,'PRICE') + ' | ' + _dc(c,'QTY') + ' | ' + _dc(c,'SUM') + ' | ' + (vals.DATE_START||'') + ' |
✗ ' + (data.ERROR||'') + '
';
+ diffBody.innerHTML = '✗ ' + (data.ERROR||'Неизвестная ошибка') + '
';
}
- } catch(e) { diffBody.innerHTML += '✗ ' + e.message + '
'; }
+ } catch(e) {
+ diffBody.innerHTML = '✗ ' + e.message + '
';
+ }
clearInterval(timerInterval);
diffStatus.textContent = '✓ ' + ((Date.now() - llmStart) / 1000).toFixed(1) + 'с';
diff --git a/process.cfm b/process.cfm
new file mode 100644
index 0000000..af6f0de
--- /dev/null
+++ b/process.cfm
@@ -0,0 +1,289 @@
+