PCM_Report/配置类型选择流程图.txt

326 lines
16 KiB
Plaintext
Raw Normal View History

2025-12-19 10:18:51 +08:00
╔══════════════════════════════════════════════════════════════════════════════╗
║ 配置类型选择功能 - 流程图 ║
╚══════════════════════════════════════════════════════════════════════════════╝
┌─────────────────────────────────────────────────────────────────────────────┐
│ 场景1配置设置 │
└─────────────────────────────────────────────────────────────────────────────┘
用户点击"配置"按钮
┌─────────────────────┐
│ 选择配置类型对话框 │
│ │
│ ○ 600泵 ✓ │
│ ● 1000泵 ✓ │
│ │
│ [确定] [取消] │
└─────────────────────┘
用户选择"1000泵"
┌─────────────────────┐
│ 配置设置 - 1000泵 │
│ │
│ [InfluxDB配置] │
│ [占位符配置] │
│ [设备配置] │
│ ... │
│ │
│ [保存] [取消] │
└─────────────────────┘
保存到 configs/1000泵/default.json
┌─────────────────────────────────────────────────────────────────────────────┐
│ 场景2开始工单 │
└─────────────────────────────────────────────────────────────────────────────┘
用户点击"开始工单"按钮
┌─────────────────────┐
│ 选择配置类型对话框 │
│ │
│ ● 600泵 ✓ │
│ ○ 1000泵 ✓ │
│ │
│ [确定] [取消] │
└─────────────────────┘
用户选择"600泵"
加载 configs/600泵/default.json
加载 configs/600泵/template.docx
┌─────────────────────┐
│ 开始工单 - 600泵 │
│ │
│ 工单号: _______ │
│ 操作员: _______ │
│ 备注: _______ │
│ │
│ [开始] [取消] │
└─────────────────────┘
开始工单
├─ 使用 600泵 的配置
└─ 使用 600泵 的模板
┌─────────────────────────────────────────────────────────────────────────────┐
│ 对话框详细界面 │
└─────────────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────┐
│ 选择配置类型 [_][□][X] │
├──────────────────────────────────────────────────┤
│ │
│ 请选择要使用的配置类型: │
│ │
│ ┌────────────────────────────────────────┐ │
│ │ 📁 600泵 ✓ │◄─── 配置完整
│ │ 📁 1000泵 ✓ │ 可以选择
│ │ 📁 新设备 ⚠ (缺少模板) │◄─── 缺少模板
│ │ 📁 测试 ✗ (配置缺失) │◄─── 配置缺失
│ │ │ 不可选择
│ └────────────────────────────────────────┘
│ │
│ ┌────────────────────────────────────────┐ │
│ │ 📋 类型名称: 600泵 │◄─── 详细信息
│ │ │
│ │ ✓ 配置文件: default.json │
│ │ ✓ 模板文件: template-001.docx │
│ │ │
│ │ 📂 路径: F:\...\configs\600泵 │
│ └────────────────────────────────────────┘
│ │
│ [确定] [取消] │
└──────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────┐
│ 数据流向 │
└─────────────────────────────────────────────────────────────────────────────┘
ConfigCategoryManager
├─► scan_categories()
│ │
│ └─► 扫描 configs/ 目录
│ │
│ ├─► 发现 600泵/
│ │ ├─ default.json ✓
│ │ └─ template.docx ✓
│ │
│ └─► 发现 1000泵/
│ ├─ default.json ✓
│ └─ template.docx ✓
└─► 返回: [ConfigCategory, ConfigCategory]
ConfigTypeSelectorDialog
├─► 显示配置类型列表
│ ├─ 600泵 ✓
│ └─ 1000泵 ✓
├─► 用户选择 "600泵"
└─► 返回: ConfigCategory(name="600泵", ...)
MainWindow
├─► 接收选择结果
├─► 加载配置
│ └─ AppConfig.load(configs/600泵/default.json)
├─► 加载模板
│ └─ template_path = configs/600泵/template.docx
└─► 继续后续操作
┌─────────────────────────────────────────────────────────────────────────────┐
│ 代码调用流程 │
└─────────────────────────────────────────────────────────────────────────────┘
# 场景1配置设置
─────────────────────
def open_config_dialog(self):
# 1. 显示类型选择对话框
category = select_config_for_settings(self)
if category is None:
return # 用户取消
# 2. 加载配置
self.config = AppConfig.load(category.config_path)
self._autosave_path = category.config_path
# 3. 打开配置对话框
dlg = QDialog(self)
dlg.setWindowTitle(f"配置设置 - {category.name}")
# ...
# 场景2开始工单
─────────────────────
def _start_work_order(self):
# 1. 显示类型选择对话框
category = select_config_for_work_order(self)
if category is None:
return # 用户取消
# 2. 加载配置和模板
self.config = AppConfig.load(category.config_path)
self.template_path = category.template_path
# 3. 显示工单信息输入对话框
dlg = QDialog(self)
dlg.setWindowTitle(f"开始工单 - {category.name}")
# ...
# 4. 开始工单
# 使用当前配置和模板
┌─────────────────────────────────────────────────────────────────────────────┐
│ 配置类型状态 │
└─────────────────────────────────────────────────────────────────────────────┘
状态1: 完整配置 ✓
─────────────────
configs/600泵/
├── default.json ✓ 存在
└── template.docx ✓ 存在
→ 可以选择
→ 显示绿色 ✓
状态2: 缺少模板 ⚠
─────────────────
configs/新设备/
├── default.json ✓ 存在
└── template.docx ✗ 不存在
→ 可以选择(但有警告)
→ 显示橙色 ⚠
状态3: 配置缺失 ✗
─────────────────
configs/测试/
├── default.json ✗ 不存在
└── template.docx ? 不检查
→ 不可选择
→ 显示红色 ✗
→ 项目被禁用
┌─────────────────────────────────────────────────────────────────────────────┐
│ 用户体验对比 │
└─────────────────────────────────────────────────────────────────────────────┘
之前的流程:
───────────
点击"配置" → 打开配置对话框
编辑哪个配置?
保存到哪里?
不清楚!❌
现在的流程:
───────────
点击"配置" → 选择配置类型 → 打开该类型的配置对话框
(600泵/1000泵) ↓
清楚明了!✓
之前的流程:
───────────
点击"开始工单" → 使用哪个配置?
使用哪个模板?
不清楚!❌
现在的流程:
───────────
点击"开始工单" → 选择配置类型 → 使用该类型的配置和模板
(600泵/1000泵) ↓
清楚明了!✓
┌─────────────────────────────────────────────────────────────────────────────┐
│ 集成步骤 │
└─────────────────────────────────────────────────────────────────────────────┘
步骤1: 导入模块
─────────────────
from config_type_selector import (
select_config_for_work_order,
select_config_for_settings
)
步骤2: 修改"配置"按钮
─────────────────────
def open_config_dialog(self):
category = select_config_for_settings(self)
if category:
# 加载配置
# 打开配置对话框
步骤3: 修改"开始工单"按钮
─────────────────────────
def _start_work_order(self):
category = select_config_for_work_order(self)
if category:
# 加载配置和模板
# 显示工单信息输入
# 开始工单
步骤4: 测试
─────────────
✓ 点击"配置",验证类型选择
✓ 点击"开始工单",验证类型选择
✓ 验证配置保存到正确位置
┌─────────────────────────────────────────────────────────────────────────────┐
│ 完成! │
└─────────────────────────────────────────────────────────────────────────────┘
✅ 配置类型选择对话框已开发
✅ 演示程序已创建
✅ 集成代码已编写
✅ 文档已完成
📝 下一步:
1. 运行 python demo_type_selector.py 查看效果
2. 参考 集成类型选择对话框.py 集成到主程序
3. 测试功能
╔══════════════════════════════════════════════════════════════════════════════╗
║ 完成! ║
╚══════════════════════════════════════════════════════════════════════════════╝