This commit is contained in:
sam 2025-10-06 12:29:39 +08:00
parent 3413384d61
commit 15aa959c9a
3 changed files with 18 additions and 6 deletions

View File

@ -28,6 +28,8 @@ from app.utils import alerts
from app.utils.config import get_config, save_config from app.utils.config import get_config, save_config
from app.utils.tuning import log_tuning_result from app.utils.tuning import log_tuning_result
from app.utils.db import db_session
from app.ui.shared import LOGGER, LOG_EXTRA, default_backtest_range from app.ui.shared import LOGGER, LOG_EXTRA, default_backtest_range
from app.ui.views.dashboard import update_dashboard_sidebar from app.ui.views.dashboard import update_dashboard_sidebar

View File

@ -21,10 +21,12 @@ _WARNINGS_PLACEHOLDER = None
def _ensure_dashboard_elements(metrics_container: object, decisions_container: object) -> Dict[str, object]: def _ensure_dashboard_elements(metrics_container: object, decisions_container: object) -> Dict[str, object]:
# Create dedicated placeholders so successive updates rewrite the same slots # Create horizontal layout so metrics stay in place during refreshes
metrics_calls = metrics_container.empty() metrics_row = metrics_container.container()
metrics_prompt = metrics_container.empty() col_calls, col_prompt, col_completion = metrics_row.columns(3)
metrics_completion = metrics_container.empty() metrics_calls = col_calls.empty()
metrics_prompt = col_prompt.empty()
metrics_completion = col_completion.empty()
elements = { elements = {
"metrics_calls": metrics_calls, "metrics_calls": metrics_calls,

View File

@ -97,10 +97,14 @@ def render_market_visualization() -> None:
last_ts_code = session.get("market_selected_ts_code") last_ts_code = session.get("market_selected_ts_code")
start_store_key = "market_start_date_value" start_store_key = "market_start_date_value"
end_store_key = "market_end_date_value" end_store_key = "market_end_date_value"
start_widget_key = "market_start_date_picker"
end_widget_key = "market_end_date_picker"
if last_ts_code != ts_code: if last_ts_code != ts_code:
session["market_selected_ts_code"] = ts_code session["market_selected_ts_code"] = ts_code
session[start_store_key] = default_start session[start_store_key] = default_start
session[end_store_key] = default_end session[end_store_key] = default_end
session[start_widget_key] = default_start
session[end_widget_key] = default_end
else: else:
start_state = session.get(start_store_key, default_start) start_state = session.get(start_store_key, default_start)
end_state = session.get(end_store_key, default_end) end_state = session.get(end_store_key, default_end)
@ -112,13 +116,17 @@ def render_market_visualization() -> None:
end_state = max_date end_state = max_date
session[start_store_key] = start_state session[start_store_key] = start_state
session[end_store_key] = end_state session[end_store_key] = end_state
if session.get(start_widget_key) != start_state:
session[start_widget_key] = start_state
if session.get(end_widget_key) != end_state:
session[end_widget_key] = end_state
col1, col2 = st.columns(2) col1, col2 = st.columns(2)
with col1: with col1:
start_date = st.date_input( start_date = st.date_input(
"开始日期", "开始日期",
value=session.get(start_store_key, default_start), value=session.get(start_store_key, default_start),
key="market_start_date_picker", key=start_widget_key,
min_value=min_date, min_value=min_date,
max_value=max_date, max_value=max_date,
) )
@ -126,7 +134,7 @@ def render_market_visualization() -> None:
end_date = st.date_input( end_date = st.date_input(
"结束日期", "结束日期",
value=session.get(end_store_key, default_end), value=session.get(end_store_key, default_end),
key="market_end_date_picker", key=end_widget_key,
min_value=min_date, min_value=min_date,
max_value=max_date, max_value=max_date,
) )