修复滚仓

This commit is contained in:
dekun
2026-05-28 14:43:15 +08:00
parent e8f77ebd57
commit 33042890b5
11 changed files with 387 additions and 6 deletions
+14 -3
View File
@@ -4,6 +4,7 @@ from __future__ import annotations
from typing import Any, Callable, Optional
from strategy_db import init_strategy_tables
from strategy_roll_monitor_lib import roll_leg_status_label
def _row_to_dict(row) -> dict:
@@ -42,14 +43,24 @@ def fetch_roll_page_data(
monitors.append(_row_to_dict(row))
roll_groups = []
for row in conn.execute(
"SELECT * FROM roll_groups WHERE status='active' ORDER BY id DESC"
"""SELECT g.* FROM roll_groups g
INNER JOIN order_monitors m ON m.id = g.order_monitor_id AND m.status='active'
WHERE g.status='active'
ORDER BY g.id DESC"""
).fetchall():
roll_groups.append(_row_to_dict(row))
active_gids = {int(g["id"]) for g in roll_groups if g.get("id") is not None}
roll_legs = []
for row in conn.execute(
"SELECT * FROM roll_legs ORDER BY id DESC LIMIT 50"
"SELECT * FROM roll_legs ORDER BY id DESC LIMIT 80"
).fetchall():
roll_legs.append(_row_to_dict(row))
leg = _row_to_dict(row)
gid = leg.get("roll_group_id")
if gid is not None and int(gid) not in active_gids:
continue
leg["status_label"] = roll_leg_status_label(leg.get("status"))
roll_legs.append(leg)
roll_legs = roll_legs[:50]
return {
"roll_monitors": monitors,
"roll_groups": roll_groups,