MCPcopy Create free account
hub / github.com/FinStep-AI/ContestTrade / ContestTradeDisplay

Class ContestTradeDisplay

cli/main.py:66–386  ·  view source on GitHub ↗

ContestTrade显示管理器

Source from the content-addressed store, hash-verified

64
65 return agent_status
66class ContestTradeDisplay:
67 """ContestTrade显示管理器"""
68
69 def __init__(self):
70 self.market_type = os.environ.get('CONTEST_TRADE_MARKET', 'CN-Stock')
71 self.messages = deque(maxlen=200) # 增加消息队列容量
72 self.agent_status = _get_agent_config()
73 self.current_task = get_text("初始化系统...", "Initializing system...")
74 self.progress_info = ""
75 self.final_state = None
76 self.analysis_completed = False
77 self.step_counts = {"data": 0, "research": 0, "contest": 0, "finalize": 0}
78 self._last_update_hash = None # 用于检测内容是否真正发生变化
79 self._last_console_size = None # 用于检测控制台大小变化
80
81 # 日志监控相关 - Import PROJECT_ROOT when needed
82 from contest_trade.config.config import PROJECT_ROOT
83 self.logs_dir = Path(PROJECT_ROOT) / "agents_workspace" / "logs"
84 self.logs_dir.mkdir(parents=True, exist_ok=True)
85
86 def create_log_file(self, trigger_time: str):
87 """创建本次运行的日志文件"""
88 timestamp = trigger_time.replace(":", "-").replace(" ", "_")
89 self.log_file = self.logs_dir / f"run_{timestamp}.log"
90 with open(self.log_file, "w", encoding="utf-8") as f:
91 f.write(f"ContestTrade Run Log - {trigger_time}\n")
92 f.write("=" * 50 + "\n")
93
94 def check_agent_status_from_events_and_files(self, trigger_time: str):
95 """基于事件和文件系统更新agent状态"""
96 # Import PROJECT_ROOT when needed
97 from contest_trade.config.config import PROJECT_ROOT
98
99 # 格式化时间戳用于文件匹配
100 timestamp_str = trigger_time.replace("-", "-").replace(":", "-").replace(" ", "_")
101
102 # 检查factors目录(Data Analysis Agent结果)
103 factors_dir = Path(PROJECT_ROOT) / "agents_workspace" / "factors"
104 if factors_dir.exists():
105 for agent_name in self.agent_status:
106 if not agent_name.startswith("agent_"): # Data agents
107 agent_dir = factors_dir / agent_name
108 if agent_dir.exists():
109 # 查找对应时间戳的文件
110 pattern = f"{timestamp_str}*.json"
111 files = list(agent_dir.glob(pattern))
112 if files and self.agent_status[agent_name] != "completed":
113 self.update_agent_status(agent_name, "completed")
114 self.add_message(get_text("Data Analysis Agent", "Data Analysis Agent"), get_text(f"✅ {agent_name} 完成数据分析", f"✅ {agent_name} completed data analysis"))
115
116 # 检查reports目录(Research Agent结果)
117 reports_dir = Path(PROJECT_ROOT) / "agents_workspace" / "reports"
118 if reports_dir.exists():
119 for agent_name in self.agent_status:
120 if agent_name.startswith("agent_"): # Research agents
121 agent_dir = reports_dir / agent_name
122 if agent_dir.exists():
123 # 查找对应时间戳的文件

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected