naeel
|
b807480bdd
|
v1.0.130: about modal — service description, fix slang (допник→допсоглашение)
|
2026-06-23 08:52:40 +04:00 |
|
naeel
|
9f1de520e5
|
v1.0.128: temporarily remove .zip from accepted types until CORS debugged
|
2026-06-23 08:49:19 +04:00 |
|
naeel
|
086c46f8e6
|
v1.0.127: ZIP — XHR.send(file) instead of fetch, same pattern as working uploads
|
2026-06-23 08:45:59 +04:00 |
|
naeel
|
2f066e74e0
|
v1.0.126: fix duplicate CORS — nginx only for OPTIONS, VM for POST response
|
2026-06-23 08:42:39 +04:00 |
|
naeel
|
4f66853447
|
v1.0.125: Sonnet fix — CORS inside nginx if, raw binary ZIP, multipart fallback
|
2026-06-23 08:36:42 +04:00 |
|
naeel
|
402c346021
|
v1.0.124: fix ZIP multipart — email.parser instead of buggy cgi.FieldStorage
|
2026-06-23 08:25:30 +04:00 |
|
naeel
|
bb2811abb0
|
v1.0.123: fix ZIP — cgi.FieldStorage for multipart, CORS on all responses, revert Lucee unzip
|
2026-06-23 08:24:35 +04:00 |
|
naeel
|
f19e0c970f
|
v1.0.122: ZIP unzip in Lucee (unzip.cfm) — no CORS, FileReader→base64→same-origin POST
|
2026-06-23 08:19:09 +04:00 |
|
naeel
|
20e1e0dcb8
|
v1.0.121: fix ZIP — hex-encode file content for PostgreSQL bytea
|
2026-06-23 08:10:38 +04:00 |
|
naeel
|
b20ec58aff
|
v1.0.120: fix ZIP — use FormData on client, parse multipart on VM
|
2026-06-23 08:09:05 +04:00 |
|
naeel
|
5c6fe0da00
|
v1.0.119: fix ZIP — use absolute UNZIP_URL (was relative path → 404)
|
2026-06-23 08:05:17 +04:00 |
|
naeel
|
ebe35dce42
|
v1.0.118: ZIP upload — unzip on VM, add files to queue individually, flat structure only
|
2026-06-23 08:01:04 +04:00 |
|
naeel
|
0944a4c9d1
|
v1.0.117: fix orphaned }); that broke all JS execution
|
2026-06-23 07:37:18 +04:00 |
|
naeel
|
d75f98f842
|
v1.0.116: fix JS — Lucee UPPERCASE keys (ok→OK, body→BODY, versions→VERSIONS, etc.)
|
2026-06-23 07:35:34 +04:00 |
|
naeel
|
93428c9dbe
|
v1.0.115: Opus-improved prompts — few-shot + domain glossary + edge-cases for extract & diff
|
2026-06-23 07:25:59 +04:00 |
|
naeel
|
bd45559b36
|
v1.0.114: source_document_id + raw_llm_response in spec_events — full Opus provenance
|
2026-06-23 07:14:34 +04:00 |
|
naeel
|
b75b206bfe
|
v1.0.113: prompt_version in spec_events — provenance (who created what with which prompt)
|
2026-06-23 07:08:23 +04:00 |
|
naeel
|
534f90a529
|
v1.0.112: fix Lucee UPPERCASE keys in _fetch_prompt (OK→ok, BODY→body)
|
2026-06-23 07:05:29 +04:00 |
|
naeel
|
38f580e658
|
v1.0.111: llm_prompt.py reads active prompt from DB via Lucee API, fallback to hardcoded
|
2026-06-23 07:03:35 +04:00 |
|
naeel
|
69cfb3457b
|
v1.0.110: prompts versioning — DB schema + API + UI (extract/diff tabs, history, activate)
|
2026-06-23 01:06:12 +04:00 |
|
naeel
|
ded5071dae
|
v1.0.109: ↕ arrows replace Базовый radio, order param in SSE, setInitial removed
|
2026-06-23 00:43:33 +04:00 |
|
naeel
|
acec6729b6
|
v1.0.108: advisory lock + NFKC + ID-суррогаты + обогащение ops именами
|
2026-06-23 00:17:41 +04:00 |
|
naeel
|
9deee2af64
|
v1.0.107: bump версии
|
2026-06-22 11:59:32 +04:00 |
|
naeel
|
d7bdd15b3a
|
v1.0.107: fix — cf_sql_varchar для last_event_id (PostgreSQL не кастит char к uuid)
|
2026-06-22 11:59:16 +04:00 |
|
naeel
|
200e86949d
|
v1.0.106: bump версии
|
2026-06-22 11:45:34 +04:00 |
|
naeel
|
98374f67a9
|
v1.0.106: fix — убрал запятую после последнего cfqueryparam в ADD
|
2026-06-22 11:45:18 +04:00 |
|
naeel
|
bb7fd6bbf1
|
Revert "ВРЕМЕННЫЙ ОТКАТ к v1.0.91 — для проверки деплоя. Вернуть через revert."
This reverts commit c4fe57c908.
|
2026-06-22 09:08:26 +04:00 |
|
naeel
|
c4fe57c908
|
ВРЕМЕННЫЙ ОТКАТ к v1.0.91 — для проверки деплоя. Вернуть через revert.
|
2026-06-22 09:06:06 +04:00 |
|
naeel
|
c2a189cc31
|
Revert "v1.0.105: bump версии"
This reverts commit e4524f9e85.
|
2026-06-22 08:57:54 +04:00 |
|
naeel
|
e4524f9e85
|
v1.0.105: bump версии
|
2026-06-22 08:51:02 +04:00 |
|
naeel
|
73a925bc25
|
v1.0.105: проверка ответа reset_contract
|
2026-06-22 08:50:49 +04:00 |
|
naeel
|
9e06364ae4
|
v1.0.104: bump версии
|
2026-06-22 08:36:48 +04:00 |
|
naeel
|
c9a1f608ca
|
v1.0.104: reset_contract + идемпотентность — очистка перед сравнением
|
2026-06-22 08:35:54 +04:00 |
|
naeel
|
82e587613e
|
v1.0.103: bump версии
|
2026-06-22 08:15:15 +04:00 |
|
naeel
|
bb891afdea
|
v1.0.103: шаги 10+11 — массовый INSERT full_replace + UUID тип last_event_id
|
2026-06-22 08:14:53 +04:00 |
|
naeel
|
9a8c41637b
|
v1.0.102: bump версии
|
2026-06-22 08:13:48 +04:00 |
|
naeel
|
150c1d6a09
|
v1.0.102: шаг9 — UNRESOLVED вместо cfthrow при UPDATE target not found
|
2026-06-22 08:13:13 +04:00 |
|
naeel
|
54a1665a8b
|
v1.0.101: шаг8 — batch SELECT для UPDATE вместо N+1
|
2026-06-22 08:12:22 +04:00 |
|
naeel
|
2ab0840011
|
v1.0.100: bump версии
|
2026-06-22 07:52:12 +04:00 |
|
naeel
|
606ab596a1
|
v1.0.100: fix — убрал FOR UPDATE (несовместим с MAX)
|
2026-06-22 07:51:56 +04:00 |
|
naeel
|
c195844466
|
v1.0.99: шаг7 — isNumeric валидация price/qty/sum
|
2026-06-22 07:50:38 +04:00 |
|
naeel
|
aa16b12d53
|
v1.0.98: bump версии
|
2026-06-22 07:49:08 +04:00 |
|
naeel
|
1315838507
|
v1.0.98: шаг6 — elements_json double-decode fix
|
2026-06-22 07:48:01 +04:00 |
|
naeel
|
d39bf7c04f
|
v1.0.97: шаг5 — LLM ключ из env
|
2026-06-22 07:47:02 +04:00 |
|
naeel
|
eaed475437
|
v1.0.96: bump версии
|
2026-06-22 07:43:43 +04:00 |
|
naeel
|
1c2187632b
|
v1.0.96: убрал doc_id/supp_id из показа юзеру
|
2026-06-22 07:43:01 +04:00 |
|
naeel
|
89e787a3ad
|
v1.0.95: восстановление index.cfm + заголовки
|
2026-06-22 07:35:25 +04:00 |
|
naeel
|
56ed3870bb
|
v1.0.95: шаг4 — идемпотентность, проверка supplement уже обработан
|
2026-06-22 07:33:18 +04:00 |
|
naeel
|
69b3808037
|
v1.0.94: шаг3 — guard full_replace с пустым ops
|
2026-06-22 07:28:08 +04:00 |
|
naeel
|
911afabce1
|
v1.0.93: шаг2 — FOR UPDATE на MAX(seq) от race condition
|
2026-06-21 17:28:33 +04:00 |
|
naeel
|
5a95c75459
|
v1.0.92: заголовки + версия
|
2026-06-21 17:27:34 +04:00 |
|
naeel
|
b587b24c7b
|
v1.0.92: шаг1 — SQL-инъекция, валидация UUID
|
2026-06-21 17:22:59 +04:00 |
|
naeel
|
2e56c27338
|
v1.0.91: раскрывающиеся секции с дифф-таблицами в результатах сравнения
|
2026-06-21 16:45:19 +04:00 |
|
naeel
|
42f72e85cd
|
v1.0.90: bump версии
|
2026-06-21 16:42:27 +04:00 |
|
naeel
|
54f4ce9564
|
v1.0.90: заголовок загрузки
|
2026-06-21 16:42:15 +04:00 |
|
naeel
|
441c2fa3ad
|
v1.0.89: убрал v1, оставил только Event Sourcing как Сравнить
|
2026-06-21 16:28:14 +04:00 |
|
naeel
|
2b02eff29b
|
v1.0.88: bump версии
|
2026-06-21 16:16:59 +04:00 |
|
naeel
|
6e53aafdb9
|
v1.0.88: замена файла с тем же именем в таблице при повторной загрузке
|
2026-06-21 16:09:35 +04:00 |
|
naeel
|
7f6c84883e
|
v1.0.87: удаление дубликатов в multipart пути загрузки
|
2026-06-21 15:56:03 +04:00 |
|
naeel
|
b26016fcb1
|
v1.0.86: один fetch elements_json, обе панели — все элементы
|
2026-06-21 09:50:16 +04:00 |
|
naeel
|
febad42e45
|
v1.0.85: правая панель — все элементы полностью (параграфы + таблицы)
|
2026-06-21 09:33:16 +04:00 |
|
naeel
|
0314f14f18
|
v1.0.84: .gitignore pyc
|
2026-06-21 09:31:23 +04:00 |
|
naeel
|
314d78386f
|
v1.0.84: nginx config update
|
2026-06-21 09:30:20 +04:00 |
|
naeel
|
832a25e08f
|
v1.0.84: повторная загрузка удаляет старый документ с тем же filename
|
2026-06-21 09:26:03 +04:00 |
|
naeel
|
a214a0d1e6
|
v1.0.83: XPath //:t и //:tr → .//:t и .//:tr — поиск от параграфа, не от корня
|
2026-06-21 09:24:11 +04:00 |
|
naeel
|
192b4ea0e9
|
v1.0.82: fallback на ZIP/XML при любом пустом результате POI (не только при ошибках)
|
2026-06-21 09:13:06 +04:00 |
|
naeel
|
ec02521a00
|
v1.0.81: bump version
|
2026-06-21 09:05:51 +04:00 |
|
naeel
|
edd2eca0c2
|
v1.0.81: точное совпадение класса XWPFParagraph/XWPFTable — фикс SDTParagraph дублирований
|
2026-06-21 08:59:18 +04:00 |
|
naeel
|
18d1a07aad
|
v1.0.80: bump версии в index.cfm
|
2026-06-21 08:34:55 +04:00 |
|
naeel
|
2a5762d5e7
|
v1.0.80: structNew вместо {...} в парсерах — баг Lucee с переиспользованием struct
|
2026-06-21 08:30:52 +04:00 |
|
naeel
|
0be35bd3db
|
v1.0.79: .doc → XWPF первым (после конвертации), HWPF только fallback
|
2026-06-21 08:07:59 +04:00 |
|
naeel
|
9eaa6d1f08
|
v1.0.78: один столбец Текст вместо View/Инфо, левая=textify, правая=распарсено
|
2026-06-21 07:55:47 +04:00 |
|
naeel
|
c25864ea61
|
v1.0.77: авто-парсинг после загрузки с таймером
|
2026-06-21 07:32:42 +04:00 |
|
naeel
|
e049d28515
|
v1.0.76: фикс uppercase ключей Lucee, заголовки столбцов, красная корзина, Инфо+, столбец Текст с 2-панельной модалкой
|
2026-06-21 07:21:45 +04:00 |
|
naeel
|
fa843bc367
|
fix: раздельные промпты для initial (ADD) и ДС (diff) (v1.0.75)
|
2026-06-20 11:04:33 +04:00 |
|
naeel
|
1ecff7c441
|
v2: SSE через ВМ (process-v2), убрано с Lucee (v1.0.75)
|
2026-06-20 10:52:37 +04:00 |
|
naeel
|
4e20b7760e
|
Phase 3: apply_events.cfm + process.cfm v2 + кнопка v2 (v1.0.74)
|
2026-06-20 10:31:46 +04:00 |
|
naeel
|
7f84c86633
|
nginx: /llm-ops proxy (Phase 2 fix)
|
2026-06-20 10:17:52 +04:00 |
|
naeel
|
2b01109a0c
|
fix: view.cfm empty elements_json check + modal instead of new tab (v1.0.72)
|
2026-06-20 10:02:09 +04:00 |
|
naeel
|
8cd40e3248
|
fix: cftry without cfcatch in parseDOC_POI (v1.0.71)
|
2026-06-20 10:00:59 +04:00 |
|
naeel
|
2ffc24fac1
|
Phase 1: spec_events + spec_current tables (v1.0.70)
|
2026-06-20 09:55:48 +04:00 |
|
naeel
|
bcd937e46f
|
v2 architecture: Sonnet plan + request docs
|
2026-06-20 09:55:10 +04:00 |
|
naeel
|
cb445aeba1
|
view.cfm: предпросмотр первых 15 строк документа (v1.0.69)
|
2026-06-20 09:08:36 +04:00 |
|
naeel
|
7720a1cccc
|
fix: var rowsArr (v1.0.68)
|
2026-06-20 09:03:22 +04:00 |
|
naeel
|
8aa6a3a932
|
parser: POI (XWPFDocument/HWPFDocument) для DOCX/DOC + fallback ZIP/XML (v1.0.67)
|
2026-06-20 08:45:46 +04:00 |
|
naeel
|
9a08218cba
|
fix: q.getColumnNames() → listToArray(q.columnList) (v1.0.66)
|
2026-06-19 11:19:44 +04:00 |
|
naeel
|
e78bec8749
|
fix: String(c).toLowerCase() (v1.0.65)
|
2026-06-19 11:13:09 +04:00 |
|
naeel
|
84bded08b8
|
fix: r[ci] → r[c] (ROWS это объекты, не массивы) (v1.0.64)
|
2026-06-19 11:08:48 +04:00 |
|
naeel
|
9f67c77b95
|
fix: normalize COLUMNS to lowercase через toLowerCase() (v1.0.63)
|
2026-06-19 10:59:09 +04:00 |
|
naeel
|
27a43725cd
|
fix: COLUMNS uppercase → DOCUMENT_ID/ID/TYPE (v1.0.62)
|
2026-06-19 10:58:20 +04:00 |
|
naeel
|
b5be3f96c7
|
debug: console.log в refreshSupps (v1.0.61)
|
2026-06-19 10:51:47 +04:00 |
|
naeel
|
d406639954
|
fix: Lucee serializeJSON даёт UPPERCASE ключи, revert lowercase (v1.0.60)
|
2026-06-19 10:46:57 +04:00 |
|
naeel
|
59b1ad935d
|
fix: все CFML-ключи → lowercase в JS (v1.0.59)
|
2026-06-19 10:42:58 +04:00 |
|
naeel
|
eabe457258
|
fix refreshSupps: lowercase keys (api.cfm возвращает ok/rows/columns) (v1.0.58)
|
2026-06-19 10:36:55 +04:00 |
|
naeel
|
f99fae5a28
|
radio для выбора базового договора + api set_initial (v1.0.57)
|
2026-06-19 10:27:10 +04:00 |
|
naeel
|
bde4ccefea
|
revert: убрал SSE, вернул fetch + добавил skip/DELETE в extractor (v1.0.56)
|
2026-06-19 10:04:22 +04:00 |
|
naeel
|
30fa9d657a
|
CORS для SSE (v1.0.55)
|
2026-06-19 09:55:54 +04:00 |
|
naeel
|
a2507f24bf
|
SSE через ВМ (proxy_buffering off) + nginx config (v1.0.54)
|
2026-06-19 09:50:45 +04:00 |
|
naeel
|
c6108ead6d
|
SSE streaming: прогресс по каждому файлу во время LLM (v1.0.53)
|
2026-06-19 09:40:31 +04:00 |
|
naeel
|
f4a6ceb38b
|
topbar sticky + версия (v1.0.52)
|
2026-06-19 09:23:00 +04:00 |
|