first commit

This commit is contained in:
zhaojie
2025-09-06 21:06:18 +08:00
commit 8083f136c9
94 changed files with 20559 additions and 0 deletions

237
test_new_features.py Normal file
View File

@@ -0,0 +1,237 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
测试新功能脚本
"""
import requests
import json
import time
def test_knowledge_pagination():
"""测试知识库分页功能"""
print("📚 测试知识库分页功能")
print("-" * 40)
base_url = "http://localhost:5000"
try:
# 测试分页获取
response = requests.get(f"{base_url}/api/knowledge?page=1&per_page=5")
if response.status_code == 200:
data = response.json()
if 'knowledge' in data:
print(f"✅ 分页数据获取成功")
print(f" - 当前页: {data.get('page', 1)}")
print(f" - 每页数量: {data.get('per_page', 10)}")
print(f" - 总页数: {data.get('total_pages', 0)}")
print(f" - 总条目数: {data.get('total', 0)}")
print(f" - 当前页条目数: {len(data.get('knowledge', []))}")
else:
print("❌ 分页数据格式错误")
else:
print(f"❌ HTTP错误: {response.status_code}")
except Exception as e:
print(f"❌ 请求错误: {e}")
def test_knowledge_verification():
"""测试知识库验证功能"""
print("\n🔍 测试知识库验证功能")
print("-" * 40)
base_url = "http://localhost:5000"
try:
# 1. 添加测试知识库
test_knowledge = {
"question": "测试验证功能 - 如何测试新功能?",
"answer": "这是一个测试答案,用于验证知识库验证功能。",
"category": "技术问题",
"confidence_score": 0.8
}
response = requests.post(f"{base_url}/api/knowledge", json=test_knowledge)
if response.status_code == 200:
data = response.json()
if data.get("success"):
print("✅ 测试知识库添加成功")
# 2. 获取知识库列表查看验证状态
response = requests.get(f"{base_url}/api/knowledge?page=1&per_page=10")
if response.status_code == 200:
knowledge_data = response.json()
if 'knowledge' in knowledge_data:
# 查找刚添加的知识库
test_entry = None
for entry in knowledge_data['knowledge']:
if "测试验证功能" in entry['question']:
test_entry = entry
break
if test_entry:
print(f"✅ 找到测试知识库条目 (ID: {test_entry['id']})")
print(f" - 验证状态: {'已验证' if test_entry.get('is_verified') else '未验证'}")
# 3. 测试验证功能
verify_response = requests.post(
f"{base_url}/api/knowledge/verify/{test_entry['id']}",
json={"verified_by": "test_user"}
)
if verify_response.status_code == 200:
verify_data = verify_response.json()
if verify_data.get("success"):
print("✅ 知识库验证成功")
# 4. 再次检查验证状态
response = requests.get(f"{base_url}/api/knowledge?page=1&per_page=10")
if response.status_code == 200:
knowledge_data = response.json()
if 'knowledge' in knowledge_data:
for entry in knowledge_data['knowledge']:
if entry['id'] == test_entry['id']:
print(f"✅ 验证状态更新成功: {'已验证' if entry.get('is_verified') else '未验证'}")
break
else:
print("❌ 知识库验证失败")
else:
print(f"❌ 验证请求失败: {verify_response.status_code}")
else:
print("❌ 未找到测试知识库条目")
else:
print("❌ 知识库数据格式错误")
else:
print(f"❌ 获取知识库失败: {response.status_code}")
else:
print("❌ 测试知识库添加失败")
else:
print(f"❌ HTTP错误: {response.status_code}")
except Exception as e:
print(f"❌ 测试过程中出现错误: {e}")
def test_vehicle_data():
"""测试车辆数据功能"""
print("\n🚗 测试车辆数据功能")
print("-" * 40)
base_url = "http://localhost:5000"
try:
# 1. 初始化示例车辆数据
response = requests.post(f"{base_url}/api/vehicle/init-sample-data")
if response.status_code == 200:
data = response.json()
if data.get("success"):
print("✅ 示例车辆数据初始化成功")
else:
print("❌ 示例车辆数据初始化失败")
else:
print(f"❌ 初始化请求失败: {response.status_code}")
# 2. 获取车辆数据
response = requests.get(f"{base_url}/api/vehicle/data?vehicle_id=V001&limit=5")
if response.status_code == 200:
data = response.json()
print(f"✅ 车辆数据获取成功,共 {len(data)} 条记录")
for item in data[:2]: # 显示前2条
print(f" - {item['data_type']}: {item['timestamp']}")
else:
print(f"❌ 获取车辆数据失败: {response.status_code}")
# 3. 获取车辆最新数据
response = requests.get(f"{base_url}/api/vehicle/data/V001/latest")
if response.status_code == 200:
data = response.json()
print(f"✅ 车辆最新数据获取成功,数据类型: {list(data.keys())}")
else:
print(f"❌ 获取车辆最新数据失败: {response.status_code}")
# 4. 获取车辆摘要
response = requests.get(f"{base_url}/api/vehicle/data/V001/summary")
if response.status_code == 200:
data = response.json()
print(f"✅ 车辆摘要获取成功")
print(f" - 车辆ID: {data.get('vehicle_id')}")
print(f" - 状态: {data.get('status')}")
print(f" - 电池电量: {data.get('battery_level')}%")
print(f" - 故障数量: {data.get('fault_count')}")
else:
print(f"❌ 获取车辆摘要失败: {response.status_code}")
except Exception as e:
print(f"❌ 测试过程中出现错误: {e}")
def test_file_upload():
"""测试文件上传功能"""
print("\n📁 测试文件上传功能")
print("-" * 40)
base_url = "http://localhost:5000"
try:
# 创建测试文件内容
test_content = """
车辆远程启动使用指南
1. 远程启动条件
- 车辆处于P档
- 手刹拉起
- 车门已锁
- 电池电量充足
2. 操作步骤
- 打开APP
- 点击远程启动按钮
- 确认启动条件
- 等待启动完成
3. 注意事项
- 启动后10分钟内需要踩刹车
- 如遇问题请及时联系客服
"""
# 模拟文件上传
files = {'file': ('vehicle_guide.txt', test_content, 'text/plain')}
data = {
'process_method': 'auto',
'category': '远程控制',
'confidence_score': 0.8
}
response = requests.post(f"{base_url}/api/knowledge/upload", files=files, data=data)
if response.status_code == 200:
result = response.json()
if result.get("success"):
print(f"✅ 文件上传成功,生成了 {result.get('knowledge_count', 0)} 条知识")
else:
print(f"❌ 文件上传失败: {result.get('error', '未知错误')}")
else:
print(f"❌ HTTP错误: {response.status_code}")
except Exception as e:
print(f"❌ 测试过程中出现错误: {e}")
def main():
"""主函数"""
print("🧪 TSP智能助手 - 新功能测试")
print("="*50)
# 测试各项功能
test_knowledge_pagination()
test_knowledge_verification()
test_vehicle_data()
test_file_upload()
print("\n" + "="*50)
print("🎉 新功能测试完成!")
print("\n新功能总结:")
print("✅ 知识库分页显示 - 解决只能显示两个的问题")
print("✅ 知识库验证功能 - 未经核实的知识库不可输出")
print("✅ 车辆实时数据 - 支持车辆数据查询和管理")
print("✅ 文件上传功能 - 支持文件自动生成知识库")
print("✅ 分页显示 - 新增知识库可以正常显示")
if __name__ == "__main__":
main()