基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版
6778 matches across 18 categories. Click a row to expand file-level details.
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | app/worker.py | 50 | except Exception as e: |
| LOW | app/worker.py | 76 | except Exception: |
| LOW | app/worker.py | 148 | except Exception as analysis_error: |
| LOW | app/worker.py | 174 | except Exception as e: |
| LOW | app/worker.py | 200 | except Exception as e: |
| LOW | app/worker.py | 217 | except Exception as e: |
| LOW | app/main.py | 80 | except Exception: |
| LOW | app/main.py | 123 | except Exception as e: |
| LOW | app/main.py | 192 | except Exception as e: |
| LOW | app/main.py | 207 | except Exception as e: |
| LOW | app/main.py | 211 | except Exception as e: |
| LOW | app/main.py | 226 | except Exception as e: |
| LOW | app/main.py | 236 | except Exception as e: |
| LOW | app/main.py | 251 | except Exception: |
| LOW | app/main.py | 253 | except Exception as e: |
| LOW | app/main.py | 267 | except Exception as e: |
| LOW | app/main.py | 274 | except Exception: |
| LOW | app/main.py | 552 | except Exception as e: |
| LOW | app/main.py | 577 | except Exception as e: |
| LOW | app/main.py | 589 | except Exception as e: |
| LOW | app/main.py | 596 | except Exception as e: |
| LOW | app/__main__.py | 30 | except Exception: |
| LOW | app/__main__.py | 33 | except Exception as e: |
| LOW | app/__main__.py | 88 | except Exception as e: |
| LOW | app/__main__.py | 103 | except Exception as e: |
| LOW | app/__main__.py | 156 | except Exception: |
| LOW | app/__main__.py | 174 | except Exception as e: |
| LOW | app/routers/sync.py | 22 | except Exception as e: |
| LOW | app/routers/tags.py | 41 | except Exception as e: |
| LOW | app/routers/tags.py | 55 | except Exception as e: |
| LOW | app/routers/tags.py | 75 | except Exception as e: |
| LOW | app/routers/tags.py | 88 | except Exception as e: |
| LOW | app/routers/news_data.py | 113 | except Exception as e: |
| LOW | app/routers/news_data.py | 126 | except Exception as e: |
| LOW | app/routers/news_data.py | 176 | except Exception as e: |
| LOW | app/routers/news_data.py | 221 | except Exception as e: |
| LOW | app/routers/news_data.py | 265 | except Exception as e: |
| LOW | app/routers/news_data.py | 322 | except Exception as e: |
| LOW | app/routers/news_data.py | 374 | except Exception as e: |
| LOW | app/routers/news_data.py | 427 | except Exception as e: |
| LOW | app/routers/news_data.py | 461 | except Exception as e: |
| LOW | app/routers/news_data.py | 482 | except Exception as e: |
| LOW | app/routers/news_data.py | 499 | except Exception as e: |
| LOW | app/routers/news_data.py | 511 | except Exception as e: |
| LOW | app/routers/stocks.py | 27 | except Exception: |
| LOW | app/routers/stocks.py | 103 | except Exception as e: |
| LOW | app/routers/stocks.py | 160 | except Exception: |
| LOW | app/routers/stocks.py | 187 | except Exception as e: |
| LOW | app/routers/stocks.py | 247 | except Exception as e: |
| LOW | app/routers/stocks.py | 322 | except Exception as e: |
| LOW | app/routers/stocks.py | 468 | except Exception as e: |
| LOW | app/routers/stocks.py | 527 | except Exception as e: |
| LOW | app/routers/stocks.py | 546 | except Exception as e: |
| LOW | app/routers/stocks.py | 610 | except Exception as e: |
| LOW | app/routers/stocks.py | 702 | except Exception as e: |
| LOW | app/routers/stocks.py | 739 | except Exception as e: |
| LOW | app/routers/stock_sync.py | 244 | except Exception as e: |
| LOW | app/routers/stock_sync.py | 285 | except Exception as e: |
| LOW | app/routers/stock_sync.py | 308 | except Exception as e: |
| LOW | app/routers/stock_sync.py | 333 | except Exception as e: |
| 3406 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | app/routers/news_data.py | 503 | async def _execute_market_news_sync(sync_service, request: NewsSyncRequest): |
| LOW | app/routers/stock_sync.py | 25 | async def _sync_latest_to_market_quotes(symbol: str) -> None: |
| LOW | app/routers/config.py | 165 | def _sanitize_database_configs(items): |
| LOW | app/routers/config.py | 1583 | async def remove_datasource_from_category( |
| LOW | app/routers/config.py | 1621 | async def update_datasource_grouping( |
| LOW | app/routers/config.py | 1660 | async def update_category_datasource_order( |
| LOW | app/routers/config.py | 97 | def _sort_llm_configs_by_newest(items): |
| LOW | app/routers/config.py | 113 | def _sanitize_datasource_configs(items): |
| LOW | app/routers/config.py | 576 | async def init_aggregator_providers( |
| LOW | app/routers/config.py | 936 | async def test_saved_database_config( |
| LOW | app/routers/config.py | 1134 | async def update_data_source_config( |
| LOW | app/routers/config.py | 1344 | async def delete_data_source_config( |
| LOW | app/routers/config.py | 1545 | async def add_datasource_to_category( |
| LOW | app/routers/config.py | 2050 | async def get_provider_model_catalog( |
| LOW | app/routers/analysis.py | 985 | async def get_user_analysis_history( |
| LOW | app/routers/model_capabilities.py | 78 | async def get_default_model_configs(): |
| LOW | app/routers/model_capabilities.py | 134 | async def get_capability_descriptions(): |
| LOW | app/routers/database.py | 104 | async def test_database_connections( |
| LOW | app/routers/screening.py | 74 | def _convert_legacy_conditions_to_new_format(legacy_conditions: Dict[str, Any]) -> List[ScreeningCondition]: |
| LOW | app/routers/websocket_notifications.py | 110 | async def websocket_notifications_endpoint( |
| LOW | app/routers/websocket_notifications.py | 201 | async def websocket_task_progress_endpoint( |
| LOW | app/routers/websocket_notifications.py | 272 | async def send_notification_via_websocket(user_id: str, notification: dict): |
| LOW | app/routers/websocket_notifications.py | 287 | async def send_task_progress_via_websocket(task_id: str, progress_data: dict): |
| LOW | app/routers/reports.py | 356 | async def get_report_module_content( |
| LOW | app/routers/social_media.py | 69 | async def save_social_media_messages(request: SocialMediaBatchRequest): |
| LOW | app/routers/social_media.py | 94 | async def query_social_media_messages(request: SocialMediaQueryRequest): |
| LOW | app/routers/financial_data.py | 91 | async def get_latest_financial_data( |
| LOW | app/routers/financial_data.py | 184 | async def sync_single_stock_financial( |
| LOW | app/routers/scheduler.py | 58 | async def update_job_metadata_route( |
| LOW | app/routers/scheduler.py | 381 | async def get_single_job_executions( |
| LOW | app/routers/tushare_init.py | 112 | async def get_initialization_status( |
| LOW | app/routers/tushare_init.py | 137 | async def start_basic_initialization( |
| LOW | app/routers/tushare_init.py | 161 | async def start_full_initialization( |
| LOW | app/routers/tushare_init.py | 226 | async def _run_basic_initialization(): |
| LOW | app/routers/baostock_init.py | 84 | async def start_full_initialization( |
| LOW | app/routers/baostock_init.py | 136 | async def start_basic_initialization(background_tasks: BackgroundTasks): |
| LOW | app/routers/baostock_init.py | 178 | async def get_initialization_status(): |
| LOW | app/routers/baostock_init.py | 252 | async def _run_full_initialization_task(historical_days: int, force: bool, task_id: str): |
| LOW | app/routers/baostock_init.py | 285 | async def _run_basic_initialization_task(task_id: str): |
| LOW | app/routers/akshare_init.py | 146 | async def start_full_initialization( |
| LOW | app/routers/akshare_init.py | 260 | async def get_initialization_status(): |
| LOW | app/routers/akshare_init.py | 326 | async def _run_full_initialization_background(historical_days: int, force: bool): |
| LOW | app/routers/akshare_init.py | 352 | async def _run_basic_sync_background(force_update: bool): |
| LOW | app/middleware/operation_log_middleware.py | 21 | def set_operation_log_enabled(flag: bool) -> None: |
| LOW | app/core/database.py | 214 | async def init_database_views_and_indexes(): |
| LOW | app/core/database.py | 232 | async def create_stock_screening_view(db): |
| LOW | app/core/rate_limiter.py | 213 | def get_baostock_rate_limiter() -> BaoStockRateLimiter: |
| LOW | app/core/config_compat.py | 31 | def _emit_deprecation_warning(self): |
| LOW | app/core/startup_validator.py | 186 | def _validate_required_configs(self): |
| LOW | app/core/startup_validator.py | 200 | def _validate_recommended_configs(self): |
| LOW | app/core/config_bridge.py | 299 | def _bridge_datasource_details(data_source_configs) -> int: |
| LOW | app/core/config_bridge.py | 673 | async def _sync_pricing_config_from_db(): |
| LOW | app/core/unified_config.py | 327 | async def get_data_source_configs_async(self) -> List[DataSourceConfig]: |
| LOW | app/core/unified_config.py | 442 | async def get_unified_system_config(self) -> SystemConfig: |
| LOW | app/constants/model_capabilities.py | 353 | def get_model_capability_badge(level: int) -> Dict[str, str]: |
| LOW | app/utils/api_key_utils.py | 76 | def get_env_api_key_for_provider(provider_name: str) -> Optional[str]: |
| LOW | app/utils/api_key_utils.py | 97 | def get_env_api_key_for_datasource(ds_type: str) -> Optional[str]: |
| LOW | app/utils/api_key_utils.py | 137 | def should_skip_api_key_update(api_key: Optional[str]) -> bool: |
| LOW | app/utils/error_formatter.py | 199 | def _generate_friendly_message( |
| LOW | app/utils/report_exporter.py | 167 | def _clean_markdown_for_pandoc(self, md_content: str) -> str: |
| 1206 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | app/worker.py | 23 | |
| LOW | app/main.py | 40 | |
| LOW | app/routers/sync.py | 7 | |
| LOW | app/routers/tags.py | 4 | |
| LOW | app/routers/news_data.py | 6 | |
| LOW | app/routers/news_data.py | 6 | |
| LOW | app/routers/stocks.py | 7 | |
| LOW | app/routers/stocks.py | 7 | |
| LOW | app/routers/stocks.py | 7 | |
| LOW | app/routers/stock_sync.py | 6 | |
| LOW | app/routers/config.py | 22 | |
| LOW | app/routers/config.py | 88 | |
| LOW | app/routers/analysis.py | 17 | |
| LOW | app/routers/analysis.py | 20 | |
| LOW | app/routers/analysis.py | 20 | |
| LOW | app/routers/analysis.py | 20 | |
| LOW | app/routers/analysis.py | 20 | |
| LOW | app/routers/model_capabilities.py | 5 | |
| LOW | app/routers/model_capabilities.py | 21 | |
| LOW | app/routers/database.py | 6 | |
| LOW | app/routers/database.py | 8 | |
| LOW | app/routers/database.py | 15 | |
| LOW | app/routers/database.py | 15 | |
| LOW | app/routers/cache.py | 6 | |
| LOW | app/routers/cache.py | 7 | |
| LOW | app/routers/cache.py | 7 | |
| LOW | app/routers/historical_data.py | 7 | |
| LOW | app/routers/historical_data.py | 8 | |
| LOW | app/routers/screening.py | 8 | |
| LOW | app/routers/favorites.py | 11 | |
| LOW | app/routers/favorites.py | 11 | |
| LOW | app/routers/websocket_notifications.py | 9 | |
| LOW | app/routers/multi_market_stocks.py | 12 | |
| LOW | app/routers/multi_market_stocks.py | 12 | |
| LOW | app/routers/multi_market_stocks.py | 12 | |
| LOW | app/routers/reports.py | 4 | |
| LOW | app/routers/reports.py | 6 | |
| LOW | app/routers/reports.py | 8 | |
| LOW | app/routers/reports.py | 10 | |
| LOW | app/routers/reports.py | 11 | |
| LOW | app/routers/social_media.py | 7 | |
| LOW | app/routers/social_media.py | 10 | |
| LOW | app/routers/financial_data.py | 7 | |
| LOW | app/routers/financial_data.py | 306 | |
| LOW | app/routers/scheduler.py | 9 | |
| LOW | app/routers/scheduler.py | 10 | |
| LOW | app/routers/operation_logs.py | 6 | |
| LOW | app/routers/operation_logs.py | 6 | |
| LOW | app/routers/stock_data.py | 5 | |
| LOW | app/routers/stock_data.py | 11 | |
| LOW | app/routers/stock_data.py | 11 | |
| LOW | app/routers/stock_data.py | 11 | |
| LOW | app/routers/tushare_init.py | 7 | |
| LOW | app/routers/tushare_init.py | 7 | |
| LOW | app/routers/internal_messages.py | 7 | |
| LOW | app/routers/internal_messages.py | 10 | |
| LOW | app/routers/usage_statistics.py | 7 | |
| LOW | app/routers/usage_statistics.py | 11 | |
| LOW | app/routers/usage_statistics.py | 11 | |
| LOW | app/routers/baostock_init.py | 6 | |
| 946 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | app/main.py | 85 | |
| LOW | app/__main__.py | 42 | |
| LOW | app/routers/news_data.py | 44 | |
| LOW | app/routers/stocks.py | 422 | |
| LOW | app/routers/stocks.py | 625 | |
| LOW | app/routers/stock_sync.py | 123 | |
| LOW | app/routers/stock_sync.py | 571 | |
| LOW | app/routers/config.py | 113 | |
| LOW | app/routers/config.py | 247 | |
| LOW | app/routers/config.py | 639 | |
| LOW | app/routers/config.py | 748 | |
| LOW | app/routers/config.py | 903 | |
| LOW | app/routers/config.py | 1134 | |
| LOW | app/routers/config.py | 1344 | |
| LOW | app/routers/analysis.py | 106 | |
| LOW | app/routers/analysis.py | 222 | |
| LOW | app/routers/analysis.py | 772 | |
| LOW | app/routers/analysis.py | 985 | |
| LOW | app/routers/paper.py | 194 | |
| LOW | app/routers/screening.py | 74 | |
| LOW | app/routers/screening.py | 276 | |
| LOW | app/routers/sse.py | 18 | |
| LOW | app/routers/sse.py | 113 | |
| LOW | app/routers/multi_source_sync.py | 41 | |
| LOW | app/routers/multi_source_sync.py | 89 | |
| LOW | app/routers/multi_source_sync.py | 155 | |
| LOW | app/routers/multi_source_sync.py | 193 | |
| LOW | app/routers/system_config.py | 64 | |
| LOW | app/routers/reports.py | 429 | |
| LOW | app/routers/social_media.py | 266 | |
| LOW | app/routers/akshare_init.py | 47 | |
| LOW | app/middleware/operation_log_middleware.py | 177 | |
| LOW | app/core/logging_config.py | 66 | |
| LOW | app/core/config_bridge.py | 15 | |
| LOW | app/core/config_bridge.py | 359 | |
| LOW | app/core/config_bridge.py | 673 | |
| LOW | app/core/unified_config.py | 259 | |
| LOW | app/core/unified_config.py | 327 | |
| LOW | app/utils/trading_time.py | 133 | |
| LOW | app/utils/error_formatter.py | 199 | |
| LOW | app/utils/report_exporter.py | 284 | |
| LOW | app/scripts/normalize_provider_keys.py | 139 | |
| LOW | app/scripts/migrate_mongo_db.py | 74 | |
| LOW | app/worker/news_data_sync_service.py | 89 | |
| LOW | app/worker/news_data_sync_service.py | 183 | |
| LOW | app/worker/news_data_sync_service.py | 228 | |
| LOW | app/worker/news_data_sync_service.py | 260 | |
| LOW | app/worker/news_data_sync_service.py | 357 | |
| LOW | app/worker/news_data_sync_service.py | 433 | |
| LOW | app/worker/example_sdk_sync_service.py | 211 | |
| LOW | app/worker/baostock_sync_service.py | 117 | |
| LOW | app/worker/baostock_sync_service.py | 172 | |
| LOW | app/worker/baostock_sync_service.py | 413 | |
| LOW | app/worker/baostock_sync_service.py | 493 | |
| LOW | app/worker/financial_data_sync_service.py | 143 | |
| LOW | app/worker/tushare_sync_service.py | 160 | |
| LOW | app/worker/tushare_sync_service.py | 228 | |
| LOW | app/worker/tushare_sync_service.py | 517 | |
| LOW | app/worker/tushare_sync_service.py | 543 | |
| LOW | app/worker/tushare_sync_service.py | 780 | |
| 720 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | scripts/mongo-init.js | 21 | print('✓ 创建应用用户成功'); |
| HIGH | scripts/mongo-init.js | 23 | print('⚠ 用户可能已存在: ' + e.message); |
| HIGH | scripts/mongo-init.js | 31 | print('\n创建集合...'); |
| HIGH | scripts/mongo-init.js | 187 | print('✓ 初始数据插入完成'); |
| HIGH | scripts/mongo-init.js | 191 | print('\n验证数据库初始化...'); |
| HIGH | scripts/mongo-init.js | 194 | print('✓ 集合数量: ' + collections.length); |
| HIGH | scripts/mongo-init.js | 200 | print('✓ 索引数量: ' + indexes); |
| HIGH | scripts/mongo-init.js | 203 | print('✓ 系统配置数量: ' + configCount); |
| HIGH | scripts/mongo-init.js | 205 | print('\n========================================'); |
| HIGH | scripts/mongo-init.js | 206 | print('TradingAgents数据库初始化完成!'); |
| HIGH | scripts/mongo-init.js | 207 | print('========================================'); |
| HIGH | scripts/mongo-init.js | 208 | print('数据库: tradingagents'); |
| HIGH | scripts/mongo-init.js | 209 | print('用户: tradingagents'); |
| HIGH | scripts/mongo-init.js | 210 | print('密码: tradingagents123'); |
| HIGH | scripts/mongo-init.js | 211 | print('集合数: ' + collections.length); |
| HIGH | scripts/mongo-init.js | 212 | print('索引数: ' + indexes); |
| HIGH | scripts/mongo-init.js | 213 | print('========================================'); |
| HIGH | scripts/mongo-init.js | 4 | print('开始初始化TradingAgents数据库...'); |
| HIGH | scripts/mongo-init.js | 63 | print('✓ 集合创建完成'); |
| HIGH | scripts/mongo-init.js | 67 | print('\n创建索引...'); |
| HIGH | scripts/mongo-init.js | 153 | print('✓ 索引创建完成'); |
| HIGH | scripts/mongo-init.js | 157 | print('\n插入初始数据...'); |
| HIGH | scripts/mongo-init-debug.js | 4 | print('========================================'); |
| HIGH | scripts/mongo-init-debug.js | 5 | print('🔍 MongoDB 初始化脚本开始执行'); |
| HIGH | scripts/mongo-init-debug.js | 6 | print('========================================'); |
| HIGH | scripts/mongo-init-debug.js | 9 | print('\n📋 环境变量检查:'); |
| HIGH | scripts/mongo-init-debug.js | 10 | print('MONGO_INITDB_ROOT_USERNAME: ' + (typeof MONGO_INITDB_ROOT_USERNAME !== 'undefined' ? MONGO_INITDB_ROOT_USERNAME : |
| HIGH | scripts/mongo-init-debug.js | 11 | print('MONGO_INITDB_ROOT_PASSWORD: ' + (typeof MONGO_INITDB_ROOT_PASSWORD !== 'undefined' ? '已设置' : '未设置')); |
| HIGH | scripts/mongo-init-debug.js | 12 | print('MONGO_INITDB_DATABASE: ' + (typeof MONGO_INITDB_DATABASE !== 'undefined' ? MONGO_INITDB_DATABASE : '未设置')); |
| HIGH | scripts/mongo-init-debug.js | 15 | print('\n📋 切换到 admin 数据库...'); |
| HIGH | scripts/mongo-init-debug.js | 17 | print('✅ 当前数据库: ' + db.getName()); |
| HIGH | scripts/mongo-init-debug.js | 20 | print('\n📋 检查现有用户...'); |
| HIGH | scripts/mongo-init-debug.js | 23 | print('现有用户数量: ' + users.users.length); |
| HIGH | scripts/mongo-init-debug.js | 25 | print('用户列表:'); |
| HIGH | scripts/mongo-init-debug.js | 27 | print(' - ' + user.user + ' (角色: ' + JSON.stringify(user.roles) + ')'); |
| HIGH | scripts/mongo-init-debug.js | 31 | print('⚠️ 无法获取用户列表: ' + e.message); |
| HIGH | scripts/mongo-init-debug.js | 35 | print('\n📋 创建 root 用户 (admin)...'); |
| HIGH | scripts/mongo-init-debug.js | 47 | print('✅ root 用户创建成功'); |
| HIGH | scripts/mongo-init-debug.js | 49 | print('⚠️ 用户可能已存在: ' + e.message); |
| HIGH | scripts/mongo-init-debug.js | 53 | print('\n📋 创建应用用户 (tradingagents)...'); |
| HIGH | scripts/mongo-init-debug.js | 65 | print('✅ 应用用户创建成功'); |
| HIGH | scripts/mongo-init-debug.js | 67 | print('⚠️ 用户可能已存在: ' + e.message); |
| HIGH | scripts/mongo-init-debug.js | 71 | print('\n📋 验证用户创建...'); |
| HIGH | scripts/mongo-init-debug.js | 74 | print('当前用户数量: ' + users.users.length); |
| HIGH | scripts/mongo-init-debug.js | 76 | print(' ✅ ' + user.user + ' (角色: ' + JSON.stringify(user.roles) + ')'); |
| HIGH | scripts/mongo-init-debug.js | 79 | print('❌ 无法验证用户: ' + e.message); |
| HIGH | scripts/mongo-init-debug.js | 83 | print('\n📋 切换到应用数据库 (tradingagents)...'); |
| HIGH | scripts/mongo-init-debug.js | 85 | print('✅ 当前数据库: ' + db.getName()); |
| HIGH | scripts/mongo-init-debug.js | 88 | print('\n📋 创建测试集合...'); |
| HIGH | scripts/mongo-init-debug.js | 91 | print('✅ 测试集合创建成功'); |
| HIGH | scripts/mongo-init-debug.js | 93 | print('❌ 集合创建失败: ' + e.message); |
| HIGH | scripts/mongo-init-debug.js | 97 | print('\n📋 插入测试数据...'); |
| HIGH | scripts/mongo-init-debug.js | 103 | print('✅ 测试数据插入成功'); |
| HIGH | scripts/mongo-init-debug.js | 105 | print('❌ 数据插入失败: ' + e.message); |
| HIGH | scripts/mongo-init-debug.js | 109 | print('\n📋 验证数据...'); |
| HIGH | scripts/mongo-init-debug.js | 112 | print('✅ 测试集合文档数量: ' + count); |
| HIGH | scripts/mongo-init-debug.js | 114 | print('❌ 数据验证失败: ' + e.message); |
| HIGH | scripts/mongo-init-debug.js | 117 | print('\n========================================'); |
| HIGH | scripts/mongo-init-debug.js | 118 | print('✅ MongoDB 初始化脚本执行完成'); |
| HIGH | scripts/mongo-init-debug.js | 119 | print('========================================'); |
| 12 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | app/__main__.py | 11 | # ============================================================================ |
| MEDIUM | app/__main__.py | 13 | # ============================================================================ |
| MEDIUM | tests/test_akshare_hk_apis.py | 48 | # ======================================== |
| MEDIUM | tests/test_akshare_hk_apis.py | 50 | # ======================================== |
| MEDIUM | tests/test_akshare_hk_apis.py | 91 | # ======================================== |
| MEDIUM | tests/test_akshare_hk_apis.py | 93 | # ======================================== |
| MEDIUM | tests/test_akshare_hk_apis.py | 107 | # ======================================== |
| MEDIUM | tests/test_akshare_hk_apis.py | 109 | # ======================================== |
| MEDIUM | tests/test_akshare_hk_apis.py | 124 | # ======================================== |
| MEDIUM | tests/test_akshare_hk_apis.py | 126 | # ======================================== |
| MEDIUM | tests/test_akshare_hk_apis.py | 150 | # ======================================== |
| MEDIUM | tests/test_akshare_hk_apis.py | 152 | # ======================================== |
| MEDIUM | tests/test_akshare_hk_apis.py | 173 | # ======================================== |
| MEDIUM | tests/test_akshare_hk_apis.py | 175 | # ======================================== |
| MEDIUM | docs/design/configuration_management.md | 14 | # =========================================== |
| MEDIUM | docs/design/configuration_management.md | 16 | # =========================================== |
| MEDIUM | docs/configuration/config-guide.md | 28 | # =========================================== |
| MEDIUM | docs/configuration/config-guide.md | 30 | # =========================================== |
| MEDIUM | docs/configuration/quotes_ingestion_config.md | 52 | # ======================================== |
| MEDIUM | docs/configuration/quotes_ingestion_config.md | 54 | # ======================================== |
| MEDIUM | docs/configuration/quotes_ingestion_config.md | 69 | # ======================================== |
| MEDIUM | docs/configuration/quotes_ingestion_config.md | 71 | # ======================================== |
| MEDIUM | docs/guides/portable-installation-guide.md | 351 | # ============================================================================ |
| MEDIUM | docs/guides/portable-installation-guide.md | 353 | # ============================================================================ |
| MEDIUM | docs/guides/portable-installation-guide.md | 367 | # ============================================================================ |
| MEDIUM | docs/guides/portable-installation-guide.md | 369 | # ============================================================================ |
| MEDIUM | docs/guides/portable-installation-guide.md | 381 | # ============================================================================ |
| MEDIUM | docs/guides/portable-installation-guide.md | 383 | # ============================================================================ |
| MEDIUM | docs/guides/portable-installation-guide.md | 398 | # ============================================================================ |
| MEDIUM | docs/guides/portable-installation-guide.md | 400 | # ============================================================================ |
| MEDIUM | docs/guides/portable-installation-guide.md | 415 | # ============================================================================ |
| MEDIUM | docs/guides/portable-installation-guide.md | 417 | # ============================================================================ |
| MEDIUM | docs/guides/installation-guide.md | 195 | # =========================================== |
| MEDIUM | docs/guides/installation-guide.md | 197 | # =========================================== |
| MEDIUM | docs/guides/installation-guide.md | 204 | # =========================================== |
| MEDIUM | docs/guides/installation-guide.md | 206 | # =========================================== |
| MEDIUM | docs/guides/installation-guide.md | 229 | # =========================================== |
| MEDIUM | docs/guides/installation-guide.md | 231 | # =========================================== |
| MEDIUM | docs/guides/installation-guide.md | 242 | # =========================================== |
| MEDIUM | docs/guides/installation-guide.md | 244 | # =========================================== |
| MEDIUM | docs/guides/installation-guide.md | 256 | # =========================================== |
| MEDIUM | docs/guides/installation-guide.md | 258 | # =========================================== |
| MEDIUM | docs/guides/INSTALLATION_GUIDE.md | 348 | # ============================================================================= |
| MEDIUM | docs/guides/INSTALLATION_GUIDE.md | 350 | # ============================================================================= |
| MEDIUM | docs/guides/INSTALLATION_GUIDE.md | 366 | # ============================================================================= |
| MEDIUM | docs/guides/INSTALLATION_GUIDE.md | 368 | # ============================================================================= |
| MEDIUM | docs/guides/INSTALLATION_GUIDE.md | 376 | # ============================================================================= |
| MEDIUM | docs/guides/INSTALLATION_GUIDE.md | 378 | # ============================================================================= |
| MEDIUM | docs/guides/INSTALLATION_GUIDE.md | 395 | # ============================================================================= |
| MEDIUM | docs/guides/INSTALLATION_GUIDE.md | 397 | # ============================================================================= |
| MEDIUM | scripts/test_google_sdk_basic.py | 31 | # ============================================================================ |
| MEDIUM | scripts/test_google_sdk_basic.py | 33 | # ============================================================================ |
| MEDIUM | scripts/test_google_sdk_basic.py | 61 | # ============================================================================ |
| MEDIUM | scripts/test_google_sdk_basic.py | 63 | # ============================================================================ |
| MEDIUM | scripts/test_google_sdk_basic.py | 93 | # ============================================================================ |
| MEDIUM | scripts/test_google_sdk_basic.py | 95 | # ============================================================================ |
| MEDIUM | scripts/test_google_sdk_basic.py | 127 | # ============================================================================ |
| MEDIUM | scripts/test_google_sdk_basic.py | 129 | # ============================================================================ |
| MEDIUM | scripts/test_google_sdk_basic.py | 163 | # ============================================================================ |
| MEDIUM | scripts/test_google_sdk_basic.py | 165 | # ============================================================================ |
| 4 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | app/services/simple_analysis_service.py | 138 | if model_api_key and model_api_key.strip() and model_api_key != "your-api-key": |
| HIGH | app/services/simple_analysis_service.py | 143 | if provider_api_key and provider_api_key.strip() and provider_api_key != "your-api-key": |
| HIGH | app/services/simple_analysis_service.py | 203 | if provider_api_key and provider_api_key.strip() and provider_api_key != "your-api-key": |
| HIGH | app/services/simple_analysis_service.py | 262 | if provider_api_key and provider_api_key.strip() and provider_api_key != "your-api-key": |
| HIGH | app/services/simple_analysis_service.py | 309 | if api_key and api_key.strip() and api_key != "your-api-key": |
| HIGH | tests/test_dashscope_adapter_fix.py | 286 | print(" Windows: set DASHSCOPE_API_KEY=your_api_key") |
| HIGH | tests/test_dashscope_adapter_fix.py | 287 | print(" Linux/Mac: export DASHSCOPE_API_KEY=your_api_key") |
| HIGH | tests/integration/test_dashscope_integration.py | 44 | print("💡 请设置: set DASHSCOPE_API_KEY=your_api_key") |
| HIGH | tests/integration/test_dashscope_integration.py | 51 | print("💡 请设置: set FINNHUB_API_KEY=your_api_key") |
| HIGH | docs/google-ai-base-url-support.md | 147 | google_api_key="YOUR_API_KEY" |
| HIGH | docs/google-ai-base-url-support.md | 157 | google_api_key="YOUR_API_KEY", |
| HIGH | docs/configuration/UNIFIED_CONFIG.md | 135 | api_key="your-api-key", |
| HIGH | docs/configuration/UNIFIED_CONFIG.md | 170 | api_key: 'your-api-key' |
| HIGH | docs/configuration/API_KEY_PRIORITY.md | 141 | api_key = "your-api-key-here" |
| HIGH | docs/configuration/dashscope-config.md | 229 | dashscope.api_key = "your_api_key" |
| HIGH | docs/configuration/migration/CONFIG_MIGRATION.md | 177 | api_key: 'your-api-key', |
| HIGH | docs/guides/config-management-guide.md | 95 | "api_key": "sk-your-api-key-here", |
| HIGH | docs/guides/stock_data_sdk_integration_guide.md | 438 | NEW_SDK_API_KEY=your_api_key |
| HIGH | …dingagents/dataflows/providers/examples/example_sdk.py | 367 | provider = ExampleSDKProvider(api_key="your_api_key") |
| HIGH | …dingagents/dataflows/providers/examples/example_sdk.py | 388 | async with ExampleSDKProvider(api_key="your_api_key") as provider: |
| HIGH | examples/demo_deepseek_analysis.py | 38 | logger.info(f" DEEPSEEK_API_KEY=your_api_key") |
| HIGH | examples/simple_analysis_demo.py | 29 | logger.info(f"💡 在 .env 文件中添加: DASHSCOPE_API_KEY=your_api_key") |
| HIGH | examples/dashscope_examples/demo_dashscope.py | 38 | logger.info(f" Windows: set DASHSCOPE_API_KEY=your_api_key") |
| HIGH | examples/dashscope_examples/demo_dashscope.py | 39 | logger.info(f" Linux/Mac: export DASHSCOPE_API_KEY=your_api_key") |
| HIGH | examples/dashscope_examples/demo_dashscope.py | 52 | logger.info(f" Windows: set FINNHUB_API_KEY=your_api_key") |
| HIGH | examples/dashscope_examples/demo_dashscope.py | 53 | logger.info(f" Linux/Mac: export FINNHUB_API_KEY=your_api_key") |
| HIGH | scripts/test_google_api_connection.py | 26 | print("请在 .env 文件中设置:GOOGLE_API_KEY=your-api-key") |
| HIGH | scripts/test_qianfan_raw.py | 214 | print(" 方式1 (推荐): QIANFAN_API_KEY=your_api_key") |
| HIGH | scripts/test_api_key_validation.py | 31 | ("your-api-key-here", False, "占位符 - your- 前缀 + -here 后缀"), |
| HIGH | scripts/test_google_api_with_proxy.py | 39 | print("请在 .env 文件中设置:GOOGLE_API_KEY=your-api-key") |
| HIGH | scripts/test_api_key_priority.py | 42 | ("your-api-key-here", False, "占位符 (your-)"), |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | web/app.py | 574 | const newUrl = currentUrl.origin + currentUrl.pathname + '?' + existingParams.toString(); |
| HIGH | web/utils/auth_manager.py | 82 | if (!authData) return null; |
| HIGH | web/utils/auth_manager.py | 92 | return null; |
| HIGH | web/utils/auth_manager.py | 103 | return null; |
| HIGH | web/components/sidebar.py | 47 | console.log('Loaded from localStorage:', key, value || defaultValue); |
| HIGH | web/components/sidebar.py | 48 | return value || defaultValue; |
| HIGH | scripts/check_old_mongodb_volume.py | 139 | if (config.llm_configs && config.llm_configs.length > 0) {{ |
| HIGH | scripts/check_old_mongodb_volume.py | 148 | if (config.data_source_configs && config.data_source_configs.length > 0) {{ |
| HIGH | scripts/fix_docker_logging.py | 258 | print("2. 重启容器: docker-compose down && docker-compose up -d") |
| HIGH | scripts/init_system_data.py | 327 | logger.info("2. 启动前端服务: cd frontend && npm run dev") |
| HIGH | scripts/fix_logging_config_error.py | 270 | print("2. 重启容器: docker-compose down && docker-compose up -d") |
| HIGH | scripts/verify_docker_logs.py | 234 | print(" 2. 重启容器: docker-compose down && docker-compose up -d") |
| HIGH | scripts/git/check_branch_overlap.py | 199 | git checkout feature/akshare-integration 2>/dev/null && git checkout -b backup/akshare-integration-$(date +%Y%m%d) |
| HIGH | scripts/git/check_branch_overlap.py | 200 | git checkout feature/akshare-integration-clean 2>/dev/null && git checkout -b backup/akshare-integration-clean-$(date +% |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | app/worker/baostock_sync_service.py | 0 | 获取最后同步日期 args: symbol: 股票代码,如果提供则返回该股票的最后日期+1天 returns: 日期字符串 (yyyy-mm-dd) |
| HIGH | app/worker/tushare_sync_service.py | 0 | 获取最后同步日期 args: symbol: 股票代码,如果提供则返回该股票的最后日期+1天 returns: 日期字符串 (yyyy-mm-dd) |
| HIGH | app/worker/akshare_sync_service.py | 0 | 获取最后同步日期 args: symbol: 股票代码,如果提供则返回该股票的最后日期+1天 returns: 日期字符串 (yyyy-mm-dd) |
| HIGH | app/services/news_data_service.py | 0 | 转换 mongodb objectid 为字符串,避免 json 序列化错误 args: data: 单个文档或文档列表 returns: 转换后的数据 |
| HIGH | app/services/internal_message_service.py | 0 | 转换 mongodb objectid 为字符串,避免 json 序列化错误 args: data: 单个文档或文档列表 returns: 转换后的数据 |
| HIGH | docs/fixes/mongodb_objectid_serialization_fix.md | 0 | 转换 mongodb objectid 为字符串,避免 json 序列化错误 args: data: 单个文档或文档列表 returns: 转换后的数据 |
| HIGH | tests/test_llm_tool_calling_comparison.py | 0 | # 000002 万科a 股票数据分析 ## 📊 实时行情 - 股票名称: 万科a - 当前价格: ¥6.56 - 涨跌幅: 0.61% - 成交量: 934,783手 ## 📈 技术指标 - 10日ema: ¥6.45 - 50日sma: |
| HIGH | tests/test_llm_tool_calling_comparison.py | 0 | # 000002 万科a 股票数据分析 ## 📊 实时行情 - 股票名称: 万科a - 当前价格: ¥6.56 - 涨跌幅: 0.61% - 成交量: 934,783手 ## 📈 技术指标 - 10日ema: ¥6.45 - 50日sma: |
| HIGH | tests/test_complete_tool_workflow.py | 0 | # 000002 万科a 股票数据分析 ## 📊 实时行情 - 股票名称: 万科a - 当前价格: ¥6.56 - 涨跌幅: 0.61% - 成交量: 934,783手 ## 📈 技术指标 - 10日ema: ¥6.45 - 50日sma: |
| HIGH | tests/test_complete_tool_workflow.py | 0 | # 000002 万科a 股票数据分析 ## 📊 实时行情 - 股票名称: 万科a - 当前价格: ¥6.56 - 涨跌幅: 0.61% - 成交量: 934,783手 ## 📈 技术指标 - 10日ema: ¥6.45 - 50日sma: |
| HIGH | docs/fixes/analyst_infinite_loop_fix.md | 0 | determine if fundamentals analysis should continue. |
| HIGH | docs/fixes/analyst_infinite_loop_fix.md | 0 | determine if fundamentals analysis should continue. |
| HIGH | docs/fixes/analyst_infinite_loop_fix.md | 0 | determine if fundamentals analysis should continue. |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | app/routers/stock_sync.py | 356 | # Step 1: 获取股票基础信息 |
| LOW | app/routers/stock_sync.py | 378 | # Step 2: 获取最新交易日和财务指标 |
| LOW | app/routers/stock_sync.py | 383 | # Step 3: 构建文档(参考 basics_sync_service 的逻辑) |
| LOW | app/routers/stock_sync.py | 478 | # Step 4: 更新数据库 |
| LOW | app/services/basics_sync_service.py | 194 | # Step 0: Check if Tushare is enabled |
| LOW | app/services/basics_sync_service.py | 206 | # Step 1: Fetch stock basic list from Tushare (blocking -> thread) |
| LOW | app/services/basics_sync_service.py | 211 | # Step 2: Determine latest trade_date and fetch daily_basic for financial metrics (blocking -> thread) |
| LOW | app/services/basics_sync_service.py | 219 | # Step 3: Upsert into MongoDB (batched bulk writes) |
| LOW | app/services/multi_source_basics_sync_service.py | 164 | # Step 1: 获取数据源管理器 |
| LOW | app/services/multi_source_basics_sync_service.py | 178 | # Step 2: 尝试从数据源获取股票列表 |
| LOW | app/services/multi_source_basics_sync_service.py | 188 | # Step 3: 获取最新交易日期和财务数据 |
| LOW | app/services/multi_source_basics_sync_service.py | 207 | # Step 5: 处理和更新数据(分批处理) |
| LOW | app/services/multi_source_basics_sync_service.py | 308 | # Step 7: 更新统计信息 |
| LOW | cli/main.py | 560 | # Step 1: Market selection |
| LOW | cli/main.py | 570 | # Step 2: Ticker symbol |
| LOW | cli/main.py | 580 | # Step 3: Analysis date |
| LOW | cli/main.py | 603 | # Step 5: Research depth |
| LOW | cli/main.py | 612 | # Step 6: LLM Provider |
| LOW | cli/main.py | 621 | # Step 7: Thinking agents |
| LOW | cli/main.py | 591 | # Step 4: Select analysts |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | docker-compose.hub.nginx.arm.yml | 1 | version: '3.8' |
| LOW | docker-compose.hub.nginx.yml | 1 | version: '3.8' |
| LOW | requirements-lock.txt | 1 | # ==================== 锁定版本依赖文件 ==================== |
| LOW | app/routers/stock_sync.py | 281 | if hist_result.get("success_count", 0) > 0: |
| LOW | app/routers/analysis.py | 921 | # user: dict = Depends(get_current_user), |
| LOW | app/worker/tushare_sync_service.py | 401 | # Dict[symbol, quote_data] |
| LOW | docs/design/v1.0.1/prompt_template_usage_examples.md | 61 | print("---") |
| LOW | docs/design/v1.0.1/prompt_template_usage_examples.md | 121 | print(rendered['system_prompt']) |
| LOW | docs/releases/upgrade-to-v0.1.13-preview.md | 201 | ### 问题 2: Google AI包导入失败 |
| LOW | docs/configuration/docker-config.md | 221 | |
| LOW | docs/configuration/quotes_ingestion_config.md | 61 | # - 付费用户建议: 5-60 秒 |
| LOW | …/integration/providers/tushare/tdx_removal_complete.md | 121 | #### 1. 检查环境变量 |
| LOW | docs/features/aggregator/CHANGELOG_AGGREGATOR.md | 201 | ### 使用聚合渠道模型 |
| LOW | docs/blog/2025-10-24-realtime-quotes-optimization.md | 401 | # 📈 实时行情入库服务 |
| LOW | docs/guides/report-export-guide.md | 61 | ## 📊 使用指南 |
| LOW | docs/guides/report-export-guide.md | 81 | # 1. 滚动到页面底部 |
| LOW | …cs/guides/tushare_unified/data_initialization_guide.md | 61 | |
| LOW | docs/deployment/SIMPLE_DEPLOYMENT_GUIDE.md | 41 | |
| LOW | docs/deployment/demo/deploy_demo_with_docker.md | 621 | # 找到 DASHSCOPE_API_KEY= 这一行 |
| LOW | docs/deployment/demo/deploy_demo_with_docker.md | 661 | cd ~/tradingagents-demo |
| LOW | docs/deployment/demo/deploy_demo_with_docker.md | 681 | # 将等号后面改为你的 API Key,例如:DEEPSEEK_API_KEY=sk-xxxxxxxxxxxxx |
| LOW | docs/deployment/demo/deploy_demo_with_docker.md | 721 | # 3. 下载环境配置文件 |
| LOW | tradingagents/config/runtime_settings.py | 41 | # 临时解决方案:完全禁用动态配置获取,避免事件循环冲突 |
| LOW | tradingagents/config/runtime_settings.py | 61 | # # 第三次检查:在调用asyncio.run之前再次确认 |
| LOW | scripts/smart_start.sh | 1 | #!/bin/bash |
| LOW | scripts/deploy_demo.sh | 1 | #!/bin/bash |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | main.py | 9 | # Create a custom config |
| MEDIUM | app/worker.py | 106 | # Define a thread-safe callback to publish progress from worker thread |
| MEDIUM | cli/main.py | 552 | # Create a boxed questionnaire for each step |
| MEDIUM | cli/main.py | 152 | # Create a deque to store recent messages with a maximum length |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | docs/design/v1.0.1/prompt_template_technical_spec.md | 25 | 加载指定的模版 Args: analyst_type: 分析师类型 (fundamentals/market/news/social) te |
| HIGH | …gagents/dataflows/providers/us/alpha_vantage_common.py | 167 | 发起 Alpha Vantage API 请求 Args: function: API 函数名(如 NEWS_SENTIMENT, OVERVIEW 等) params: 请求参数 |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | app/routers/sse.py | 141 | # Check if batch belongs to user |
| LOW | tests/config/test_logging_json.py | 20 | # Set CWD to temp |
| LOW | tradingagents/dataflows/interface.py | 380 | # Check if there are any available reports; if not, return a notification |
| LOW | tradingagents/dataflows/interface.py | 427 | # Check if there are any available reports; if not, return a notification |
| LOW | tradingagents/dataflows/interface.py | 474 | # Check if there are any available reports; if not, return a notification |
| LOW | tradingagents/dataflows/interface.py | 877 | # Check if data is empty |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | frontend/src/views/Settings/index.vue | 536 | email: authStore.user?.email || 'admin@example.com', |
| LOW | frontend/src/views/Settings/index.vue | 587 | generalSettings.value.email = newUser.email || 'admin@example.com' |
| LOW | docs/security/auth_system_improvement.md | 79 | "email": "user@example.com", |
| LOW | docs/blog/green-version-backup-restore-upgrade.md | 1174 | Send-MailMessage -To "admin@example.com" ` |
| LOW | docs/deployment/database/export-sanitization-guide.md | 117 | "email": "admin@example.com", |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | …gagents/dataflows/providers/us/alpha_vantage_common.py | 140 |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tradingagents/agents/utils/memory.py | 659 | # Example usage |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | tradingagents/dataflows/optimized_china_data.py | 568 | else: # detailed, comprehensive |