260 lines
14 KiB
Plaintext
260 lines
14 KiB
Plaintext
|
|
╔══════════════════════════════════════════════════════════════════════════════╗
|
||
|
|
║ 配置分类功能 - 架构图解 ║
|
||
|
|
╚══════════════════════════════════════════════════════════════════════════════╝
|
||
|
|
|
||
|
|
┌─────────────────────────────────────────────────────────────────────────────┐
|
||
|
|
│ 目录结构 │
|
||
|
|
└─────────────────────────────────────────────────────────────────────────────┘
|
||
|
|
|
||
|
|
程序目录/
|
||
|
|
│
|
||
|
|
├── 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. 正常使用
|
||
|
|
|
||
|
|
|
||
|
|
╔══════════════════════════════════════════════════════════════════════════════╗
|
||
|
|
║ 完成! ║
|
||
|
|
╚══════════════════════════════════════════════════════════════════════════════╝
|