From 9271c23780ae68ed8e328feadaa8e5ceadf41e90 Mon Sep 17 00:00:00 2001 From: Denis Krivochenko Date: Mon, 17 Aug 2026 17:17:02 +0700 Subject: [PATCH] =?UTF-8?q?photo=5Fbot:=20=D1=80=D0=B0=D0=B7=D1=80=D0=B5?= =?UTF-8?q?=D1=88=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=84=D0=BE=D1=82=D0=BE=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=98=D0=98=20768->1536=20(PHOTO=5FTEST?= =?UTF-8?q?=5FAI=5FMAX=5FSIDE)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/config.py | 5 ++++- photo_bot/ai_validator.py | 5 +++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/config/config.py b/config/config.py index 82c88e4..4e68b52 100644 --- a/config/config.py +++ b/config/config.py @@ -95,13 +95,16 @@ ENABLE_LK = True # Личный кабинет сотрудник # показывается пользователю. Само фото никуда НЕ ДОСЫЛАЕТСЯ # не применяется (ни в AD, ни в API, ни на модерацию). # ========================================================= -PHOTO_TEST_MODE = False # Тестовый мод: фото напрямую в ИИ, результат показывается, фото никуда не публикуется +PHOTO_TEST_MODE = os.getenv("PHOTO_TEST_MODE", "0").strip().lower() in ("1", "true", "yes", "on") PHOTO_TEST_AI_URL = os.getenv("PHOTO_TEST_AI_URL", "http://srvkem-ii-03:8083/v1/chat/completions") PHOTO_TEST_AI_MODEL = os.getenv( "PHOTO_TEST_AI_MODEL", "/opt/llama.cpp-cpu/build/bin/models/gemma-4-E4B-mtp/gemma-4-E4B-it-UD-Q4_K_XL.gguf" ) PHOTO_TEST_AI_TIMEOUT = float(os.getenv("PHOTO_TEST_AI_TIMEOUT", "180")) +# Разрешение, до которого сжимается фото перед отправкой в ИИ (max side, px). +# 1536 — для чёткого разбора мимики/деталей (выше = медленнее). +PHOTO_TEST_AI_MAX_SIDE = 1536 # ========================================================= # 2. КОНТРОЛЬ ДОСТУПА diff --git a/photo_bot/ai_validator.py b/photo_bot/ai_validator.py index a1c1cda..5a8096f 100644 --- a/photo_bot/ai_validator.py +++ b/photo_bot/ai_validator.py @@ -58,10 +58,11 @@ def validate_photo_with_ai(file_bytes: bytes) -> dict: Возвращает {'ok': bool, 'verdict': str, 'reason': str, 'error': str} """ try: - # Сжатие как в photo_validator.py (PIL, без сторонних DLL) + # Сжатие (PIL): разрешение настраивается в config (PHOTO_TEST_AI_MAX_SIDE) + side = int(config.PHOTO_TEST_AI_MAX_SIDE) with Image.open(io.BytesIO(file_bytes)) as img: img = img.convert('RGB') - img.thumbnail((768, 768)) + img.thumbnail((side, side)) buffer = io.BytesIO() img.save(buffer, format='JPEG', quality=85) b64_img = base64.b64encode(buffer.getvalue()).decode('utf-8')