From 765efa1a1c461d3cdd97f3fe943829bef0fd1520 Mon Sep 17 00:00:00 2001 From: Anton Date: Wed, 29 Apr 2026 12:49:58 +0300 Subject: [PATCH] fix: allow empty CRAWL_LIMIT env value --- README.md | 2 +- app/config.py | 9 ++++++++- app/version.py | 6 +++--- tests/test_api_mcp.py | 2 +- tests/test_config.py | 13 +++++++++++++ 5 files changed, 26 insertions(+), 6 deletions(-) create mode 100644 tests/test_config.py diff --git a/README.md b/README.md index acb0984..b048ffa 100644 --- a/README.md +++ b/README.md @@ -110,4 +110,4 @@ docker compose exec postgres pg_dump -U miem miem_workers > backup.sql docker compose down ``` -Версия сервиса: `0.2.6`. Админка всегда показывает версии backend и frontend в footer. +Версия сервиса: `0.2.7`. Админка всегда показывает версии backend и frontend в footer. diff --git a/app/config.py b/app/config.py index 62966b7..969bc15 100644 --- a/app/config.py +++ b/app/config.py @@ -1,5 +1,5 @@ from functools import lru_cache -from pydantic import Field +from pydantic import Field, field_validator from pydantic_settings import BaseSettings, SettingsConfigDict @@ -19,6 +19,13 @@ class Settings(BaseSettings): session_secret: str = Field(default="dev-session-secret", min_length=8) mcp_token: str = "dev-mcp-token" + @field_validator("crawl_limit", mode="before") + @classmethod + def empty_crawl_limit_as_none(cls, value): + if value == "": + return None + return value + @lru_cache def get_settings() -> Settings: diff --git a/app/version.py b/app/version.py index d39182e..213c369 100644 --- a/app/version.py +++ b/app/version.py @@ -1,3 +1,3 @@ -APP_VERSION = "0.2.6" -FRONTEND_VERSION = "0.2.6" -BACKEND_VERSION = "0.2.6" +APP_VERSION = "0.2.7" +FRONTEND_VERSION = "0.2.7" +BACKEND_VERSION = "0.2.7" diff --git a/tests/test_api_mcp.py b/tests/test_api_mcp.py index faf5f62..71776fa 100644 --- a/tests/test_api_mcp.py +++ b/tests/test_api_mcp.py @@ -18,7 +18,7 @@ def test_health_returns_versions(): response = client.get("/api/health") assert response.status_code == 200 - assert response.json()["backend_version"] == "0.2.6" + assert response.json()["backend_version"] == "0.2.7" def test_mcp_requires_token_and_lists_tools(): diff --git a/tests/test_config.py b/tests/test_config.py new file mode 100644 index 0000000..9d9aeb6 --- /dev/null +++ b/tests/test_config.py @@ -0,0 +1,13 @@ +from app.config import Settings + + +def test_empty_crawl_limit_is_treated_as_none(): + settings = Settings(crawl_limit="") + + assert settings.crawl_limit is None + + +def test_numeric_crawl_limit_is_parsed(): + settings = Settings(crawl_limit="25") + + assert settings.crawl_limit == 25