Тест-режим: отправлять на /check/ авто-кроп лица (как в превью/публикации), а не оригинал
- make_face_crop_bytes(): тот же квадратный кроп по центру лица, что превью и публикуемый кадр (полное разрешение, JPEG q90) - handlers: кнопка 1 шлёт на проверку кроп, не оригинал - правило «голова >= 30%» теперь меряется по публикуемому результату
This commit is contained in:
@@ -14,7 +14,7 @@ from trueconf.types import FSInputFile
|
||||
import config.config as config
|
||||
from utils import states
|
||||
from utils.menu import MENU_TEXT
|
||||
from photo_bot.photo_processor import prepare_ad_photo, get_crop_coordinates, check_photo_api
|
||||
from photo_bot.photo_processor import prepare_ad_photo, get_crop_coordinates, check_photo_api, make_face_crop_bytes
|
||||
from utils.texts import (
|
||||
UNKNOWN_MAIN_CMD_TEXT,
|
||||
EMOJI_DIGITS,
|
||||
@@ -339,9 +339,16 @@ async def photo_module_handler(msg: Message):
|
||||
try:
|
||||
with open(original_path, 'rb') as f:
|
||||
raw_photo = f.read()
|
||||
# На проверку уходит АВТО-КРОП ЛИЦА (тот же, что в превью
|
||||
# и что публикуется на сайте) — правила «голова ≥ 30%» и
|
||||
# прочее имеют смысл для публикуемого результата, а не
|
||||
# для произвольно снятого оригинала.
|
||||
crop_bytes = await asyncio.to_thread(
|
||||
make_face_crop_bytes, raw_photo, photo_data.get('coords')
|
||||
)
|
||||
# Dry-run: полный пайплайн проверки на САЙТЕ (CV + гримасы + ИИ),
|
||||
# фото в БД/AD/Orion не попадает
|
||||
check_res = await asyncio.to_thread(check_photo_api, raw_photo)
|
||||
check_res = await asyncio.to_thread(check_photo_api, crop_bytes)
|
||||
except Exception as e:
|
||||
logger.error(f"🔥 [TEST MODE] Ошибка проверки фото: {e}")
|
||||
check_res = {"status": "error", "reason": f"Ошибка бота: {e}"}
|
||||
|
||||
Reference in New Issue
Block a user