feat: 可用性API——GET查/POST设单个/批量/init按标准A自动初始化

This commit is contained in:
xxm
2026-08-16 07:36:30 +08:00
parent c19e2c55c6
commit f7c1240157
+38
View File
@@ -930,6 +930,44 @@ def api_research_backtest():
return jsonify({'error': str(e)}), 500
@app.route("/api/research/availability")
def api_research_availability():
"""策略手动可用性状态(2026-08-16 老莫把关)
GET /api/research/availability → 全部状态
POST /api/research/availability → {version, available, note?} 设单个
POST /api/research/availability?batch=1 → {versions:[...], available, note?} 批量
POST /api/research/availability?init=1 → 按标准A自动初始化新策略
"""
import sys as _sy
_sy.path.insert(0, "/home/hmo/MoFin/deploy/profile-scripts")
from strategy_qualify import (load_availability, set_available,
auto_init_availability, get_benchmarks)
if request.method == "GET":
return jsonify(load_availability())
data = request.get_json(silent=True) or {}
try:
if request.args.get("init"):
from strategy_lab import list_strategies
versions = sorted({s["version"] for s in list_strategies(period_tag="10y")})
changed = auto_init_availability(versions, bench=get_benchmarks())
return jsonify({"initialized": changed, "count": len(changed)})
if request.args.get("batch"):
versions = data.get("versions") or []
available = data.get("available", True)
note = data.get("note", "")
out = {}
for v in versions:
out[v] = set_available(v, available, note)
return jsonify({"updated": out, "count": len(out)})
version = data.get("version")
if not version:
return jsonify({"error": "missing version"}), 400
entry = set_available(version, data.get("available", True), data.get("note", ""))
return jsonify({"updated": version, "entry": entry})
except Exception as e:
return jsonify({"error": str(e)}), 500
@app.route("/api/research/analysis")
def api_research_analysis():
"""指定策略版本的因子归因分析"""