Commit Graph
100 Commits
Author SHA1 Message Date
naeel 909468b5b7 feat: трёхэтапный фильтр мусора — этапы 1-2 (0 токенов) в classify.py 2026-06-27 13:16:30 +04:00
naeel a474b4324b fix: убрать хардкод API-ключа (chat.cfm), verify=True (llm.py), отвязать llm_prompt от Lucee 2026-06-27 13:06:21 +04:00
naeel 465be4ca04 fix: PyPDF2 → pdfplumber — сохраняет структуру таблиц в PDF 2026-06-27 13:04:47 +04:00
naeel d95c17cc18 v1.0.178: [ZIP] в группах — показываем zip_source рядом с именем файла 2026-06-26 10:08:56 +04:00
naeel 2764ab1cb5 v1.0.178: группировка по ZIP в renderFiles — заголовок-секция 📦 + отступ 24px для вложенных файлов 2026-06-26 09:53:07 +04:00
naeel 4e59c83699 v1.0.178: zip_source — БД, Python, JS. Дедупликация по паре (zip_source, name). addZipFile передаёт имя архива. 2026-06-26 09:48:18 +04:00
naeel 08779c3938 v1.0.178: P0 — улучшены промпты classify и diff. Classify: блок НУБЕС=Исполнитель, parent_number=null для contract, примеры doc_type=other, 3 few-shot примера. Diff: UNRESOLVED вместо ADD при сомнении. 2026-06-26 09:44:31 +04:00
naeel f143894e10 v1.0.178: fix async classify polling — frontend ждёт done>=total через batch-progress, fix путь логов 2026-06-25 14:41:41 +04:00
naeel 4e9dd94433 v1.0.178: логи + lock-файл + guard от двойного classify. Ответ Опуса: минимум сейчас. 2026-06-25 13:29:06 +04:00
naeel aa1b801e94 v1.0.178: classify → subprocess.Popen (classify_worker.py). Изолированный процесс — свои коннекты к БД. HTTP-сервер продолжает отвечать. 2026-06-25 13:14:39 +04:00
naeel 88039fb750 v1.0.178: classify-batch → async (202 Accepted + background thread). При 69 файлах БД задыхается. 2026-06-25 12:18:20 +04:00
naeel 2a5f255c7b v1.0.178: скролл таблицы файлов — max-height:50vh, overflow-y:auto 2026-06-25 11:14:53 +04:00
naeel 9a19b10708 v1.0.178: fix zipIdx → zipEntry (ссылка на объект). ZIP temp entry держится до конца обработки. 2026-06-25 10:36:23 +04:00
naeel 91f22137d7 v1.0.178: fix — onFilesSelected больше не удаляет существущие файлы. reconcileSelection убрана из оркестратора. Файлы из ZIP/предыдущих загрузок сохраняются при добавлении новых. 2026-06-25 10:33:36 +04:00
naeel 60dd40cf05 v1.0.178: унификация ZIP. addZipFile → base64→File→addRegularFile (единый путь). confirm() при дубликате. unzip.py — только распаковка, без БД. 2026-06-25 10:16:06 +04:00
naeel b013c79190 v1.0.178: fix unzip — xhr.send(file) → FormData. Бэкенд ждёт multipart (ищет \r\n\r\n + PK magic), а не сырой файл. 2026-06-25 10:08:16 +04:00
naeel 9b129c3707 v1.0.178: fix двойной проверки дубликатов в addZipFile + console.error для диагностики unzip 2026-06-25 10:06:51 +04:00
naeel 613a154c2b v1.0.178: ZIP в диалоге выбора + предупреждение о перезаписи. accept=.zip, ⚠ под input, инфо в «О сервисе». 2026-06-25 09:51:30 +04:00
naeel 0f6f102664 v1.0.178: addZipFile — дубликаты из ZIP теперь перезаписываются (как addRegularFile). Унифицировано поведение: файл из архива заменяет существующий с тем же именем. 2026-06-25 09:50:06 +04:00
naeel b25c58ae29 v1.0.178: расширенные тесты (131 шт) + чистка app.js. 53 новых теста: краевые случаи statusToHTML, applyParseResult, reconcileSelection, renderGroupCard(*), applyCompareEvent, renderCompareOpsTable, escHtml. Убран неиспользуемый SITE_URL, дубль UNZIP_URL, дубль promptEditor. 2026-06-25 09:42:38 +04:00
naeel 9c08af6a1d v1.0.178: убрал неиспользуемую llmStart после Фазы 3 2026-06-25 09:36:34 +04:00
naeel 691549223f v1.0.178: тесты чистых функций. 78 тестов: statusToHTML, applyParseResult, reconcileSelection, renderGroupCard(*), applyCompareEvent, renderCompareSectionHeader/Body, renderCompareOpsTable. Все PASS. 2026-06-25 09:28:15 +04:00
naeel 7e76224203 v1.0.178: Фаза 4 — renderStepper(state). Степпер через state.ui.steps вместо прямой манипуляции DOM. stepDone/stepActive/resetStepper мутируют state → renderStepper. 2026-06-25 09:25:15 +04:00
naeel c9d55b3d80 v1.0.178: Фаза 3 — compare.js. applyCompareEvent, startCompareSSE, renderCompareOpsTable. ~160 строк дублирования SSE → ~60 строк общих + 2 тонких вызова в runCompareForGroup и llmBtn. 2026-06-25 09:24:26 +04:00
naeel e7917c8af5 v1.0.178: Фаза 2 — groups.js. loadGroupsAction + renderGroups + renderGroupCard + renderGroupCardDone. markGroupDone удалена, готовность = group.compare.status === 'done'. renderGroups пересобирает ВСЕ карточки из state.groups. 2026-06-25 09:15:54 +04:00
naeel ba9a833ce8 v1.0.178: Фаза 1.4 — разбит fileInput handler. Чистые функции: reconcileSelection, applyParseResult. Async-actions: addZipFile, addRegularFile. Оркестратор: onFilesSelected (15 строк). finalizeUpload. app.js fileInput listener: 4 строки. 2026-06-25 08:59:17 +04:00
naeel 67658d0ef1 v1.0.178: Фаза 1.3 — вынос в files.js. statusToHTML, renderFiles, syncDB, toggleClassifyDetail, uploadFile, refreshSupps → files.js. app.js похудел на ~200 строк. index.cfm грузит files.js. 2026-06-25 08:57:22 +04:00
naeel 3200ce749b v1.0.178: Фаза 1.2 — renderTable → renderFiles(state). render(state) теперь вызывает renderFiles(state). Имя отражает ответственность — рендерит ТОЛЬКО таблицу файлов. 2026-06-25 08:54:58 +04:00
naeel 9dd1afd832 v1.0.178: Фаза 1.1 — statusToHTML. Статусы из HTML-строк в структуры {kind,pct,text,count,elapsed}. Чистая функция statusToHTML(st). renderTable использует statusToHTML(f.status). 2026-06-25 08:54:39 +04:00
naeel 7490568b4b v1.0.178: Фаза 0 — state + render(state). Введён state.js (центральное состояние), render(state) вызывает renderTable(). fileQueue/contractId/batchId/_activeCompare → state.*. app_utils.js адаптирован. Подробные комментарии из decoupling-final-plan.md. 2026-06-25 08:44:52 +04:00
naeel b994da8c4c v1.0.177: inline onclick на diff-section-header — переживает markGroupDone 2026-06-24 20:25:07 +04:00
naeel 6806ee5027 v1.0.177: клик на файл сам переключает diff-section-body (addEventListener теряется) 2026-06-24 20:19:21 +04:00
naeel 332fad2e1a v1.0.177: клик на имя файла в обработанной группе — раскрыть/свернуть результаты 2026-06-24 20:18:29 +04:00
naeel 84898e10d6 v1.0.177: необработанная — только кнопка; обработанная — только раскрытие 2026-06-24 20:08:09 +04:00
naeel 38ade38573 v1.0.177: markGroupDone сохраняет HTML результатов — раскрытие работает 2026-06-24 20:05:02 +04:00
naeel 5955c03677 v1.0.177: buildGroupCard + markGroupDone — разная вёрстка для необработанных и готовых 2026-06-24 20:02:46 +04:00
naeel 08220fa4b9 v1.0.177: группы независимы — изменения в одной не касаются других 2026-06-24 20:01:14 +04:00
naeel fa06c758f4 v1.0.177: Готово НЕ сбрасывается при сравнении другой группы 2026-06-24 19:57:55 +04:00
naeel 0562c16897 v1.0.177: блокировка ВСЕХ кнопок сравнения пока идёт процесс 2026-06-24 19:52:23 +04:00
naeel 7f6d912010 v1.0.177: Готово → span, не кнопка — нельзя перезапустить сравнение 2026-06-24 19:47:34 +04:00
naeel a58df099b6 trigger Lucee redeploy v1.0.177 2026-06-24 19:40:09 +04:00
naeel 7a780e457e v1.0.177: Готово — disabled + data-done, клик не перезапускает 2026-06-24 19:37:58 +04:00
naeel 498bee90d8 v1.0.177: сравнение внутри карточки группы, только одно одновременно 2026-06-24 19:34:00 +04:00
naeel c223fc04c0 v1.0.177: О сервисе — полная инструкция с промежуточными результатами 2026-06-24 19:30:50 +04:00
naeel 2a566869aa v1.0.176: classify_input + elements_json в промежуточных результатах 2026-06-24 19:23:34 +04:00
naeel 3974a032a5 v1.0.176: раскрывающиеся результаты классификации прямо в таблице 2026-06-24 18:42:47 +04:00
naeel 3f58f6adcd v1.0.176: FOR UPDATE fix — ORDER BY LIMIT 1 вместо MAX() 2026-06-24 18:37:48 +04:00
naeel d44f8f3e6c v1.0.176: fix self.path → urlparse for ?v= cache bust 2026-06-24 18:27:17 +04:00
naeel 0b27832292 v1.0.176: X-Content-Type-Options nosniff for ORB fix 2026-06-24 18:23:19 +04:00
naeel 8953af0c19 v1.0.176: version bump + cache bust 2026-06-24 18:08:35 +04:00
naeel b26728d9da v1.0.176: remove verify=False — MITM fix 2026-06-24 18:07:44 +04:00
naeel a36c8fa2bf v1.0.176: prompts — seed per-role + _serialize non-mutating 2026-06-24 18:07:02 +04:00
naeel 0e0939bb32 v1.0.176: spec_events — FOR UPDATE + transaction for seq race 2026-06-24 18:06:05 +04:00
naeel cd5ba7470e v1.0.176: spec_current cascade fix + keep_ids DoS limit 2026-06-24 18:04:59 +04:00
naeel 044a83a43d v1.0.176: grouping.py — apply_groups error handling + doc_id null check 2026-06-24 18:04:05 +04:00
naeel 780e52d072 v1.0.176: XSS ×5 fix + syncDB await + escHtml(null) 2026-06-24 18:03:12 +04:00
naeel 666f85b743 v1.0.176: upload.py — path traversal + size limit + UUID + data loss 2026-06-24 18:01:18 +04:00
naeel 60dc41e83f v1.0.175: общее сравнение → compareCard, diffBody только для групп 2026-06-24 17:42:31 +04:00
naeel 8267149190 v1.0.175: cache busting ?v=1.0.175 на скрипты 2026-06-24 17:40:36 +04:00
naeel f205f0f547 v1.0.175: compareCard отдельно от diffCard — группы не исчезают при сравнении 2026-06-24 17:39:19 +04:00
naeel 475d0b8dc7 v1.0.175: виртуальные группы + classify_raw + stepper 2026-06-24 17:06:25 +04:00
naeel b5d35f57fc v1.0.174: reset/list_pending без фильтра status=parsed 2026-06-24 15:21:17 +04:00
naeel e939c320cc v1.0.174: classify_batch сбрасывает статус на pending — работает после удаления файлов 2026-06-24 15:17:45 +04:00
naeel 592041ab89 v1.0.174: 'файлов не распознано' вместо 'не распознано' 2026-06-24 15:13:32 +04:00
naeel 70a7c8bfb4 v1.0.174: /api/sync — БД = зеркало таблицы, удаление ВСЕГО кроме keep_ids 2026-06-24 15:11:57 +04:00
naeel b19e6ba06e v1.0.174: fix groups count — не считаем __unresolved__ за группу 2026-06-24 15:03:17 +04:00
naeel b325a6b2c2 v1.0.174: sync-batch — удаление мусора после загрузки, DELETE /api/documents/<id> 2026-06-24 14:59:46 +04:00
naeel 7538c0a5c9 v1.0.174: fix FK cascade in delete_by_document — spec_current → spec_events → supplement → document 2026-06-24 14:50:31 +04:00
naeel ef4536a437 v1.0.174: classify tab in prompts UI — activePromptId + openPromptModal 2026-06-24 14:43:22 +04:00
naeel cf4fc016bd v1.0.174: fix \n → real newlines в seed-промптах (parameterized queries) 2026-06-24 14:40:38 +04:00
naeel f693acce6f v1.0.174: пояснения 'для чего' к кнопкам промптов 2026-06-24 14:33:58 +04:00
naeel c98f190cbc v1.0.173: О сервисе в топбар, новый контент — инструкция без упоминания Lucee/VM 2026-06-24 14:32:36 +04:00
naeel 9cc6e43868 v1.0.172: вкладка classify в редакторе промптов 2026-06-24 14:29:36 +04:00
naeel b49523677c v1.0.171: detailed SSE results for group compare 2026-06-24 14:07:31 +04:00
naeel cbdfc7a8c1 v1.0.171: ▶ Сравнить группу via SSE + classify timer/progress 2026-06-24 13:55:22 +04:00
naeel e0cff8d85f v1.0.170: green dot instead of checkmark for active prompt 2026-06-24 13:49:43 +04:00
naeel 7cbfdc9589 v1.0.170: show prompt notes in history 2026-06-24 13:47:23 +04:00
naeel 6f2c0fd910 v1.0.170: simple text buttons — активировать / удалить 2026-06-24 13:45:20 +04:00
naeel c21a50cd14 v1.0.170: clear activate/delete buttons with lucide icons 2026-06-24 13:43:37 +04:00
naeel 15bd4ad322 v1.0.170: fix prompts list — datetime serialization 2026-06-24 13:32:13 +04:00
naeel e2348eaf4e v1.0.170: remove fake drag-drop text 2026-06-24 13:28:02 +04:00
naeel 1aa22767ef v1.0.170: допник → допсоглашение 2026-06-24 13:19:08 +04:00
naeel d848caacb2 v1.0.170: UI — Общее сравнение, Классификация и группы, пояснения для нераспознанных 2026-06-24 13:17:50 +04:00
naeel abba9c4f1d v1.0.169: prompts CRUD via VM API — /api/prompts, no more prompt.cfm dependency 2026-06-24 10:27:59 +04:00
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