# backtesting/__init__.py
from flask import Blueprint, request, jsonify, current_app
from celery_app import celery

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


@backtesting_bp.post("/submit", endpoint="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})

@backtesting_bp.get("/status/<task_id>", endpoint="job_status")  
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)


@backtesting_bp.route("/start", methods=["POST"])
def start():
    payload = request.get_json(silent=True) or {}
    current_app.logger.info("[BT] start payload: %s", payload)
    tid = celery.send_task("ns.run_backtest", args=[payload], queue="neutral_sigma_queue").id
    return jsonify({"ok": True, "task_id": tid})



