Files
aiagents-stock/docs/主力选股批量分析修复说明.md
T
2025-10-24 14:56:34 +08:00

3.1 KiB

主力选股批量分析修复说明

修复日期

2025-10-22

修复问题

1. JSON序列化失败

问题描述: 批量分析结果保存到历史记录时失败,错误信息:Object of type DataFrame is not JSON serializable

原因: 分析结果中包含Pandas DataFrame和Series对象,无法直接序列化为JSON

解决方案:

  • main_force_batch_db.py 中添加 _clean_results_for_json() 方法
  • 递归清理所有不可序列化的对象:
    • DataFrame → to_dict('records')
    • Series → to_dict()
    • 其他对象 → str(value)
  • 限制DataFrame最大行数为100,避免数据过大

相关文件:

  • main_force_batch_db.py (lines 50-102)

2. 历史记录显示N/A

问题描述: 批量分析历史记录中,股票名称和评级显示为N/A

原因: 字段名不匹配

  • 代码中访问: stock_info.get('股票名称', 'N/A')
  • 实际字段名: stock_info['name']
  • 代码中访问: final_decision.get('investment_rating', 'N/A')
  • 实际字段名: final_decision['rating']

解决方案: 修复以下文件中的字段名访问:

  • main_force_history_ui.py:
    • 股票名称name
    • investment_ratingrating
    • investment_adviceoperation_advice
  • main_force_ui.py:
    • adviceoperation_advice

相关文件:

  • main_force_history_ui.py (lines 109, 110, 126, 130)
  • main_force_ui.py (line 906)

3. 详细调试日志

问题描述: 难以追踪批量分析和保存过程中的问题

解决方案:

  • 在并行分析中添加详细的进度日志
  • 在保存历史记录前添加数据类型检查
  • 添加保存耗时统计
  • 添加详细的错误堆栈信息

相关文件:

  • main_force_ui.py (lines 650-692, 706-753)

数据结构参考

stock_info 字段

{
    "symbol": "600519",
    "name": "贵州茅台",  # <-- 正确的字段名
    "current_price": "1850.00",
    "change_percent": "2.5%",
    "pe_ratio": "30.5",
    "pb_ratio": "10.2",
    "market_cap": "2.3万亿",
    "market": "中国A股",
    "exchange": "上海/深圳证券交易所"
}

final_decision 字段

{
    "rating": "买入",  # <-- 正确的字段名
    "target_price": "2000",
    "operation_advice": "...",  # <-- 正确的字段名
    "entry_range": "1800-1850",
    "take_profit": "2000",
    "stop_loss": "1750",
    "holding_period": "3-6个月",
    "position_size": "中等仓位",
    "risk_warning": "...",
    "confidence_level": "8"
}

测试建议

  1. 功能测试:

    • 运行10只股票的批量分析
    • 检查历史记录是否正确保存
    • 验证股票名称和评级正确显示
  2. 性能测试:

    • 测试大量DataFrame数据的序列化性能
    • 验证100行限制是否合理
  3. 边界测试:

    • 测试包含异常数据的分析结果
    • 测试空DataFrame的处理
    • 测试None值的处理

相关文档