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