3.4 KiB
3.4 KiB
Резюме сессии — v1.0.177
Текущее состояние
Проект: contracts — сверка договоров через LLM. Домен: colocation, ЦОД, аренда стоек.
- Фронт: index.cfm (Lucee, ручной деплой) + app.js (~50KB) + app_utils.js (~4KB) с ВМ (contracts.kube5s.ru)
- Бэкенд: Python http.server на ВМ (5.172.178.213:8766), systemd-сервис
contracts - БД: PostgreSQL, прямой доступ psycopg2
- LLM: gpt-oss-120b через api.aillm.ru
Что сделано за сессию
Аудит безопасности (Sonnet) — все CRITICAL/HIGH исправлены
- XSS ×5: escHtml на все данные от LLM
- Path traversal: os.path.basename(), лимит 100MB
- UUID валидация: contract_id, batch_id, doc_id
- FK cascade: spec_current точечно, не весь контракт
- Race conditions: seq (FOR UPDATE + транзакция), prompts (seed per-role)
- MITM: verify=False убран
Функционал
- Виртуальные группы: группировка без базового договора (по parent_number/own_number)
- Промежуточные результаты: клик на имя файла → 📤 текст в LLM, 📥 ответ, 📄 распарсенный JSON
- Сравнение в карточке: раскрывается внутри группы, не в конце страницы
- Два состояния групп: необработанная (кнопка) vs обработанная (✓ Готово, только сворачивание)
- Одно сравнение одновременно: все кнопки блокируются, предыдущий ES закрывается
- Stepper: ○ Загрузка → ○ Классификация → ○ Группировка → ○ Сравнение в топбаре
- «О сервисе»: полная инструкция
Организация
history/+History/→History/{sessions,llm-analysis,architecture,features,topics}- Ветка
v1.0.177-stableсохранена
Ключевые файлы для контекста
contractor/deploy/app.js— фронтенд (~1040 строк)contractor/deploy/app_utils.js— утилитыcontractor/index.cfm— HTML (v1.0.177, ?v=1.0.177 для cache bust)contractor/deploy/convert_server.py— бэкенд-роутерcontractor/deploy/db/*.py— CRUDcontractor/deploy/services/*.py— логика
План на следующий чат
Рефакторинг: store + render. Файл: History/llm-analysis/decoupling-final-plan.md
Фаза 0 (ближайшая): ввести state, render(state), соглашение «мутировал → render()». Без смены поведения.
Правила (из памяти)
- ⛔ Без «делай» — ничего не делать
- ⛔ После каждого изменения — проверка (node -c / py_compile)
- ⛔ После каждой правки — коммит
- ⛔ Lucee — ручной деплой (не автоматический)
- ⛔ JS + Python — деплой через scp на ВМ
- ⛔ Оба репо коммитить: contracts (родительский) + contractor (подмодуль)