PCM_Report/配置分类功能图解.txt

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. 正常使用
╔══════════════════════════════════════════════════════════════════════════════╗
║ 完成! ║
╚══════════════════════════════════════════════════════════════════════════════╝