213 lines
6.5 KiB
Markdown
213 lines
6.5 KiB
Markdown
# Simulation Mode Impact Analysis
|
||
|
||
## 概述
|
||
本文档分析仿真模式在整个系统中的影响范围,包括前端、后端、API和测试代码。
|
||
|
||
## 影响范围分析
|
||
|
||
### 1. 前端影响
|
||
|
||
#### 1.1 JavaScript代码
|
||
**文件**: `frontend/static/js/main.js`
|
||
**影响**:
|
||
- 第260行:`simulation_mode: false` 硬编码在API请求中
|
||
- 这是唯一的前端仿真模式引用
|
||
|
||
**修改需求**:
|
||
- 移除JSON请求体中的`simulation_mode`字段
|
||
- 前端不需要其他修改,因为没有UI控件来切换仿真模式
|
||
|
||
#### 1.2 HTML界面
|
||
**文件**: `frontend/index.html`
|
||
**影响**: 无
|
||
- HTML中没有仿真模式相关的UI元素
|
||
- 不需要修改HTML代码
|
||
|
||
### 2. 后端核心组件影响
|
||
|
||
#### 2.1 ANSYSSessionManager (最高影响)
|
||
**文件**: `backend/pymechanical/session_manager.py`
|
||
**影响程度**: 🔴 高
|
||
**详细影响**:
|
||
- 构造函数参数:`simulation_mode: bool = False`
|
||
- 实例变量:`self.simulation_mode`
|
||
- 17个条件分支:`if self.simulation_mode:`
|
||
- 2个回退逻辑:设置`self.simulation_mode = True`
|
||
- 所有主要方法都有仿真分支
|
||
|
||
**关键方法受影响**:
|
||
- `start_session()` - 仿真启动逻辑
|
||
- `import_geometry()` - 仿真几何导入
|
||
- `validate_geometry()` - 仿真验证
|
||
- `create_named_selections()` - 仿真命名选择
|
||
- `apply_mesh_controls()` - 仿真网格控制
|
||
- `generate_mesh()` - 仿真网格生成
|
||
- `check_mesh_quality()` - 仿真质量检查
|
||
- `close_session()` - 仿真清理
|
||
|
||
#### 2.2 MeshQualityChecker (中等影响)
|
||
**文件**: `backend/pymechanical/mesh_quality_checker.py`
|
||
**影响程度**: 🟡 中
|
||
**详细影响**:
|
||
- 仿真模式检测逻辑(4行代码)
|
||
- 1个条件分支:`if self.simulation_mode:`
|
||
- `_simulate_quality_check()` 方法
|
||
|
||
#### 2.3 VisualizationExporter (中等影响)
|
||
**文件**: `backend/utils/visualization_exporter.py`
|
||
**影响程度**: 🟡 中
|
||
**详细影响**:
|
||
- 仿真模式检测逻辑(5行代码)
|
||
- 2个条件分支:`if self.simulation_mode:`
|
||
- `_simulate_image_export()` 方法
|
||
- 导出摘要中的仿真模式标记
|
||
|
||
#### 2.4 MechdbReader (低影响)
|
||
**文件**: `backend/utils/mechdb_reader.py`
|
||
**影响程度**: 🟢 低
|
||
**详细影响**:
|
||
- 构造函数参数:`simulation_mode: bool = False`
|
||
- 1个条件分支:`if self.simulation_mode:`
|
||
- `_simulate_mechdb_reading()` 方法
|
||
|
||
### 3. API层影响
|
||
|
||
#### 3.1 API路由 (中等影响)
|
||
**文件**: `backend/api/routes.py`
|
||
**影响程度**: 🟡 中
|
||
**详细影响**:
|
||
- `generate_mesh()` 函数中的参数处理:
|
||
```python
|
||
simulation_mode = False
|
||
if request.is_json and request.json:
|
||
simulation_mode = request.json.get('simulation_mode', False)
|
||
```
|
||
- 传递给`process_blade_mesh_with_state_updates()`的参数
|
||
|
||
#### 3.2 Mesh Processor (中等影响)
|
||
**文件**: `backend/utils/mesh_processor.py`
|
||
**影响程度**: 🟡 中
|
||
**详细影响**:
|
||
- `process_blade_mesh()` 函数参数:`simulation_mode: bool = False`
|
||
- `process_blade_mesh_with_state_updates()` 函数参数:`simulation_mode: bool = False`
|
||
- 传递给`ANSYSSessionManager(simulation_mode=simulation_mode)`
|
||
|
||
### 4. 测试代码影响
|
||
|
||
#### 4.1 需要更新的真实ANSYS测试 (13个文件)
|
||
**影响程度**: 🟡 中
|
||
**文件列表**:
|
||
1. `test/test_verify_mesh.py`
|
||
2. `test/test_simple_verify.py`
|
||
3. `test/test_simple_mesh.py`
|
||
4. `test/test_real_ansys.py`
|
||
5. `test/test_pymechanical_debug.py`
|
||
6. `test/test_named_selections.py`
|
||
7. `test/test_mesh_success.py`
|
||
8. `test/test_mesh_like_example.py`
|
||
9. `test/test_mesh_generation.py`
|
||
10. `test/test_mesh_files.py`
|
||
11. `test/test_mesh_controller.py`
|
||
12. `test/test_integrated_mesh_controls.py`
|
||
13. `test/test_geometry_import.py`
|
||
|
||
**修改需求**: 移除`simulation_mode=False`参数
|
||
|
||
#### 4.2 需要删除的仿真模式测试 (9个文件)
|
||
**影响程度**: 🔴 高
|
||
**文件列表**:
|
||
1. `test/test_suite.py` - `test_session_manager_simulation_mode()`
|
||
2. `test/test_named_selections.py` - `test_simulation_mode()`
|
||
3. `test/test_mesh_quality.py` - 仿真模式测试
|
||
4. `test/test_mesh_processor.py` - `simulation_mode=True`调用
|
||
5. `test/test_mesh_generation.py` - 仿真模式测试
|
||
6. `test/test_mesh_controller.py` - 仿真模式测试
|
||
7. `test/test_integrated_mesh_controls.py` - `test_simulation_mode()`
|
||
8. `test/test_visualization_exporter.py` - 仿真模式断言
|
||
9. `test/test_mechdb_reader.py` - 仿真模式测试
|
||
|
||
**修改需求**: 删除仿真模式测试函数或重写为真实模式测试
|
||
|
||
## 依赖关系分析
|
||
|
||
### 1. 核心依赖链
|
||
```
|
||
API Routes → Mesh Processor → ANSYSSessionManager
|
||
↓
|
||
MeshQualityChecker
|
||
VisualizationExporter
|
||
MechdbReader
|
||
```
|
||
|
||
### 2. 移除顺序建议
|
||
1. **第一步**: 清理ANSYSSessionManager(核心组件)
|
||
2. **第二步**: 更新依赖组件(MeshQualityChecker, VisualizationExporter等)
|
||
3. **第三步**: 更新API层(routes.py, mesh_processor.py)
|
||
4. **第四步**: 更新前端(main.js)
|
||
5. **第五步**: 清理测试代码
|
||
|
||
## 风险评估
|
||
|
||
### 高风险区域
|
||
1. **ANSYSSessionManager**: 核心组件,影响所有功能
|
||
- 风险:可能破坏现有的真实ANSYS集成
|
||
- 缓解:仔细保留真实逻辑,逐步测试
|
||
|
||
2. **测试覆盖度**: 删除仿真测试可能降低测试覆盖度
|
||
- 风险:回归测试能力下降
|
||
- 缓解:确保真实ANSYS测试覆盖所有功能
|
||
|
||
### 中等风险区域
|
||
1. **API兼容性**: 前端可能依赖现有API格式
|
||
- 风险:前端调用失败
|
||
- 缓解:保持API响应格式一致
|
||
|
||
2. **错误处理**: 移除仿真模式可能影响错误处理逻辑
|
||
- 风险:错误处理不当
|
||
- 缓解:增强真实模式的错误处理
|
||
|
||
### 低风险区域
|
||
1. **前端UI**: 没有仿真模式相关的UI元素
|
||
2. **配置文件**: 没有仿真模式相关配置
|
||
|
||
## 测试策略
|
||
|
||
### 1. 单元测试
|
||
- 每个组件移除仿真模式后进行单元测试
|
||
- 确保真实逻辑功能完整
|
||
|
||
### 2. 集成测试
|
||
- 端到端测试完整的网格生成流程
|
||
- 验证API响应格式保持一致
|
||
|
||
### 3. 回归测试
|
||
- 对比移除前后的功能完整性
|
||
- 确保没有功能丢失
|
||
|
||
## 预期收益
|
||
|
||
### 1. 代码简化
|
||
- 移除约200行仿真相关代码
|
||
- 简化条件逻辑,提高代码可读性
|
||
|
||
### 2. 维护性提升
|
||
- 减少代码分支,降低维护复杂度
|
||
- 专注于真实ANSYS集成的优化
|
||
|
||
### 3. 性能提升
|
||
- 移除不必要的条件判断
|
||
- 减少内存占用
|
||
|
||
## 实施建议
|
||
|
||
### 1. 分阶段实施
|
||
- 不要一次性移除所有仿真代码
|
||
- 每个阶段都进行充分测试
|
||
|
||
### 2. 保留备份
|
||
- 在移除前创建代码备份
|
||
- 准备回滚计划
|
||
|
||
### 3. 文档更新
|
||
- 同步更新相关文档
|
||
- 更新API文档和用户指南 |