#!/usr/bin/env python3 """ 强制重新加载API模块并测试 """ import sys import os import importlib # 添加server目录到路径 server_path = os.path.join(os.path.dirname(__file__), 'server') sys.path.insert(0, server_path) def force_reload_test(): print("=== 强制重新加载测试 ===") try: # 清理模块缓存 modules_to_clear = [] for module_name in list(sys.modules.keys()): if 'model_manager' in module_name or 'utils' in module_name: modules_to_clear.append(module_name) for module_name in modules_to_clear: if module_name in sys.modules: del sys.modules[module_name] print(f"清理模块缓存: {module_name}") # 重新导入 from utils.model_manager import ModelManager # 测试ModelManager manager = ModelManager() models = manager.list_models() print(f"\n重新加载后,ModelManager找到 {len(models)} 个模型") # 手动执行API端点逻辑 print("\n=== 手动模拟API端点逻辑 ===") formatted_models = [] for model in models: # 生成model_id的逻辑(与API相同) model_id = model.get('filename', '').replace('.pth', '') if not model_id: # 备用方案 product_id = model.get('product_id', 'unknown') model_type = model.get('model_type', 'unknown') version = model.get('version', 'v1') model_id = f"{model_type}_product_{product_id}_{version}" formatted_model = { 'model_id': model_id, 'filename': model.get('filename', ''), # 关键字段 'product_id': model.get('product_id', ''), 'model_type': model.get('model_type', ''), 'version': model.get('version', 'v1'), 'metrics': model.get('metrics', {}), } formatted_models.append(formatted_model) print(f"格式化后模型数量: {len(formatted_models)}") for i, model in enumerate(formatted_models): print(f"\n模型 {i+1}:") print(f" filename: '{model.get('filename', 'MISSING')}'") print(f" model_id: '{model.get('model_id', 'MISSING')}'") print(f" product_id: '{model.get('product_id', 'MISSING')}'") if model.get('filename') and model.get('model_id'): print(" ✓ 该模型应该能正常显示详情和删除按钮") else: print(" ✗ 该模型有问题") return formatted_models except Exception as e: print(f"测试失败: {e}") import traceback traceback.print_exc() return [] if __name__ == "__main__": force_reload_test()