2.8 KiB
2.8 KiB
Архитектура 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 |
Проверка
/llm-opsна ВМ — работает (проверено)- nginx с
/process-v2→ 8766 — после деплоя apply_events.cfmна Lucee — работает (проверено)- Кнопка v2 в UI → SSE через ВМ