From 13cccb18d172c9da26e07d57b4853af87ef785eb Mon Sep 17 00:00:00 2001 From: Vladimir Bryzgalov Date: Sat, 15 Aug 2026 22:08:28 +0500 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=BD=D1=8F=D1=82=D0=BD=D0=BE,=20?= =?UTF-8?q?=D0=B3=D0=B4=D0=B5=20=D0=BB=D0=B5=D0=B6=D0=B0=D1=82=20=D0=BD?= =?UTF-8?q?=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Правки в app/config.py не действуют и теряются при обновлении: это код, а настройки читаются из config.toml. Теперь при старте печатается путь к нему и что фактически применилось - задан ли токен и сколько адресов разрешено. В самом модуле - предупреждение вверху файла. Co-Authored-By: Claude Opus 5 (1M context) --- app/config.py | 7 ++++++- app/main.py | 5 +++++ app/version.py | 2 +- tests/test_api.py | 16 ++++++++++++++++ 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/app/config.py b/app/config.py index 033e54c..0aa2e5f 100644 --- a/app/config.py +++ b/app/config.py @@ -1,4 +1,9 @@ -"""Настройки сервиса: читаются из config.toml рядом с исполняемым файлом.""" +"""Чтение настроек сервиса. + +ЭТО КОД, А НЕ НАСТРОЙКИ. Править нужно файл config.toml рядом со start.bat - +он создаётся при первом запуске и обновлением не затрагивается. Правки в этом +файле не подействуют (config.toml уже существует) и пропадут при обновлении. +""" import os import secrets import tomllib diff --git a/app/main.py b/app/main.py index 4531f8e..d939e7a 100644 --- a/app/main.py +++ b/app/main.py @@ -219,6 +219,11 @@ def run() -> None: print("\n Модели не найдены. Сначала запустите download_models.bat" "\n Сервис поднимется, но принимать записи не сможет.\n") + nets = len(allowlist) + access = f"только с {nets} адресов" if nets else "со ВСЕХ адресов" + print(f"\n Настройки: {settings.base_dir / 'config.toml'}" + f"\n Токен: {'задан' if settings.token else 'НЕ ЗАДАН, сервис никого не пустит'}" + f"\n Доступ: {access}") print(f"\n talkscore-asr слушает http://{settings.host}:{settings.port}" f"\n Потоков: {settings.effective_threads()}" f"\n Проверка: curl http://localhost:{settings.port}/health" diff --git a/app/version.py b/app/version.py index 1276d02..0a8da88 100644 --- a/app/version.py +++ b/app/version.py @@ -1 +1 @@ -__version__ = "0.1.5" +__version__ = "0.1.6" diff --git a/tests/test_api.py b/tests/test_api.py index a6ae0f4..38beb4a 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -148,3 +148,19 @@ class TestHealthDiagnostics: """Список разрешённых адресов - не для посторонних глаз.""" body = client.get("/health").json() assert "allow_ips" not in body and "allowlist" not in body + + +class TestConfigFileIsNotCode: + """Настройки правятся в config.toml; app/config.py - код и обновляется.""" + + def test_update_archive_never_carries_user_config(self): + from app.updater import USER_FILES + + assert "config.toml" in USER_FILES + + def test_config_module_warns_it_is_not_settings(self): + from pathlib import Path + + src = Path(__file__).resolve().parent.parent / "app" / "config.py" + text = src.read_text(encoding="utf-8") + assert "ЭТО КОД, А НЕ НАСТРОЙКИ" in text