diff --git a/app/ui/views/pool.py b/app/ui/views/pool.py index 12a3134..d7bfa85 100644 --- a/app/ui/views/pool.py +++ b/app/ui/views/pool.py @@ -49,25 +49,32 @@ def render_pool_overview() -> None: st.write("候选投资池:") try: latest_date = get_latest_trade_date() + # 将日期对象转换为字符串格式,与数据库保持一致 + latest_date_str = latest_date.strftime("%Y%m%d") if latest_date else None # 添加状态过滤功能 status_options = ["全部", "watch", "candidate", "exit", "buy_s", "buy_m", "buy_l"] status_filter = st.selectbox("选择状态", options=status_options, index=0) if status_filter != "全部": - candidates = list_investment_pool(trade_date=latest_date, status=[status_filter]) + candidates = list_investment_pool(trade_date=latest_date_str, status=[status_filter]) else: - candidates = list_investment_pool(trade_date=latest_date) + candidates = list_investment_pool(trade_date=latest_date_str) except Exception: # noqa: BLE001 LOGGER.exception("加载候选池失败", extra=LOG_EXTRA) candidates = [] if candidates: + # 添加调试信息 + st.caption(f"找到 {len(candidates)} 条候选记录") + candidate_df = pd.DataFrame( [ { "交易日": item.trade_date, "代码": item.ts_code, + "名称": item.name or "-", + "行业": item.industry or "-", "评分": item.score, "状态": item.status, "标签": "、".join(item.tags) if item.tags else "-", diff --git a/app/ui/views/today.py b/app/ui/views/today.py index 856eac7..5b4356c 100644 --- a/app/ui/views/today.py +++ b/app/ui/views/today.py @@ -153,12 +153,15 @@ def render_today_plan() -> None: return query = get_query_params() - default_trade_date = query.get("date", [trade_dates[0]])[0] + # 确保默认日期格式正确 + default_trade_date = str(query.get("date", [trade_dates[0]])[0]) try: default_idx = trade_dates.index(default_trade_date) except ValueError: default_idx = 0 - trade_date = st.selectbox("交易日", trade_dates, index=default_idx) + # 确保日期格式统一为 YYYYMMDD + formatted_trade_dates = [str(td) for td in trade_dates] + trade_date = st.selectbox("交易日", formatted_trade_dates, index=default_idx) with db_session(read_only=True) as conn: code_rows = conn.execute( @@ -184,6 +187,9 @@ def render_today_plan() -> None: def _render_today_plan_assistant_view(trade_date: str | int | date) -> None: + # 确保日期格式为字符串 + if isinstance(trade_date, date): + trade_date = trade_date.strftime("%Y%m%d") st.info("已开启投资助理模式:以下内容为组合级(去标的)建议,不包含任何具体标的代码。") try: candidates = list_investment_pool(trade_date=trade_date) diff --git a/app/utils/portfolio.py b/app/utils/portfolio.py index 213e4ea..1ef79fa 100644 --- a/app/utils/portfolio.py +++ b/app/utils/portfolio.py @@ -32,6 +32,8 @@ class InvestmentCandidate: rationale: Optional[str] tags: List[str] metadata: Dict[str, Any] + name: Optional[str] = None + industry: Optional[str] = None def list_investment_pool( @@ -84,6 +86,8 @@ def list_investment_pool( rationale=row["rationale"], tags=list(_loads_or_default(row["tags"], [])), metadata=dict(_loads_or_default(row["metadata"], {})), + name=row["name"], + industry=row["industry"], ) ) return candidates