## 主要修复 - 修复Creo软件运行状态检测失败问题 - 添加完整的软件停止功能支持 - 改进多进程软件的进程管理逻辑 ## 技术改进 - 更新软件配置支持多进程名称检测 - 优化进程停止逻辑,增加超时配置 - 新增 stop_software WebSocket消息类型 - 完善错误处理和日志记录 ## 配置更新 - configs/software_config.yaml: 支持进程名称列表和停止超时 - 添加Revit 2017配置支持 ## 文档更新 - README.md: 更新软件配置说明和API列表 - frontend-api-docs.md: 添加停止软件API文档 - CHECKPOINT.md: 记录修复进展和解决方案 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
64 lines
2.3 KiB
Python
64 lines
2.3 KiB
Python
import sys
|
|
import asyncio
|
|
sys.path.append('app')
|
|
|
|
from core.software_manager import software_manager
|
|
|
|
async def test_software_manager():
|
|
print("=== 测试软件管理器 ===")
|
|
|
|
# 测试获取软件列表
|
|
print("\n1. 测试获取软件列表:")
|
|
try:
|
|
software_list = await software_manager.get_software_list()
|
|
print("✅ 软件列表获取成功:")
|
|
for software in software_list:
|
|
print(f" - {software['id']}: {software['name']} (运行: {software['is_running']})")
|
|
except Exception as e:
|
|
print(f"❌ 获取软件列表失败: {e}")
|
|
|
|
# 测试软件状态检查
|
|
print("\n2. 测试软件状态检查:")
|
|
try:
|
|
creo_running = software_manager.is_software_running("creo")
|
|
autocad_running = software_manager.is_software_running("autocad")
|
|
print(f"✅ Creo 运行状态: {creo_running}")
|
|
print(f"✅ AutoCAD 运行状态: {autocad_running}")
|
|
except Exception as e:
|
|
print(f"❌ 软件状态检查失败: {e}")
|
|
|
|
# 测试启动软件(不会真正启动,因为路径可能不存在)
|
|
print("\n3. 测试启动软件任务创建:")
|
|
try:
|
|
task = await software_manager.start_software("creo")
|
|
print(f"✅ 启动任务创建成功:")
|
|
print(f" - 任务ID: {task.id}")
|
|
print(f" - 软件ID: {task.software_id}")
|
|
print(f" - 任务类型: {task.task_type}")
|
|
print(f" - 初始状态: {task.status}")
|
|
|
|
# 等待一会儿看任务状态变化
|
|
await asyncio.sleep(2)
|
|
updated_task = software_manager.get_task(task.id)
|
|
print(f" - 2秒后状态: {updated_task.status}")
|
|
print(f" - 进度: {updated_task.progress}%")
|
|
if updated_task.error_message:
|
|
print(f" - 错误信息: {updated_task.error_message}")
|
|
|
|
except Exception as e:
|
|
print(f"❌ 启动软件任务失败: {e}")
|
|
|
|
# 测试错误处理
|
|
print("\n4. 测试错误处理:")
|
|
try:
|
|
# 尝试启动不存在的软件
|
|
await software_manager.start_software("nonexistent")
|
|
except ValueError as e:
|
|
print(f"✅ 正确捕获错误: {e}")
|
|
except Exception as e:
|
|
print(f"❌ 未预期的错误: {e}")
|
|
|
|
print("\n=== 软件管理器测试完成 ===")
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(test_software_manager()) |