# 分层管理功能重构项目计划

## 项目概述

**项目名称**: 分层管理功能重构  
**项目类型**: 功能重构与简化  
**目标版本**: NavisworksTransport v1.1.0  
**预计工期**: 2-3周  
**项目负责人**: 开发团队  

### 核心目标

将现有的复杂独立对话框模式的分层管理功能，重构为4个核心功能模块的页签集成模式，提供更简洁、高效的用户体验。

## 需求分析

### 用户核心需求
1. **楼层分析功能**: 检测模型是否具备层属性，评估按层分解的可行性
2. **设置层属性功能**: 为不具备层属性的模型手动设置层属性（支持选择树分支和子节点）
3. **分层保存功能**: 按楼层或指定属性分层保存为独立nwd文件（包含预览功能）
4. **选中保存功能**: 将选择树中当前选中内容保存为单独nwd文件

### 技术背景分析
- **现有资产**: ModelSplitterManager(约3500行代码)，包含完整的分层算法
- **依赖组件**: FloorDetector, AttributeGrouper, FileExporter等核心组件
- **UI架构**: WPF + WinForms混合架构，TabControl页签模式
- **API集成**: Navisworks 2026 API，双API策略(Native + COM)

## 任务分解与优先级

### 阶段1: 分析与设计 (优先级: 高)

#### 任务1.1: 现有系统分析 [ID: analysis-1]
- **描述**: 分析现有ModelSplitterManager的核心算法和UI组件，识别可复用的功能模块
- **工作内容**:
  - 分析ModelSplitterManager的3500行代码结构
  - 提取可复用的核心算法（分层逻辑、文件导出、预览功能）
  - 识别需要简化或重构的复杂逻辑
  - 评估现有事件驱动架构的适用性
- **输出**: 代码分析报告，复用组件清单
- **预计时间**: 1-2天
- **依赖**: 无
- **状态**: 待开始

#### 任务1.2: UI界面设计 [ID: ui-design-1]
- **描述**: 设计新的分层管理WPF页签界面，替代现有的独立对话框模式
- **工作内容**:
  - 设计4个核心功能区域的布局
  - 规划楼层分析结果展示界面
  - 设计属性设置的交互流程
  - 规划预览和保存的操作界面
  - 确保与现有TabControl架构的兼容性
- **输出**: XAML设计文件，UI交互流程图
- **预计时间**: 2-3天
- **依赖**: 任务1.1
- **状态**: 待开始

### 阶段2: 核心开发 (优先级: 高)

#### 任务2.1: ViewModel架构搭建 [ID: viewmodel-1]
- **描述**: 创建ModelLayerManagementViewModel，实现MVVM架构的数据绑定
- **工作内容**:
  - 继承ViewModelBase，实现INotifyPropertyChanged
  - 定义各功能模块的属性和命令
  - 实现与ModelSplitterManager的交互接口
  - 集成现有的事件驱动架构
- **输出**: ModelLayerManagementViewModel.cs
- **预计时间**: 2-3天
- **依赖**: 任务1.1, 任务1.2
- **状态**: 待开始

#### 任务2.2: 楼层分析功能实现 [ID: feature-1]
- **描述**: 实现楼层分析功能，检测模型层属性，评估分层可行性
- **工作内容**:
  - 复用FloorDetector的DetectFloors()和GetAvailableFloorAttributes()方法
  - 实现层属性质量评分算法
  - 添加分层可行性报告生成
  - 提供直观的分析结果展示
- **技术要点**:
  ```csharp
  // 利用现有FloorDetector API
  var floorAttributes = FloorDetector.GetAvailableFloorAttributes();
  var detectedFloors = FloorDetector.DetectFloors();
  var feasibilityScore = CalculateLayerFeasibility(detectedFloors);
  ```
- **输出**: 楼层分析功能模块
- **预计时间**: 3-4天
- **依赖**: 任务2.1
- **状态**: 待开始

#### 任务2.3: 设置层属性功能实现 [ID: feature-2]
- **描述**: 实现设置层属性功能，支持手动为模型设置层属性
- **工作内容**:
  - 实现选择树分支和子节点的交互
  - 集成CategoryAttributeManager进行属性设置
  - 添加批量属性设置功能
  - 实现属性设置的撤销/重做机制
- **技术要点**:
  ```csharp
  // 使用COM API进行属性持久化
  CategoryAttributeManager.SetLogisticsAttribute(selectedItems, "Layer", layerValue);
  ```
- **输出**: 层属性设置功能模块
- **预计时间**: 4-5天
- **依赖**: 任务2.1
- **状态**: 待开始

#### 任务2.4: 分层保存功能实现 [ID: feature-3]
- **描述**: 实现分层保存功能，按楼层或指定属性分层保存为独立nwd文件
- **工作内容**:
  - 复用ModelSplitterManager的ExecuteSplitAsync()核心算法
  - 简化配置流程，提供预设模板
  - 添加实时预览功能
  - 实现并行处理提升性能
- **技术要点**:
  ```csharp
  // 复用现有分层算法
  var splitConfig = new SplitConfiguration { Strategy = SplitStrategy.ByFloor };
  var results = await modelSplitter.ExecuteSplitAsync(splitConfig);
  ```
- **输出**: 分层保存功能模块
- **预计时间**: 5-6天
- **依赖**: 任务2.1
- **状态**: 待开始

#### 任务2.5: 选中保存功能实现 [ID: feature-4]
- **描述**: 实现选中保存功能，保存当前选择树中的选中内容
- **工作内容**:
  - 获取Navisworks选择树的当前选中项
  - 实现选中内容的快速导出
  - 添加文件命名和路径选择
  - 提供保存进度反馈
