# Session 12 — 2026-06-23: v1.0.158 — Python lowercase + /convert-doc ## Баги исправлены ### 1. `resp.parsed` undefined → «Неизвестная ошибка» **Причина:** index.cfm строка 438: `r.OK` / `r.ERROR` (Lucee uppercase), Python возвращает `r.ok` / `r.error` (lowercase). Promise всегда падал в `reject`, `resp` становился Error-объектом, `resp.parsed` → undefined. **Исправление:** `r.OK` → `r.ok`, `r.ERROR` → `r.error`. ### 2. `.doc` → «Конвертер» **Причина:** `/convert-doc` был в nginx но отсутствовал в новом convert_server.py. **Исправление:** Добавлен `_handle_convert_doc()` — логика из convert_doc.py (libreoffice headless). ## Архитектура (v1.0.158) ``` Браузер → contracts.kube5s.ru (nginx) → VM :8766 Python ├── /upload (multipart → DB + parse) ├── /convert-doc (DOC→DOCX) ├── /api/supplements?contract_id=X ├── /api/documents/ ├── /process-v2 (SSE) └── /health → contractor.luceek8s.dev.nubes.ru (Lucee — только index.cfm SPA) ``` ## Ключевые правила - Python API: ВСЕ ключи lowercase (`ok`, `error`, `doc_id`, `parsed`) - Lucee serializeJSON: UPPERCASE (`OK`, `ERROR`) — больше не используется в JS - index.cfm: все запросы через `VM_API = 'https://contracts.kube5s.ru'` - БД: VM PostgreSQL 127.0.0.1:5432/baza, пользователь super