feat(strategy): 代码版本快照(§12.6补,方案B发起时快照·QuantConnect轻量版)——用户拍板:解决「实例参数有快照但代码没有,历史运行无法回溯当时跑的哪版代码」——①sanguo_api/code_versions.py:发起时全文落盘data/strategy_code_versions/{file}.{hash8}.py(md5内容寻址天然去重,原子替换防并发坏);发起四入口(paper/live/CTA/组合回测)全快照,账户加code_hash列(ALTER迁移),回测经spec→run_meta.code_hash落档案②查看:GET /strategy/code-versions列表+单版本全文;代码编辑页「版本历史」抽屉(MonacoDiff左右对比当前,主题同款)③「代码已变更」角标:策略库档案行(enriched code_changed)+全景每run标v哈希·一致/已变更④双轨对账加「代码版本一致」第五指标(对账FAIL先查这行,两边代码不同价差必然大);路径穿越防护(版本号只认8位hex)+6测试;927绿+build绿;「用当时代码重跑」留P2 [vps]
This commit is contained in:
@@ -96,11 +96,13 @@ _KINDS = ("backtest", "replay")
|
||||
|
||||
|
||||
def update_instance_run(inst_id: int, kind: str, status: str,
|
||||
ret: float | None = None) -> bool:
|
||||
ret: float | None = None,
|
||||
meta: dict | None = None) -> bool:
|
||||
"""事件型运行(回测/回放)完成/失败时回写档案。
|
||||
|
||||
kind: backtest/replay(paper_live/live 是持续运行,读时聚合不落盘)。
|
||||
ret: 小数收益(0.1548=+15.48%),None 则保留旧值。
|
||||
meta: 附加信息(如 {"code_hash": ...} 发起时代码版本)。
|
||||
返回 False = 实例不存在(如已删,静默丢弃)。
|
||||
"""
|
||||
if kind not in _KINDS:
|
||||
@@ -114,6 +116,10 @@ def update_instance_run(inst_id: int, kind: str, status: str,
|
||||
r["last_return"] = ret
|
||||
r.setdefault("run_returns", {})
|
||||
r["run_returns"][kind] = ret
|
||||
if meta:
|
||||
r.setdefault("run_meta", {})
|
||||
r["run_meta"].setdefault(kind, {})
|
||||
r["run_meta"][kind].update(meta)
|
||||
r["updated_at"] = time.strftime("%Y-%m-%d")
|
||||
_save(rows)
|
||||
return True
|
||||
|
||||
Reference in New Issue
Block a user