# app.py
from flask import Flask, request, jsonify, render_template
from datetime import datetime
import glob, os
import pandas as pd
from tasks import process_backtesting_task  # Importa la tarea de Celery

app = Flask(__name__)

# Ruta para renderizar la página principal
@app.route('/')
def index():
    return render_template('backtesting.html')

# Endpoint para encolar la tarea de backtesting
@app.route('/process_form', methods=['POST'])
def process_form():
    data = request.get_json()
    # Aquí puedes agregar validaciones si es necesario.
    # Se encola la tarea de backtesting en segundo plano
    task = process_backtesting_task.delay(data)
    return jsonify({"task_id": task.id, "status": "Procesando..."})

# Endpoint para consultar el estado y resultado de la tarea
@app.route('/task_status/<task_id>', methods=['GET'])
def task_status(task_id):
    from tasks import aggregate_results
    result = aggregate_results.AsyncResult(task_id)
    if result.state == 'SUCCESS':
        return jsonify({"state": result.state, "result": result.result})
    else:
        return jsonify({"state": result.state, "result": None})


# Endpoint para registrar la evolución intradía
@app.route('/log_intraday', methods=['POST'])
def log_intraday():
    data = request.get_json()
    print("=== Datos recibidos para evolución intradía ===")
    print("Fecha:", data.get('date'))
    print("Hora de apertura:", data.get('openingTime'))
    print("Strikes:", data.get('strikes', {}))
    print("HORA TP/SL:", data.get('occurTime'))
    print("Crédito:", data.get('initialCredit'))
    # Aquí implementa la lógica de registro que necesites.
    return jsonify({'status': 'success', 'message': 'Evolución registrada.'})

if __name__ == "__main__":
    app.run(debug=True, port=5001)
