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

PYTHON="/opt/pele-ai/venv/bin/python"
ANALISADOR="/opt/pele-ai/analisador_local.py"
FOTO="${1:-}"

echo "=============================================="
echo "DIAGNÓSTICO DO ANALISADOR DE PELE"
echo "=============================================="

echo
echo "[1] Arquivos"
ls -l "$PYTHON" 2>&1
ls -l "$ANALISADOR" 2>&1

echo
echo "[2] Versões e importações"
"$PYTHON" - <<'PY'
import sys
print("Python:", sys.version)
try:
    import cv2
    print("OpenCV:", cv2.__version__)
except Exception as e:
    print("ERRO OpenCV:", repr(e))

try:
    import numpy
    print("NumPy:", numpy.__version__)
except Exception as e:
    print("ERRO NumPy:", repr(e))

try:
    import mediapipe
    print("MediaPipe:", mediapipe.__version__)
except Exception as e:
    print("ERRO MediaPipe:", repr(e))
PY

echo
echo "[3] Sintaxe"
"$PYTHON" -m py_compile "$ANALISADOR"
echo "Sintaxe OK"

if [ -n "$FOTO" ]; then
    echo
    echo "[4] Execução com foto: $FOTO"

    STDOUT_FILE="$(mktemp)"
    STDERR_FILE="$(mktemp)"

    TF_CPP_MIN_LOG_LEVEL=3 \
    GLOG_minloglevel=3 \
    MEDIAPIPE_DISABLE_GPU=1 \
    PYTHONIOENCODING=utf-8 \
    "$PYTHON" "$ANALISADOR" "$FOTO" \
        >"$STDOUT_FILE" \
        2>"$STDERR_FILE"

    CODIGO=$?

    echo "Código de saída: $CODIGO"

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

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

    echo
    echo "----- VALIDAÇÃO JSON -----"
    python3 - "$STDOUT_FILE" <<'PY'
import json
import pathlib
import sys

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

try:
    data = json.loads(text)
    print("JSON VÁLIDO")
    print("sucesso:", data.get("sucesso"))
    print("mensagem:", data.get("mensagem"))
except Exception as exc:
    print("JSON INVÁLIDO:", repr(exc))
PY

    rm -f "$STDOUT_FILE" "$STDERR_FILE"
fi
