fix(live): 08-28复盘根治三连(003011守恒120股+600818废单+day_count5连日day=0)——①EOD补插失效修复:守恒缺口非空不再一天一跑,15:05-23:00每轮重查(QMT当日视图晚间才补全:003011实锤15:05快照缺第10笔/用户22点导出已齐全=当晚自愈窗口,23:00后记日放弃防无效轮询)+缺口标的QMT原始行直接打进告警取证(当时没dump事后只能猜)+同签名重试轮降INFO防60s刷屏;②当日废单告警入EOD汇总(600818形态:filled=0废单盘中只有ERROR日志躺文件里,复盘才发现当日缺仓~8万);③small_cap day_count持久化(runtime/state_{实例env}/small_cap_day.json,08-24~28连续5交易日重启归零day=0全量调仓根治,tc=5周期跨重启保持;隔日重启+1/同日不加/停摆跨多日只+1自洽;回测无实例env不落盘=旧内存语义;原版+_ex同接all_weather共享helper,TET副本diff契约不破);+测试:003011十笔孪生vs九行台账复现补插/缺口重试到视图补全即闭环/废单告警+部分成交与跨日不进清单/持久化4态;顺手修tests/test_live_api预存红9个(B3 f9b6d77只给两文件播种快照漏了本文件,照抄同款修法;空账号断言改create即400新契约);全量1333绿 [vps]
CI/CD / test (push) Successful in 9s
CI/CD / nas-deploy (push) Successful in 17s
CI/CD / nas-verify (push) Successful in 15s

This commit is contained in:
2026-08-29 08:22:14 +08:00
parent a62bdbabc1
commit 64cb460748
7 changed files with 357 additions and 15 deletions
+13 -4
View File
@@ -168,6 +168,12 @@ def _client(tmp_path):
db = os.path.join(str(tmp_path), "live_api.db")
app = create_app(db_path=db)
set_db_path(db)
# B3(f9b6d77) 起 live/create 需新鲜账户快照(fail-closed),测试播种一份
# ——同款修法见 test_portfolio_live/test_instance_binding,本文件当时漏补
from sanguo_live import persistence as _lp
for _acc in ("12345678", "123", ""):
_lp.upsert_account_snapshot(db, _acc, cash=1e9, market_value=0,
total=1e9, positions=[])
return TestClient(app), create_token("admin")
@@ -232,14 +238,17 @@ def test_start_and_stop(tmp_path):
def test_start_empty_account_rejected(tmp_path):
"""account 字段空 → start 返回 400。"""
"""account 字段空 → 400(意图不变:空账号永不产生可运行实例)。
B3(f9b6d77)起空账号在 create 即被预算闸门 fail-closed 拒
(空账号无快照可言),原为 create 通过、start 时拒。
"""
c, token = _client(tmp_path)
aid = c.post(
r = c.post(
"/api/v1/live/create",
json={"account": "", "strategy_name": "dm1"},
headers=_auth(token),
).json()["account_id"]
r = c.post(f"/api/v1/live/{aid}/start", headers=_auth(token))
)
assert r.status_code == 400