fix(translate): Kilo API response_format, reasoning_effort skip, structured_outputs fallback, refusal handling

- Enable response_format (json_object) for all providers including Kilo/OpenRouter
- Skip reasoning_effort for Kilo/OpenRouter (returns 400 — mandatory reasoning)
- Add structured_outputs fallback: retry once without response_format if upstream
  provider (e.g. StepFun) rejects it with 'structured_outputs is not supported'
- Handle model refusal field (refusal) instead of treating as empty content
- Fix None-handling guards for message/finish_reason/content fields
- Apply same fixes to both preview.py and executor.py _call_openai_compatible
- Connect orphaned TermCorrectionPopup, BulkReplaceModal, BulkCorrectionSidebar
This commit is contained in:
2026-05-15 18:09:00 +03:00
parent 0fbf8f65bf
commit fdf48491a1
18 changed files with 1888 additions and 336 deletions

View File

@@ -68,17 +68,23 @@ BACKEND_HOST_PORT=8001
FRONTEND_HOST_PORT=8000
```
### 3. Запуск контейнеров
### 3. Запуск контейнеров через единый скрипт
Все операции с Docker централизованы в `build.sh`:
```bash
# Сборка и запуск всех сервисов
docker compose up --build
./build.sh help # Показать все команды
```
# Запуск в фоне с логами
docker compose up -d
**Основные команды:**
# Мониторинг логов
docker compose logs -f
```bash
./build.sh up # Сборка и запуск (профиль current, по умолчанию)
./build.sh up master # Сборка и запуск (профиль master)
./build.sh down # Остановка сервисов
./build.sh restart # Пересборка и перезапуск
./build.sh logs # Логи в реальном времени
./build.sh status # Статус всех профилей
```
### 4. Проверка установки
@@ -150,20 +156,35 @@ psql -U postgres -d ss_tools
### 1. Сборка bundle в подключённом контуре
Для полного релизного бандла (backend + frontend + postgres):
```bash
cd /home/busya/dev/ss-tools
./scripts/build_offline_docker_bundle.sh v1.0.0-rc2-docker
./build.sh bundle v1.0.0-rc2-docker
```
Результат появится в `dist/docker/`:
Для легковесного all-in-one образа (без Playwright, <200 MB):
```bash
./build.sh bundle:light v1.0.0
```
Результат полного бандла появится в `dist/docker/`:
- `backend.v1.0.0-rc2-docker.tar`
- `frontend.v1.0.0-rc2-docker.tar`
- `postgres.v1.0.0-rc2-docker.tar`
- `sha256sums.v1.0.0-rc2-docker.txt`
- `manifest.v1.0.0-rc2-docker.txt`
- `manifest.v1.0.0-rc2-docker.{txt,json}`
- `docker-compose.enterprise-clean.yml`
- `.env.enterprise-clean.example`
Результат легковесного бандла:
- `ss-tools.v1.0.0.tar`
- `sha256sums-light.v1.0.0.txt`
- `manifest-light.v1.0.0.{txt,json}`
- `docker-compose.light.yml`
- `.env.light.example`
### 2. Перенос bundle в изолированный контур
Передайте каталог `dist/docker/` во внутреннюю сеть любым утверждённым способом.