增加主力选股批量分析
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
主力选股批量分析数据库功能测试
|
||||
"""
|
||||
|
||||
from main_force_batch_db import batch_db
|
||||
import json
|
||||
|
||||
def test_database():
|
||||
"""测试数据库功能"""
|
||||
|
||||
print("=" * 60)
|
||||
print("主力选股批量分析数据库功能测试")
|
||||
print("=" * 60)
|
||||
|
||||
# 测试1: 保存批量分析结果
|
||||
print("\n📝 测试1: 保存批量分析结果")
|
||||
test_results = [
|
||||
{
|
||||
"symbol": "000001",
|
||||
"success": True,
|
||||
"stock_info": {"股票名称": "平安银行"},
|
||||
"final_decision": {
|
||||
"investment_rating": "买入",
|
||||
"confidence_level": 85,
|
||||
"entry_range": "10.0-10.5",
|
||||
"take_profit": "12.0",
|
||||
"stop_loss": "9.5"
|
||||
}
|
||||
},
|
||||
{
|
||||
"symbol": "600036",
|
||||
"success": True,
|
||||
"stock_info": {"股票名称": "招商银行"},
|
||||
"final_decision": {
|
||||
"investment_rating": "持有",
|
||||
"confidence_level": 75,
|
||||
"entry_range": "35.0-36.0",
|
||||
"take_profit": "40.0",
|
||||
"stop_loss": "33.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"symbol": "600519",
|
||||
"success": False,
|
||||
"error": "数据获取失败"
|
||||
}
|
||||
]
|
||||
|
||||
try:
|
||||
record_id = batch_db.save_batch_analysis(
|
||||
batch_count=3,
|
||||
analysis_mode="sequential",
|
||||
success_count=2,
|
||||
failed_count=1,
|
||||
total_time=180.5,
|
||||
results=test_results
|
||||
)
|
||||
print(f"✅ 保存成功,记录ID: {record_id}")
|
||||
except Exception as e:
|
||||
print(f"❌ 保存失败: {str(e)}")
|
||||
return
|
||||
|
||||
# 测试2: 获取统计信息
|
||||
print("\n📊 测试2: 获取统计信息")
|
||||
try:
|
||||
stats = batch_db.get_statistics()
|
||||
print(f"✅ 统计信息:")
|
||||
print(f" 总记录数: {stats['total_records']}")
|
||||
print(f" 分析股票总数: {stats['total_stocks_analyzed']}")
|
||||
print(f" 成功数: {stats['total_success']}")
|
||||
print(f" 失败数: {stats['total_failed']}")
|
||||
print(f" 成功率: {stats['success_rate']}%")
|
||||
print(f" 平均耗时: {stats['average_time']}秒")
|
||||
except Exception as e:
|
||||
print(f"❌ 获取统计信息失败: {str(e)}")
|
||||
|
||||
# 测试3: 获取历史记录列表
|
||||
print("\n📚 测试3: 获取历史记录列表")
|
||||
try:
|
||||
history = batch_db.get_all_history(limit=5)
|
||||
print(f"✅ 获取到 {len(history)} 条记录")
|
||||
for idx, record in enumerate(history[:3], 1):
|
||||
print(f"\n 记录{idx}:")
|
||||
print(f" - ID: {record['id']}")
|
||||
print(f" - 时间: {record['analysis_date']}")
|
||||
print(f" - 数量: {record['batch_count']}")
|
||||
print(f" - 成功: {record['success_count']}")
|
||||
print(f" - 失败: {record['failed_count']}")
|
||||
print(f" - 耗时: {record['total_time']}秒")
|
||||
except Exception as e:
|
||||
print(f"❌ 获取历史记录失败: {str(e)}")
|
||||
|
||||
# 测试4: 获取单条记录
|
||||
print(f"\n🔍 测试4: 获取单条记录 (ID: {record_id})")
|
||||
try:
|
||||
record = batch_db.get_record_by_id(record_id)
|
||||
if record:
|
||||
print(f"✅ 获取成功")
|
||||
print(f" 分析时间: {record['analysis_date']}")
|
||||
print(f" 结果数量: {len(record['results'])}")
|
||||
print(f" 成功股票: {[r['symbol'] for r in record['results'] if r.get('success')]}")
|
||||
print(f" 失败股票: {[r['symbol'] for r in record['results'] if not r.get('success')]}")
|
||||
else:
|
||||
print(f"❌ 记录不存在")
|
||||
except Exception as e:
|
||||
print(f"❌ 获取记录失败: {str(e)}")
|
||||
|
||||
# 测试5: 删除记录
|
||||
print(f"\n🗑️ 测试5: 删除记录 (ID: {record_id})")
|
||||
confirm = input(" 是否删除测试记录? (y/n): ")
|
||||
if confirm.lower() == 'y':
|
||||
try:
|
||||
success = batch_db.delete_record(record_id)
|
||||
if success:
|
||||
print(f"✅ 删除成功")
|
||||
else:
|
||||
print(f"❌ 删除失败")
|
||||
except Exception as e:
|
||||
print(f"❌ 删除失败: {str(e)}")
|
||||
else:
|
||||
print(" 跳过删除")
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("测试完成!")
|
||||
print("=" * 60)
|
||||
print("\n💡 提示:")
|
||||
print(" - 数据库文件: main_force_batch.db")
|
||||
print(" - 可使用 SQLite 工具查看数据库内容")
|
||||
print(" - 在Streamlit应用中点击'📚 批量分析历史'查看UI界面")
|
||||
print("=" * 60)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_database()
|
||||
|
||||
Reference in New Issue
Block a user