Files
contracts/History/sessions/session-13-vm-sse-architecture.md

2.8 KiB
Raw Permalink Blame History

Архитектура v2 — Event Sourcing через ВМ

Дата: 2026-06-20

Почему ВМ

  • k8s Ingress буферизирует SSE → соединение рвётся
  • На ВМ nginx с proxy_buffering off + proxy_read_timeout 600s — всё работает
  • ВМ уже проксирует загрузку файлов и конвертацию .doc
  • ВМ — единственное место где можно делать долгие стриминговые запросы

Схема

Браузер (index.cfm)
  │
  ├─ загрузка файлов: contracts.kube5s.ru/lucee/upload.cfm (ВМ → Lucee)
  ├─ парсинг:        contract.luceek8s.dev.nubes.ru/parser.cfm (Lucee напрямую)
  │
  └─ v2 сравнение:   contracts.kube5s.ru/process-v2?contract_id=X (SSE через ВМ)
                        │
                        ├─ GET  Lucee: api.cfm → список supplements
                        ├─ для каждого supplement:
                        │   ├─ GET  Lucee: api.cfm → current_spec из spec_current
                        │   ├─ GET  Lucee: api.cfm → elements_json
                        │   ├─ POST локально: /llm-ops (httpx → api.aillm.ru)
                        │   ├─ POST Lucee: apply_events.cfm
                        │   └─ flush SSE: прогресс
                        └─ flush SSE: done

Эндпоинты

Эндпоинт Где Что делает
/llm-ops ВМ:8766 Принимает {current_spec, doc_text} → LLM → {mode, ops}
/process-v2 ВМ:8766 SSE-стриминг: оркеструет весь v2 пайплайн
apply_events.cfm Lucee Принимает {supplement_id, ops} → транзакционно применяет
process_v2.cfm Lucee Удалить (логика перенесена на ВМ)

Файлы

Файл Действие
contractor/deploy/convert_server.py Добавить /process-v2 SSE endpoint
contractor/deploy/llm_prompt.py Уже готов (build_prompt)
contractor/deploy/nginx-contracts.conf Добавить location /process-v2
contractor/process.cfm Убрать include process_v2.cfm
contractor/process_v2.cfm Удалить
contractor/apply_events.cfm Уже готов
contractor/index.cfm Кнопка v2 → ВМ EventSource

Проверка

  1. /llm-ops на ВМ — работает (проверено)
  2. nginx с /process-v2 → 8766 — после деплоя
  3. apply_events.cfm на Lucee — работает (проверено)
  4. Кнопка v2 в UI → SSE через ВМ