在交互界面中运行竞赛分析
(trigger_time: str, market: str)
| 387 | |
| 388 | |
| 389 | def run_contest_analysis_interactive(trigger_time: str, market: str): |
| 390 | """在交互界面中运行竞赛分析""" |
| 391 | try: |
| 392 | # 创建显示管理器 |
| 393 | display = ContestTradeDisplay() |
| 394 | |
| 395 | # 在显示中添加市场信息 |
| 396 | display.set_current_task(get_text(f"初始化ContestTrade系统... (市场: {market})", f"Initializing ContestTrade system... (Market: {market})")) |
| 397 | |
| 398 | # 创建初始布局 |
| 399 | layout = display.create_layout(trigger_time) |
| 400 | |
| 401 | # 使用Live界面运行 - 提高刷新频率以更好响应窗口大小变化 |
| 402 | with Live(layout, refresh_per_second=4, screen=True, auto_refresh=True, console=console) as live: |
| 403 | # 初始显示 |
| 404 | display.update_display(layout, trigger_time) |
| 405 | |
| 406 | # 添加初始消息 |
| 407 | display.add_message(get_text("系统", "System"), get_text(f"开始分析 - 市场: {market}, 时间: {trigger_time}", f"Starting analysis - Market: {market}, Time: {trigger_time}")) |
| 408 | display.update_display(layout, trigger_time) |
| 409 | |
| 410 | # 检查模块导入 - Import when needed |
| 411 | try: |
| 412 | from contest_trade.main import SimpleTradeCompany |
| 413 | if SimpleTradeCompany is None: |
| 414 | raise ImportError("SimpleTradeCompany模块导入失败") |
| 415 | |
| 416 | display.add_message(get_text("系统", "System"), get_text("✅ 成功导入SimpleTradeCompany模块", "✅ Successfully imported SimpleTradeCompany module")) |
| 417 | display.update_display(layout, trigger_time) |
| 418 | |
| 419 | # 创建公司实例 |
| 420 | company = SimpleTradeCompany() |
| 421 | display.add_message(get_text("系统", "System"), get_text("✅ 成功创建SimpleTradeCompany实例", "✅ Successfully created SimpleTradeCompany instance")) |
| 422 | display.update_display(layout, trigger_time) |
| 423 | |
| 424 | except Exception as e: |
| 425 | display.add_message("错误", f"❌ 模块导入失败: {str(e)}") |
| 426 | display.update_display(layout, trigger_time) |
| 427 | return None, display |
| 428 | |
| 429 | # 运行工作流并捕获输出 |
| 430 | final_state = asyncio.run(run_with_events_capture(company, trigger_time, display, layout, live)) |
| 431 | |
| 432 | # 运行结束后 |
| 433 | if final_state: |
| 434 | display.add_message(get_text("完成", "Completed"), get_text("✅ 分析完成!", "✅ Analysis completed!")) |
| 435 | display.set_current_task(get_text("分析完成,生成报告...", "Analysis completed, generating report...")) |
| 436 | display.set_analysis_completed(True) |
| 437 | display.final_state = final_state |
| 438 | display.update_display(layout, trigger_time) |
| 439 | |
| 440 | # 自动生成MD报告 |
| 441 | try: |
| 442 | from contest_trade.config.config import PROJECT_ROOT |
| 443 | results_dir = Path(PROJECT_ROOT) / "agents_workspace" / "results" |
| 444 | from .static.report_template import generate_final_report, generate_data_report |
| 445 | |
| 446 | # 生成研究报告 |
no test coverage detected