╔══════════════════════════════════════════════════════════════════════════════╗ ║ 配置分类功能 - 架构图解 ║ ╚══════════════════════════════════════════════════════════════════════════════╝ ┌─────────────────────────────────────────────────────────────────────────────┐ │ 目录结构 │ └─────────────────────────────────────────────────────────────────────────────┘ 程序目录/ │ ├── configs/ ◄─── 配置分类根目录 │ │ │ ├── 600泵/ ◄─── 分类1 │ │ ├── default.json ◄─── 配置文件 │ │ └── template.docx ◄─── 模板文件 │ │ │ └── 1000泵/ ◄─── 分类2 │ ├── default.json │ └── template.docx │ ├── config_category.py ◄─── 核心管理模块 ├── config_category_widget.py ◄─── UI组件 └── ui_main.py ◄─── 主程序 ┌─────────────────────────────────────────────────────────────────────────────┐ │ 工作流程 │ └─────────────────────────────────────────────────────────────────────────────┘ 1. 程序启动 │ ├─► 扫描 configs/ 目录 │ │ │ ├─► 发现 "600泵" 分类 │ │ ├─ default.json ✓ │ │ └─ template.docx ✓ │ │ │ └─► 发现 "1000泵" 分类 │ ├─ default.json ✓ │ └─ template.docx ✓ │ └─► 显示分类选择器 │ └─► 加载默认分类配置 2. 用户选择分类 │ ├─► 保存当前配置 │ ├─► 加载新分类配置 │ ├─ 读取 default.json │ └─ 加载 template.docx │ └─► 更新UI显示 3. 用户修改配置 │ └─► 自动保存到当前分类 └─ configs/当前分类/default.json 4. 用户开始实验 │ └─► 使用当前分类的配置 5. 用户生成报告 │ └─► 使用当前分类的模板 ┌─────────────────────────────────────────────────────────────────────────────┐ │ UI布局 │ └─────────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────────────┐ │ Docx 报告生成器 [_][□][X] │ ├─────────────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌────────┐│ │ │ 开始工单 │ │ 开始记录 │ │ 结束记录 │ │ 配置 ││ │ └──────────────┘ └──────────────┘ └──────────────┘ └────────┘│ │ │ │ 配置分类: [600泵 ▼] [刷新] ✓ 配置和模板已就绪 │ │ └─────────┘ │ │ │ │ │ ├─ 600泵 │ │ └─ 1000泵 │ │ │ │ ┌─────────────────────────────────────────────────────────────┐ │ │ │ │ │ │ │ 实验历史记录 │ │ │ │ │ │ │ └─────────────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────────────────────┐ │ 数据流 │ └─────────────────────────────────────────────────────────────────────────────┘ ConfigCategoryManager │ ├─► scan_categories() │ │ │ └─► 返回: [ConfigCategory, ConfigCategory, ...] │ ├─► get_category(name) │ │ │ └─► 返回: ConfigCategory │ └─► create_category(name, config, template) │ └─► 返回: ConfigCategory ConfigCategoryWidget │ ├─► 显示分类列表 │ ├─► 用户选择分类 │ │ │ └─► 发出信号: category_changed(name, config_path, template_path) │ └─► MainWindow 接收信号 │ ├─► 加载配置: AppConfig.load(config_path) │ ├─► 加载模板: template_path │ └─► 更新UI ┌─────────────────────────────────────────────────────────────────────────────┐ │ 核心类 │ └─────────────────────────────────────────────────────────────────────────────┘ ConfigCategory ├─ name: str # 分类名称 ├─ path: Path # 分类目录路径 ├─ config_path: Path # 配置文件路径 └─ template_path: Path | None # 模板文件路径 ConfigCategoryManager ├─ base_dir: Path # 基础目录 ├─ config_root: Path # 配置根目录 (configs/) │ ├─ scan_categories() → List[ConfigCategory] ├─ get_category(name) → ConfigCategory | None ├─ get_category_names() → List[str] ├─ create_category(...) → ConfigCategory └─ delete_category(name) → bool ConfigCategoryWidget (QWidget) ├─ category_combo: QComboBox # 分类下拉框 ├─ info_label: QLabel # 状态标签 │ ├─ category_changed: Signal # 分类改变信号 │ ├─ get_current_category() → ConfigCategory | None ├─ set_category(name) → bool └─ has_categories() → bool ┌─────────────────────────────────────────────────────────────────────────────┐ │ 使用场景 │ └─────────────────────────────────────────────────────────────────────────────┘ 场景1: 切换设备类型 ──────────────────── 用户: 选择 "600泵" 系统: 加载 configs/600泵/default.json 加载 configs/600泵/template.docx 更新UI显示 结果: 所有操作使用600泵的配置 场景2: 添加新分类 ──────────────────── 用户: 创建 configs/新设备/ 目录 复制 default.json 和 template.docx 点击 "刷新" 按钮 系统: 扫描目录 发现新分类 添加到下拉框 结果: 可以选择新分类 场景3: 修改配置 ──────────────────── 用户: 修改配置参数 系统: 自动保存到 configs/当前分类/default.json 结果: 配置保存到正确的分类文件 场景4: 生成报告 ──────────────────── 用户: 点击 "生成报告" 系统: 使用 configs/当前分类/template.docx 使用 configs/当前分类/default.json 中的配置 结果: 生成使用正确模板和配置的报告 ┌─────────────────────────────────────────────────────────────────────────────┐ │ 优势对比 │ └─────────────────────────────────────────────────────────────────────────────┘ 之前 现在 ──────────────────────────────────────────────────────── 单一 default.json → 多个分类配置 手动选择模板 → 自动关联模板 手动替换配置文件 → UI一键切换 配置容易混淆 → 完全隔离 管理困难 → 目录结构清晰 ┌─────────────────────────────────────────────────────────────────────────────┐ │ 快速开始 │ └─────────────────────────────────────────────────────────────────────────────┘ 步骤1: 初始化 ───────────── $ python setup_config_categories.py ✓ 创建 configs/ 目录 ✓ 创建 600泵 分类 ✓ 创建 1000泵 分类 步骤2: 验证 ───────────── $ python test_config_category.py ✓ 扫描到 2 个分类 ✓ 所有配置文件有效 ✓ 所有模板文件存在 步骤3: 集成 ───────────── 参考: 配置分类集成指南.md 集成代码示例.py 步骤4: 使用 ───────────── 1. 启动程序 2. 选择分类 3. 正常使用 ╔══════════════════════════════════════════════════════════════════════════════╗ ║ 完成! ║ ╚══════════════════════════════════════════════════════════════════════════════╝