import pandas as pd
from sklearn.ensemble import RandomForestClassifier
import os, glob, json
import mysql.connector
from datetime import datetime


# Ruta de los CSV
#directorio = "../historial_csv"
directorio = "/var/www/b02y.com/html/xxx/historial_csv"

# Buscar los 3 archivos más recientes
archivos = glob.glob(os.path.join(directorio, "historial_*.csv"))
archivos = sorted(archivos, key=os.path.getmtime, reverse=True)[:3]

if not archivos:
    print("❌ No se encontraron archivos CSV.")
    exit()

resultados = []

for archivo in archivos:
    try:
        # Cargar CSV
        df = pd.read_csv(archivo)
        df = df[pd.to_numeric(df["numero"], errors="coerce").notnull()]
        df["numero"] = df["numero"].astype(int)

        numeros = df["numero"].tolist()
        if len(numeros) < 10:
            continue  # saltar archivos muy pequeños

        # Preparar datos
        X, y = [], []
        for i in range(len(numeros) - 1):
            X.append([numeros[i]])
            y.append(numeros[i + 1])

        modelo = RandomForestClassifier(n_estimators=100, random_state=42)
        modelo.fit(X, y)

        ultimo = [numeros[-1]]
        pred = modelo.predict([ultimo])[0]

        resultados.append({
            "archivo": os.path.basename(archivo),
            "basado_en": int(ultimo[0]),
            "prediccion": int(pred)
        })

    except Exception as e:
        print(f"⚠️ Error procesando {archivo}: {e}")

try:
    conexion = mysql.connector.connect(
        host="localhost",
        user="root",
        password="PilHal0812!",
        database="ruleta"
    )
    cursor = conexion.cursor()

    # Obtener el próximo ID de ruleta_numeros
    cursor.execute("SELECT MAX(id) + 1 FROM ruleta_numeros")
    next_id = cursor.fetchone()[0] or 1  # si la tabla está vacía

    for r in resultados:
        cursor.execute("""
            INSERT INTO predicciones (id_ruleta, modelo, archivo_base, numero_base, numero_predicho, generado_en)
            VALUES (%s, %s, %s, %s, %s, %s)
        """, (
            next_id,                   # ID próximo de la tabla ruleta_numeros
            "modelo_basico",           # puedes cambiar el nombre del modelo después
            r["archivo"],
            r["basado_en"],
            r["prediccion"],
            datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        ))

    conexion.commit()
    cursor.close()
    conexion.close()
    print(f"✅ Predicciones insertadas en la tabla para ID futuro: {next_id}")

except Exception as e:
    print(f"❌ Error al insertar en MySQL: {e}")

# Guardar en JSON
with open("/var/www/b02y.com/html/xxx/test/prediccion.json", "w") as f:
    json.dump(resultados, f, indent=2)

print("✅ Predicciones generadas:")
for r in resultados:
    print(f"- {r['archivo']} → Basado en {r['basado_en']} → Predice {r['prediccion']}")
