Тест-режим: показывать метрики кадра из /check/ (какой кадр измерил сайт)

This commit is contained in:
dddennnisss
2026-08-23 04:33:19 +07:00
parent a0ade670fe
commit b5cd3df5dd
5 changed files with 18 additions and 3 deletions
Binary file not shown.
+1
View File
@@ -368,6 +368,7 @@ async def photo_module_handler(msg: Message):
check_res.get('forced_moderation'), check_res.get('forced_moderation'),
check_res.get('timings'), check_res.get('timings'),
check_res.get('ai_metrics'), check_res.get('ai_metrics'),
frame=check_res.get('frame'),
), ),
parse_mode="html" parse_mode="html"
) )
Binary file not shown.
Binary file not shown.
+17 -3
View File
@@ -301,7 +301,7 @@ def _photo_test_receiving(emojis: dict) -> str:
def _photo_test_result(verdict: str, reason: str, cv_approved=None, cv_reason: str = '', def _photo_test_result(verdict: str, reason: str, cv_approved=None, cv_reason: str = '',
forced=None, timings: dict = None, ai_metrics: dict = None, forced=None, timings: dict = None, ai_metrics: dict = None,
emojis: dict = None) -> str: frame: dict = None, emojis: dict = None) -> str:
emojis = emojis or {} emojis = emojis or {}
icons = {"Прошел": "", "Не прошел": "", "На модерацию": ""} icons = {"Прошел": "", "Не прошел": "", "На модерацию": ""}
icon = icons.get(verdict, "") icon = icons.get(verdict, "")
@@ -326,6 +326,19 @@ def _photo_test_result(verdict: str, reason: str, cv_approved=None, cv_reason: s
else: else:
parts.append("🎯 <b>CV-проверка:</b> —\n") parts.append("🎯 <b>CV-проверка:</b> —\n")
# Метрики кадра, которые реально измерил сайт (виден именно проверенный кадр)
if frame:
bb = frame.get('face_bbox_px') or {}
try:
box = f"[{bb.get('x1')}..{bb.get('x2')}]×[{bb.get('y1')}..{bb.get('y2')}]"
parts.append(
f"📐 <b>Кадр (измерено сайтом):</b> {frame.get('img_w')}×{frame.get('img_h')} px, "
f"бокс лица {box}, голова <b>{frame.get('head_pct')}%</b> "
f"(норма ≥ {int(frame.get('min_head_percent', 30))}%)\n"
)
except Exception:
pass
if forced: if forced:
parts.append("️ <i>На сайте включён режим принудительной модерации: в реальном режиме фото ушло бы модератору, а не было опубликовано сразу.</i>\n") parts.append("️ <i>На сайте включён режим принудительной модерации: в реальном режиме фото ушло бы модератору, а не было опубликовано сразу.</i>\n")
@@ -475,9 +488,10 @@ PHOTO_TEST_AI_CHECKING_TEXT = _photo_test_ai_checking(EMOJI_DIGITS)
PHOTO_TEST_RECEIVING_TEXT = _photo_test_receiving(EMOJI_DIGITS) PHOTO_TEST_RECEIVING_TEXT = _photo_test_receiving(EMOJI_DIGITS)
def photo_test_result(verdict: str, ai_reason: str = '', cv_approved=None, cv_reason: str = '', def photo_test_result(verdict: str, ai_reason: str = '', cv_approved=None, cv_reason: str = '',
forced=None, timings: dict = None, ai_metrics: dict = None) -> str: forced=None, timings: dict = None, ai_metrics: dict = None,
frame: dict = None) -> str:
return _photo_test_result(verdict, ai_reason, cv_approved, cv_reason, return _photo_test_result(verdict, ai_reason, cv_approved, cv_reason,
forced, timings, ai_metrics, EMOJI_DIGITS) forced, timings, ai_metrics, frame, EMOJI_DIGITS)
def photo_test_ai_error(error: str = '') -> str: def photo_test_ai_error(error: str = '') -> str:
return _photo_test_ai_error(EMOJI_DIGITS, error) return _photo_test_ai_error(EMOJI_DIGITS, error)