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

84 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Резюме для нового чата — 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'