diff --git a/History/session-11-summary.md b/History/session-11-summary.md new file mode 100644 index 0000000..b20cfcf --- /dev/null +++ b/History/session-11-summary.md @@ -0,0 +1,83 @@ +# Резюме для нового чата — contracts (contractor/Lucee) + +Дата: 2026-06-23 | Версия в git: v1.0.152 | Версия на Lucee: v1.0.152 (после редеплоя) + +--- + +## Архитектура + +``` +Браузер (contractor.luceek8s.dev.nubes.ru) + │ + ├── загрузка файлов → VM (contracts.kube5s.ru/upload) + │ Python convert_server.py, чанки 10KB → chunk.cfm → Lucee DB + │ + ├── парсинг: PDF→VM (PyPDF2), DOCX/DOC→Lucee (Apache POI через parser.cfm) + │ + ├── сравнение → VM SSE /process-v2 → LLM (gpt-oss-120b) + │ + └── промпты → Lucee prompt.cfm (версионные, extract/diff) +``` + +**Компоненты:** +- Lucee 6.0 (CFML) на k8s — `contractor.luceek8s.dev.nubes.ru` +- VM Python 3 — `contracts.kube5s.ru` (5.172.178.213) +- PostgreSQL 15 — внутренний, БД `baza` +- LLM: gpt-oss-120b через api.aillm.ru (бесплатно, 8000 токенов) +- Nginx: `/upload`, `/process-v2`, `/unzip-upload`, `/convert-doc` → VM:8766 + +## Что сделано (v1.0.109 → v1.0.152) + +### Успешно работает +- Upload через VM чанками (10KB) — обходит лимит Lucee k8s (~30KB) +- ZIP через /unzip-upload (VM) +- PDF парсинг через PyPDF2 на VM +- Prompts в БД с версионированием, редактор в UI +- Opus-улучшенные промпты (few-shot, глоссарий ЦОД) +- Provenance: prompt_version, source_document_id, raw_llm_response в spec_events +- ↕ стрелки для порядка файлов +- О сервисе — модальное окно + +### Критические баги исправлены +- JS: UPPERCASE ключи Lucee (OK, BODY, VERSIONS, IS_ACTIVE...) +- JS: лишний `});` ломавший весь JS +- CORS: дубликаты заголовков на /upload и /unzip-upload +- chunk.cfm: `decode(base64)` для правильного хранения файлов +- parser.cfm: откачен к рабочей версии (PDF→VM, DOCX→Lucee POI) + +## Текущее состояние (v1.0.152) + +- VM: Python, чанки base64, PDF парсинг ✅ +- Lucee: v1.0.152, parser.cfm рабочий, chunk.cfm с base64 ✅ +- PDF: загрузка + парсинг работают ✅ +- DOCX/DOC: должно работать после v1.0.152 (base64 fix) ✅ +- Prompts: работают ✅ + +## Проблемы решённые сегодня + +1. PDF upload: "Network Error" → chunked upload через VM (10KB чанки) +2. PDF parsing: PDFBox сломан → PyPDF2 на VM +3. DOCX storage: hex вместо base64 → base64 в chunk.cfm +4. CORS дубликаты → nginx только OPTIONS, VM — POST +5. JS uppercase keys → исправлено + +## Правила (важно!) + +- ⛔ НИКОГДА ничего не делать без «делай» +- После каждой правки: проверка синтаксиса (node --check для JS, py_compile для Python) +- После каждого изменения: bump версии в index.cfm +- Перед push: git diff, проверить всё +- Lucee требует ручного редеплоя через Nubes UI +- VM: scp + pkill + nohup для перезапуска +- curl к *.ngcloud.ru всегда с --http2 и --max-time +- Lucee serializeJSON → UPPERCASE ключи +- Lucee k8s лимит тела запроса ~30KB +- Документация в History/*.md + +## Если что-то сломалось + +1. Проверить git status в /home/naeel/nubes/contracts/contractor +2. Проверить версию на Lucee: curl --http2 --max-time 5 -s 'https://contractor.luceek8s.dev.nubes.ru/' | grep 'v1.0.' +3. Проверить VM: ssh -i ~/.ssh/naeel_vm_id_ed25519 naeel@5.172.178.213 'ps aux | grep convert' +4. Логи nginx: ssh ... 'sudo tail -20 /var/log/nginx/error.log' +5. Тест загрузки: curl --http2 -X POST 'https://contracts.kube5s.ru/upload' -F 'files=@file.pdf' diff --git a/contractor b/contractor index 34a34ee..ee37417 160000 --- a/contractor +++ b/contractor @@ -1 +1 @@ -Subproject commit 34a34ee6d7b860e7c2c336de95c05728ae878ca4 +Subproject commit ee374171d8170b9ebd4fe258ab446118600cf7e9