naeel
|
dd558e00e7
|
v1.0.168: detailed О сервисе — architecture, pipeline, Event Sourcing, security
|
2026-06-24 10:22:41 +04:00 |
|
naeel
|
115e71b2a1
|
v1.0.167: fix grouping dead code (classified→docs) + max_tokens 500→1000
|
2026-06-24 09:35:42 +04:00 |
|
naeel
|
49c472b46d
|
v1.0.166: aggressive JSON repair — close unterminated strings/braces
|
2026-06-24 09:14:07 +04:00 |
|
naeel
|
d0326ee9ce
|
v1.0.166: fix missing _smart_extract function
|
2026-06-24 09:09:26 +04:00 |
|
naeel
|
c2c92d0a37
|
v1.0.166: classify prompt v2 (LLM-suggested) + safe JSON parse with auto-repair
|
2026-06-24 09:04:31 +04:00 |
|
naeel
|
fe1f76fa1d
|
v1.0.165: app_utils.js + detailed comments (Opus analysis) in classify/grouping/connection
|
2026-06-24 08:46:40 +04:00 |
|
naeel
|
d86a369d2b
|
v1.0.164: remove ↕ column — auto-classify determines order
|
2026-06-24 08:41:15 +04:00 |
|
naeel
|
8a5d93a5c7
|
v1.0.163: classify UI — batch_id, Классифицировать button, group cards
|
2026-06-24 08:27:29 +04:00 |
|
naeel
|
eb98790802
|
v1.0.162: /api/classify-batch + batch_id UUID validation
|
2026-06-24 08:23:40 +04:00 |
|
naeel
|
7a96f5b95b
|
v1.0.162: auto-classify backend — classify/grouping services, 7 new columns, /classify-batch, /api/groups, /apply-groups
|
2026-06-24 08:22:21 +04:00 |
|
naeel
|
740f75a791
|
v1.0.161: cgi.FieldStorage for UTF-8 filenames
|
2026-06-23 21:09:27 +04:00 |
|
naeel
|
e4cbc59f7e
|
v1.0.161: LLM_KEY fallback to LLM_API_KEY
|
2026-06-23 21:02:33 +04:00 |
|
naeel
|
c74be9782a
|
v1.0.161: nginx /api/ → Python :8766
|
2026-06-23 18:58:08 +04:00 |
|
naeel
|
15ea2325da
|
v1.0.161: fix app.js — remove HTML tags, parseInfo lowercase keys
|
2026-06-23 18:01:46 +04:00 |
|
naeel
|
ca01247fc0
|
v1.0.160: bump version
|
2026-06-23 17:49:40 +04:00 |
|
naeel
|
493d75e51a
|
v1.0.159: /static/app.js (nginx location / matches)
|
2026-06-23 17:30:25 +04:00 |
|
naeel
|
4b0e5c04de
|
v1.0.159: fix app.js path
|
2026-06-23 17:23:26 +04:00 |
|
naeel
|
9b23148c16
|
v1.0.159: SO_REUSEADDR + app.js via Python
|
2026-06-23 17:17:58 +04:00 |
|
naeel
|
79b6554316
|
v1.0.159: serve app.js via Python (nginx alias not working)
|
2026-06-23 17:16:23 +04:00 |
|
naeel
|
04ca79a489
|
v1.0.159: JS extracted to app.js on VM — Lucee is now HTML shell only (191 lines)
|
2026-06-23 17:15:03 +04:00 |
|
naeel
|
a788e9e23d
|
v1.0.158: fix r.OK→r.ok (Python lowercase) + add /convert-doc endpoint
|
2026-06-23 17:00:49 +04:00 |
|
naeel
|
ddc0a8b42d
|
v1.0.157: VM API /api/supplements + /api/documents — index.cfm no longer calls Lucee api.cfm
|
2026-06-23 16:40:19 +04:00 |
|
naeel
|
3a93c48907
|
v1.0.156: fix index.cfm — lowercase Python API keys, no parser.cfm calls
|
2026-06-23 16:17:31 +04:00 |
|
naeel
|
ee374171d8
|
v1.0.155: VM PostgreSQL + modular db/ & services/ — Lucee stays SPA shell only
|
2026-06-23 16:01:26 +04:00 |
|
naeel
|
568758a23c
|
v1.0.154: overwrite existing file on re-upload (same filename+contract → DELETE old before INSERT)
|
2026-06-23 15:34:51 +04:00 |
|
naeel
|
17742d51b4
|
v1.0.153: fix double base64 decode — chunk.cfm stores base64 string, parser.cfm decodes it
|
2026-06-23 15:26:51 +04:00 |
|
naeel
|
e0d7346080
|
v1.0.152: bump version
|
2026-06-23 15:15:27 +04:00 |
|
naeel
|
0d266d43c2
|
v1.0.152: base64 chunks (parser expects base64)
|
2026-06-23 15:11:52 +04:00 |
|
naeel
|
cdaee4509d
|
v1.0.151: bump version
|
2026-06-23 15:01:06 +04:00 |
|
naeel
|
f7cecc6ce3
|
v1.0.151: fix chunk assemble — decode hex to binary before storing
|
2026-06-23 12:45:12 +04:00 |
|
naeel
|
3c05acd338
|
v1.0.150: bump version + revert parser.cfm
|
2026-06-23 12:42:00 +04:00 |
|
naeel
|
2e15228160
|
v1.0.150: revert parser.cfm to working v1.0.144 (PDF→VM, DOCX→Lucee POI)
|
2026-06-23 12:37:44 +04:00 |
|
naeel
|
34a34ee6d7
|
v1.0.149: bump version
|
2026-06-23 12:24:52 +04:00 |
|
naeel
|
9351347a11
|
v1.0.149: VM parses PDF + stores elements_json in Lucee
|
2026-06-23 12:22:05 +04:00 |
|
naeel
|
2399b01a26
|
v1.0.148: PDF parsing via PyPDF2 on VM (replaces broken PDFBox on Lucee)
|
2026-06-23 12:18:48 +04:00 |
|
naeel
|
6c288b2b0e
|
v1.0.147: bump version
|
2026-06-23 12:11:25 +04:00 |
|
naeel
|
ea3299df80
|
v1.0.147: PDFBox — load(byte[]) instead of streams/files
|
2026-06-23 12:09:37 +04:00 |
|
naeel
|
73b647f58d
|
v1.0.146: PDFBox — use PDFParser instead of PDDocument.load
|
2026-06-23 12:08:10 +04:00 |
|
naeel
|
bf25600f56
|
v1.0.145: PDFBox — write to temp file, load via File
|
2026-06-23 12:03:46 +04:00 |
|
naeel
|
a6c2c58948
|
v1.0.144: fix PDFBox — use ByteArrayInputStream for PDDocument.load + bump version
|
2026-06-23 12:00:38 +04:00 |
|
naeel
|
bb44378ad8
|
v1.0.144: fix duplicate CORS /upload
|
2026-06-23 11:55:20 +04:00 |
|
naeel
|
064774e020
|
v1.0.143: chunked upload 10KB — restore after Lucee limit still ~30KB
|
2026-06-23 11:42:08 +04:00 |
|
naeel
|
800ae657f6
|
v1.0.142: direct upload — one piece, Lucee k8s limits increased
|
2026-06-23 11:33:21 +04:00 |
|
naeel
|
9b11b62b7f
|
v1.0.141: verify=False + nginx 300s timeout for chunked upload
|
2026-06-23 10:10:02 +04:00 |
|
naeel
|
6b984d5a13
|
v1.0.140: larger chunks 20KB to reduce TLS overhead
|
2026-06-23 09:16:28 +04:00 |
|
naeel
|
d493d77017
|
v1.0.139: separate HTTP/2 client per chunk (Lucee resets stream)
|
2026-06-23 09:14:05 +04:00 |
|
naeel
|
948ec626c9
|
v1.0.138: single httpx client for all chunks
|
2026-06-23 09:12:21 +04:00 |
|
naeel
|
f04f698bd8
|
v1.0.137: fix chunk upload — use httpx.Client(http2=True) for ddos-guard
|
2026-06-23 09:11:34 +04:00 |
|
naeel
|
efc270bdf3
|
v1.0.136: chunked upload via chunk.cfm — 12KB chunks avoid Lucee body limit
|
2026-06-23 09:09:38 +04:00 |
|
naeel
|
ec842abb92
|
v1.0.135: fix HTTP header order — send_response before _send_cors
|
2026-06-23 09:06:04 +04:00 |
|
naeel
|
21914d1763
|
v1.0.134: ALL uploads through VM — /upload proxy avoids Lucee multipart crash
|
2026-06-23 09:04:47 +04:00 |
|
naeel
|
9c7a5a9975
|
v1.0.133: full about modal + fix slang in History
|
2026-06-23 08:59:10 +04:00 |
|
naeel
|
76dcc07dce
|
v1.0.132: fix — дополнительный документ everywhere
|
2026-06-23 08:54:11 +04:00 |
|
naeel
|
7897574366
|
v1.0.131: fix — дополнительный документ
|
2026-06-23 08:53:12 +04:00 |
|
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 |
|