Тест-режим: проверка через /api/photo-bot/check/ сайта (CV+гримасы+ИИ), метрики из llama.cpp, удаление прямого llama.cpp-клиента
This commit is contained in:
@@ -187,3 +187,36 @@ def prepare_ad_photo(input_path: str, user_id: str, output_path: str = None, tar
|
||||
except Exception as e:
|
||||
logger.error(f"Ошибка в prepare_ad_photo: {e}", exc_info=True)
|
||||
return {"success": False, "error": str(e)}
|
||||
|
||||
|
||||
def check_photo_api(image_bytes: bytes, timeout: float = 300.0) -> dict:
|
||||
"""
|
||||
Dry-run проверка фото через API сайта (POST /api/photo-bot/check/).
|
||||
|
||||
Фото проходит полный пайплайн проверки на сайте (MediaPipe CV +
|
||||
ARKit-формы + VLM ИИ), НО ни в БД, ни в AD, ни в Orion не попадает —
|
||||
ответ возвращается боту для тест-под-режима.
|
||||
|
||||
Returns:
|
||||
{"status": "ok", "verdict", "ai_reason", "cv_approved", "cv_reason",
|
||||
"raw_answer", "forced_moderation", "timings", "ai_metrics"}
|
||||
или {"status": "error", "reason"}
|
||||
"""
|
||||
url = API_URL.replace("/upload/", "check/")
|
||||
try:
|
||||
response = requests.post(
|
||||
url,
|
||||
headers={"X-API-Key": API_KEY},
|
||||
files={"image": ("photo.jpg", image_bytes, "image/jpeg")},
|
||||
timeout=timeout,
|
||||
verify=False
|
||||
)
|
||||
response.raise_for_status()
|
||||
logger.info(f"API /check/ response: status={response.status_code}, body[:500]: {response.text[:500]}")
|
||||
return response.json()
|
||||
except requests.exceptions.RequestException as e:
|
||||
logger.error(f"Ошибка /check/ API: {e}")
|
||||
return {"status": "error", "reason": f"Ошибка сети при обращении к сайту: {e}"}
|
||||
except Exception as e:
|
||||
logger.error(f"Ошибка /check/: {e}")
|
||||
return {"status": "error", "reason": f"Ошибка сайта проверки: {e}"}
|
||||
|
||||
Reference in New Issue
Block a user