photo_bot: разрешение фото для ИИ 768->1536 (PHOTO_TEST_AI_MAX_SIDE)
This commit is contained in:
+4
-1
@@ -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. КОНТРОЛЬ ДОСТУПА
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|||||||
Reference in New Issue
Block a user