diff --git a/.env.example b/.env.example index 0e31c4d..89e4dd5 100644 --- a/.env.example +++ b/.env.example @@ -10,6 +10,8 @@ CRAWL_LIMIT= REQUEST_TIMEOUT=30 REQUEST_DELAY_SECONDS=1 PARSER_USE_PLAYWRIGHT=false +DISMISSAL_CONFIRMATION_RUNS=3 +MAX_AUTO_DISMISSALS_PER_RUN=25 ADMIN_USERNAME=admin ADMIN_PASSWORD=change-me diff --git a/README.md b/README.md index 185bec9..7f6c51f 100644 --- a/README.md +++ b/README.md @@ -135,4 +135,4 @@ node --check app/static/admin.js Тесты с данными используют временную SQLite; отдельные API smoke-тесты запускают приложение с его текущей конфигурацией. Браузерная проверка: `pip install playwright`, `python -m playwright install chromium`, затем `python tests/browser_admin.py`. Она проверяет реальный рендеринг страниц, клавиатуру, диалог, фильтры и восстановление прогресса после ошибки. Скриншоты сохраняются во временную папку; путь выводится в конце. -Версия сервиса: `0.8.3`. Админка всегда показывает версии backend и frontend в footer. +Версия сервиса: `0.8.4`. Админка всегда показывает версии backend и frontend в footer. diff --git a/app/config.py b/app/config.py index e04dd42..104e5bc 100644 --- a/app/config.py +++ b/app/config.py @@ -13,6 +13,8 @@ class Settings(BaseSettings): request_timeout: int = 30 request_delay_seconds: float = 1.0 parser_use_playwright: bool = False + dismissal_confirmation_runs: int = Field(default=3, ge=1) + max_auto_dismissals_per_run: int = Field(default=25, ge=1) admin_username: str = "admin" admin_password: str = "admin" diff --git a/app/version.py b/app/version.py index 5bdb0d1..6b6757f 100644 --- a/app/version.py +++ b/app/version.py @@ -1,3 +1,3 @@ -APP_VERSION = "0.8.3" -FRONTEND_VERSION = "0.8.3" -BACKEND_VERSION = "0.8.3" +APP_VERSION = "0.8.4" +FRONTEND_VERSION = "0.8.4" +BACKEND_VERSION = "0.8.4" diff --git a/pyproject.toml b/pyproject.toml index a364ca8..90feafa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "miem-workers" -version = "0.8.3" +version = "0.8.4" description = "MIEM employees parser, admin API, and web admin" requires-python = ">=3.11" dependencies = [ diff --git a/tests/test_api.py b/tests/test_api.py index 4708e06..6e5d1b9 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -18,7 +18,7 @@ def test_health_returns_versions(): response = TestClient(app).get("/api/health") assert response.status_code == 200 - assert response.json()["backend_version"] == "0.8.3" + assert response.json()["backend_version"] == "0.8.4" def test_api_employees_and_stats_require_admin_session(): diff --git a/tests/test_config.py b/tests/test_config.py index 9d9aeb6..4b2a485 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -11,3 +11,10 @@ def test_numeric_crawl_limit_is_parsed(): settings = Settings(crawl_limit="25") assert settings.crawl_limit == 25 + + +def test_dismissal_safety_settings_have_conservative_defaults(): + settings = Settings() + + assert settings.dismissal_confirmation_runs == 3 + assert settings.max_auto_dismissals_per_run == 25