ShopTRAINING/test/direct_api_test.py

82 lines
2.7 KiB
Python
Raw Normal View History

2025-07-02 11:05:23 +08:00
#!/usr/bin/env python
"""
直接测试API端点逻辑
"""
import sys
import os
sys.path.append('server')
def simulate_api_call():
"""模拟API调用"""
print("=== 模拟API端点调用 ===")
try:
# 模拟从server目录运行
original_cwd = os.getcwd()
server_dir = os.path.join(original_cwd, 'server')
os.chdir(server_dir)
# 重新添加路径
sys.path.insert(0, server_dir)
print(f"当前工作目录: {os.getcwd()}")
# 直接导入模型管理器模拟API中的导入
from utils.model_manager import model_manager
print(f"模型管理器目录: {model_manager.model_dir}")
print(f"目录存在: {os.path.exists(model_manager.model_dir)}")
if os.path.exists(model_manager.model_dir):
files = os.listdir(model_manager.model_dir)
print(f"目录文件: {files}")
# 调用API中的逻辑
models = model_manager.list_models()
print(f"原始模型数量: {len(models)}")
# 格式化响应数据与API相同
formatted_models = []
for model in models:
formatted_model = {
'model_id': model.get('filename', '').replace('.pth', ''),
'product_id': model.get('product_id', ''),
'product_name': model.get('product_name', model.get('product_id', '')),
'model_type': model.get('model_type', ''),
'training_mode': model.get('training_mode', 'product'),
'store_id': model.get('store_id'),
'aggregation_method': model.get('aggregation_method'),
'version': model.get('version', 'v1'),
'created_at': model.get('created_at', model.get('modified_at', '')),
'file_size': model.get('file_size', 0),
'metrics': model.get('metrics', {}),
'config': model.get('config', {})
}
formatted_models.append(formatted_model)
print(f"格式化后模型数量: {len(formatted_models)}")
if formatted_models:
print("API将返回:")
import json
print(json.dumps({
"status": "success",
"data": formatted_models,
"total": len(formatted_models)
}, indent=2, ensure_ascii=False))
else:
print("API将返回空数据")
return formatted_models
except Exception as e:
print(f"模拟失败: {e}")
import traceback
traceback.print_exc()
return []
finally:
os.chdir(original_cwd)
if __name__ == "__main__":
simulate_api_call()