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

59 lines
2.8 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.
# Архитектура 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 через ВМ