feat: 可用性API——GET查/POST设单个/批量/init按标准A自动初始化
This commit is contained in:
@@ -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():
|
||||
"""指定策略版本的因子归因分析"""
|
||||
|
||||
Reference in New Issue
Block a user