- **技术要点**:
  ```csharp
  // 获取当前选择并导出
  var selection = NavisApplication.ActiveDocument.CurrentSelection;
  await ExportSelection(selection, outputPath);
  ```
- **输出**: 选中保存功能模块
- **预计时间**: 2-3天
- **依赖**: 任务2.1
- **状态**: 待开始

### 阶段3: 集成与测试 (优先级: 中)

#### 任务3.1: 主界面集成 [ID: integration-1]
- **描述**: 将新页签集成到主控制面板LogisticsControlPanel中
- **工作内容**:
  - 在LogisticsControlPanel.xaml中添加"分层管理"TabItem
  - 绑定ModelLayerManagementViewModel到新页签
  - 确保与现有页签的样式一致性
  - 测试页签切换和数据隔离
- **输出**: 集成的分层管理页签
- **预计时间**: 1-2天
- **依赖**: 任务2.1-2.5完成
- **状态**: 待开始

#### 任务3.2: 功能测试与验证 [ID: testing-1]
- **描述**: 测试所有功能模块，确保与Navisworks 2026 API的兼容性
- **工作内容**:
  - 单元测试各功能模块
  - 集成测试完整工作流程
  - 性能测试大模型处理能力
  - 兼容性测试不同模型格式
- **测试场景**:
  - 多层建筑模型的楼层检测
  - 缺失层属性模型的手动设置
  - 大型模型的分层保存性能
  - 选择树复杂结构的导出
- **输出**: 测试报告，问题修复列表
- **预计时间**: 3-4天
- **依赖**: 任务3.1
- **状态**: 待开始

### 阶段4: 优化与完善 (优先级: 低)

#### 任务4.1: 性能优化 [ID: optimization-1]
- **描述**: 性能优化和错误处理完善，添加用户友好的进度提示
- **工作内容**:
  - 优化大模型处理的内存使用
  - 添加异步操作的取消机制
  - 完善异常处理和用户提示
  - 添加操作进度条和状态反馈
- **技术要点**:
  - 使用CancellationToken支持操作取消
  - 实现内存友好的分批处理
  - 集成GlobalExceptionHandler全局异常处理
- **输出**: 优化的性能和用户体验
- **预计时间**: 2-3天
- **依赖**: 任务3.2
- **状态**: 待开始

## 技术架构规划

### 新增组件结构
```
src/UI/WPF/Views/
├── ModelLayerManagementView.xaml        // 分层管理主视图
└── ModelLayerManagementView.xaml.cs

src/UI/WPF/ViewModels/
└── ModelLayerManagementViewModel.cs     // 分层管理视图模型

src/Core/
└── LayerManagementService.cs            // 分层管理服务层
```

### 复用现有组件
- **ModelSplitterManager**: 核心分层算法
- **FloorDetector**: 楼层检测和属性分析
- **CategoryAttributeManager**: 属性设置和持久化
- **ViewModelBase**: MVVM基础架构

### API集成模式
- **Native API**: 模型访问、选择树操作、几何计算
- **COM API**: 属性持久化、文件导出操作
- **事件驱动**: 进度反馈、状态更新、错误处理

## 风险评估与缓解策略

### 高风险项
1. **大模型性能**: 分层处理可能导致内存不足
   - **缓解策略**: 实现分批处理，添加内存监控
2. **API兼容性**: Navisworks 2026 API变更风险
   - **缓解策略**: 充分测试，保持API文档更新

### 中风险项
1. **UI响应性**: 长时间操作可能阻塞界面
   - **缓解策略**: 异步操作，进度反馈
2. **数据一致性**: 多个功能模块间的状态同步
   - **缓解策略**: 事件驱动架构，统一状态管理

### 低风险项
1. **用户接受度**: 从对话框到页签的使用习惯转变
   - **缓解策略**: 保持操作流程相似性，添加帮助文档

## 里程碑规划

### 第1周: 分析设计阶段
- **里程碑1.1** (第3天): 完成现有系统分析，确定复用策略
- **里程碑1.2** (第7天): 完成UI设计和ViewModel架构

### 第2周: 核心开发阶段
- **里程碑2.1** (第10天): 完成楼层分析和属性设置功能
- **里程碑2.2** (第14天): 完成分层保存和选中保存功能

### 第3周: 集成测试阶段
- **里程碑3.1** (第17天): 完成主界面集成
- **里程碑3.2** (第21天): 完成功能测试和性能优化

## 资源需求

### 人力资源
- **主要开发者**: 1人，全职参与
- **测试人员**: 1人，兼职参与测试阶段
- **架构顾问**: 按需咨询，解决技术难题

### 技术资源
- **开发环境**: Visual Studio 2022, Navisworks Manage 2026
- **测试模型**: 多种格式和规模的建筑模型
- **文档工具**: Markdown编辑器，流程图工具

## 质量保证

### 代码质量
- 遵循项目编码规范，使用中文注释
- 实现单元测试覆盖率>80%
- 进行代码审查，确保架构一致性

### 功能质量
- 完成端到端测试用例
- 性能基准测试
- 用户验收测试

### 文档质量
- 更新API文档和用户手册
- 编写功能使用指南
- 维护技术架构文档

## 后续计划

### v1.1.1 增强版本
- 添加批量模型处理功能
- 集成更多文件格式支持
- 优化分层算法性能

### v1.2.0 扩展版本
- 添加自定义分层规则配置
- 集成云端模型处理能力
- 添加协作和共享功能

---

**文档创建时间**: 2025-08-18  
**最后更新时间**: 2025-08-18  
**版本**: v1.0  
**状态**: 待审批