#!/usr/bin/env bash
set -u

FOTO="${1:-}"

if [ -z "$FOTO" ]; then
    echo "Uso:"
    echo "./testar_hibrido.sh /caminho/foto.jpg"
    exit 1
fi

PYTHON="/opt/pele-ai/venv/bin/python"
ANALISADOR="/opt/pele-ai/analisador_local.py"
MODELO="/opt/pele-ai/modelos/face_landmarker.task"

STDOUT="$(mktemp)"
STDERR="$(mktemp)"

PELE_FACE_LANDMARKER_MODEL="$MODELO" \
TF_CPP_MIN_LOG_LEVEL=3 \
GLOG_minloglevel=3 \
MEDIAPIPE_DISABLE_GPU=1 \
"$PYTHON" "$ANALISADOR" "$FOTO" \
    >"$STDOUT" \
    2>"$STDERR"

CODIGO=$?

echo "=============================================="
echo "TESTE HÍBRIDO"
echo "=============================================="
echo "Código de saída: $CODIGO"

echo
echo "----- STDOUT -----"
cat "$STDOUT"

echo
echo "----- STDERR -----"
cat "$STDERR"

echo
echo "----- VALIDAÇÃO JSON -----"

python3 - "$STDOUT" <<'PY'
import json
import pathlib
import sys

texto = pathlib.Path(
    sys.argv[1]
).read_text(
    encoding="utf-8",
    errors="replace"
).strip()

try:
    dados = json.loads(texto)
    print("JSON VÁLIDO")
    print("sucesso:", dados.get("sucesso"))
    print("mensagem:", dados.get("mensagem"))
    print("motor:", dados.get("motor"))
    print("detector:", dados.get("detector_facial"))
    print("mediapipe_utilizado:", dados.get("mediapipe_utilizado"))
    print("etapa:", dados.get("etapa"))
except Exception as erro:
    print("JSON INVÁLIDO:", repr(erro))
    raise SystemExit(1)
PY

rm -f "$STDOUT" "$STDERR"
