modify: cleanup project structure and docs
This commit is contained in:
50
ui_sections/strategy_eval.py
Normal file
50
ui_sections/strategy_eval.py
Normal file
@@ -0,0 +1,50 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
import pandas as pd
|
||||
import streamlit as st
|
||||
|
||||
from services.strategy import generate_output_and_recommendations
|
||||
|
||||
|
||||
def render_strategy_eval(base: pd.DataFrame, all_strategy_types: list[str], region_sel: str):
|
||||
st.info(f"📌 检测到的策略类型:{', '.join(all_strategy_types) or '(数据中没有策略)'}")
|
||||
if not all_strategy_types:
|
||||
st.warning("数据中没有检测到策略。")
|
||||
return
|
||||
|
||||
with st.form(key="strategy_eval_form"):
|
||||
horizon_eval = st.slider("评估窗口(天)", 7, 60, 14, step=1)
|
||||
submit_strat_eval = st.form_submit_button("应用评估参数")
|
||||
|
||||
if not submit_strat_eval:
|
||||
st.info("请设置评估窗口并点击“应用评估参数”按钮。")
|
||||
return
|
||||
|
||||
results, recommendation = generate_output_and_recommendations(
|
||||
base,
|
||||
all_strategy_types,
|
||||
region=region_sel if region_sel != '全市' else '全市',
|
||||
horizon=horizon_eval,
|
||||
)
|
||||
|
||||
if not results:
|
||||
st.warning("⚠️ 未能完成策略评估。请尝试缩短评估窗口或扩大日期范围。")
|
||||
return
|
||||
|
||||
st.subheader("各策略指标")
|
||||
df_res = pd.DataFrame(results).T
|
||||
st.dataframe(df_res, use_container_width=True)
|
||||
st.success(f"⭐ 推荐:{recommendation}")
|
||||
|
||||
st.download_button(
|
||||
"下载策略评估 CSV",
|
||||
data=df_res.to_csv().encode('utf-8-sig'),
|
||||
file_name="strategy_evaluation_results.csv",
|
||||
mime="text/csv",
|
||||
)
|
||||
|
||||
if os.path.exists('recommendation.txt'):
|
||||
with open('recommendation.txt','r',encoding='utf-8') as f:
|
||||
st.download_button("下载推荐文本", data=f.read().encode('utf-8'), file_name="recommendation.txt")
|
||||
|
||||
Reference in New Issue
Block a user