ShopTRAINING/test/direct_api_test.py
2025-07-02 11:05:23 +08:00

82 lines
2.7 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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()