session-13: VM SSE architecture
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
# Архитектура 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 через ВМ
|
||||
Reference in New Issue
Block a user