photo_bot: разрешение фото для ИИ 768->1536 (PHOTO_TEST_AI_MAX_SIDE)

This commit is contained in:
Denis Krivochenko
2026-08-17 17:17:02 +07:00
parent 0941a28da4
commit 9271c23780
2 changed files with 7 additions and 3 deletions
+4 -1
View File
@@ -95,13 +95,16 @@ ENABLE_LK = True # Личный кабинет сотрудник
# показывается пользователю. Само фото никуда НЕ ДОСЫЛАЕТСЯ # показывается пользователю. Само фото никуда НЕ ДОСЫЛАЕТСЯ
# не применяется (ни в AD, ни в API, ни на модерацию). # не применяется (ни в 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_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 = os.getenv(
"PHOTO_TEST_AI_MODEL", "PHOTO_TEST_AI_MODEL",
"/opt/llama.cpp-cpu/build/bin/models/gemma-4-E4B-mtp/gemma-4-E4B-it-UD-Q4_K_XL.gguf" "/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")) PHOTO_TEST_AI_TIMEOUT = float(os.getenv("PHOTO_TEST_AI_TIMEOUT", "180"))
# Разрешение, до которого сжимается фото перед отправкой в ИИ (max side, px).
# 1536 — для чёткого разбора мимики/деталей (выше = медленнее).
PHOTO_TEST_AI_MAX_SIDE = 1536
# ========================================================= # =========================================================
# 2. КОНТРОЛЬ ДОСТУПА # 2. КОНТРОЛЬ ДОСТУПА
+3 -2
View File
@@ -58,10 +58,11 @@ def validate_photo_with_ai(file_bytes: bytes) -> dict:
Возвращает {'ok': bool, 'verdict': str, 'reason': str, 'error': str} Возвращает {'ok': bool, 'verdict': str, 'reason': str, 'error': str}
""" """
try: 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: with Image.open(io.BytesIO(file_bytes)) as img:
img = img.convert('RGB') img = img.convert('RGB')
img.thumbnail((768, 768)) img.thumbnail((side, side))
buffer = io.BytesIO() buffer = io.BytesIO()
img.save(buffer, format='JPEG', quality=85) img.save(buffer, format='JPEG', quality=85)
b64_img = base64.b64encode(buffer.getvalue()).decode('utf-8') b64_img = base64.b64encode(buffer.getvalue()).decode('utf-8')