Files
contracts/History/session-11-summary.md
T

4.0 KiB
Raw Blame History

Резюме для нового чата — 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'