# backtesting/__init__.py

from flask import Blueprint, request, jsonify
from celery_app import celery

# Blueprint
backtesting_bp = Blueprint(
    "backtesting",
    __name__,
    url_prefix="/backtesting"
)

# =========================
# Encolar backtest (único endpoint)
# =========================
@backtesting_bp.post("/submit")
def submit():
    data = request.get_json(silent=True) or {}

    task = celery.send_task(
        "ns.run_backtest",
        args=[data],
        queue="neutral_sigma_queue"
    )

    return jsonify({
        "ok": True,
        "task_id": task.id
    })


# =========================
# Estado del job (polling)
# =========================
@backtesting_bp.get("/status/<task_id>")
def job_status(task_id):
    r = celery.AsyncResult(task_id)

    payload = {
        "state": r.state
    }

    if r.state == "SUCCESS":
        payload["result"] = r.result
    elif r.state in ("FAILURE", "REVOKED"):
        payload["error"] = str(r.result)

    return jsonify(payload)
