3.1 KiB
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 →
- 限制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:股票名称→nameinvestment_rating→ratinginvestment_advice→operation_advice
main_force_ui.py:advice→operation_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"
}
测试建议
-
功能测试:
- 运行10只股票的批量分析
- 检查历史记录是否正确保存
- 验证股票名称和评级正确显示
-
性能测试:
- 测试大量DataFrame数据的序列化性能
- 验证100行限制是否合理
-
边界测试:
- 测试包含异常数据的分析结果
- 测试空DataFrame的处理
- 测试None值的处理