|
|
d6057c3d70
|
fix: 大尺度影像处理超时 — 心跳线程 + 日志复位看门狗 + 延长至1小时
问题: 用户处理 6522x13215x150 大影像,step3 Goodman 逐波段
C/NumPy 运算耗时超过 10 分钟,期间无 Qt 信号发出,看门狗误判
为假死并强制终止。
修复 (三层防护):
1. WorkerThread 心跳线程:
- 新增独立 daemon 线程,每 30s 发射 log_message 信号
- PyQt 信号线程安全,跨线程 emit 自动排队到主线程
- 确保长时间 C 运算期间看门狗持续收到保活信号
- run() finally 中自动停止心跳
2. 日志消息也复位看门狗:
_on_log_message() 现在与 _on_progress_update() 一样更新
_last_progress_time —— 任何来自 Worker 的通讯都代表存活
3. 超时阈值 600s → 3600s (1小时):
大尺度影像处理 1 小时足够覆盖极端场景
|
2026-07-07 11:31:22 +08:00 |
|
|
|
f3aca09df4
|
1.2.1
|
2026-07-06 10:01:55 +08:00 |
|
|
|
385e5915af
|
格式统一
|
2026-07-01 17:33:52 +08:00 |
|
|
|
1824d62d10
|
格式统一
|
2026-07-01 15:12:25 +08:00 |
|
|
|
1611001a72
|
格式统一
|
2026-07-01 13:19:46 +08:00 |
|
|
|
a3c20d3e49
|
格式统一
|
2026-07-01 09:57:27 +08:00 |
|
|
|
48d17ef0ca
|
fix: 全局UX修复与Step4交互可视化重构
=== 自动填入过于激进(幽灵路径级联)===
- 所有面板 update_from_config 移除 os.makedirs(),目录创建留给 pipeline 执行
- 输出路径仅 widget 为空时填入默认值,不覆盖用户已选
- 输入路径从上游读取后添加 os.path.exists() 检查,阻断幽灵路径级联
- panel_factory._replay_live_panel_inputs 广播前校验文件确实存在
- step10 update_from_config 添加 os.path.isfile() 存在性检查
- 清理 step8/9/11 中冗余局部 import os(修复 UnboundLocalError)
=== 输出目录缺失 ===
- step7 新增 output_file FileSelectWidget,默认路径 7_Water_Quality_Indices/
- step9 output_file 从文件模式改为目录模式 (Directories)
=== 空目录自动创建 ===
- step12 _setup_prediction_output_dirs 移除 mkdir() 调用,改为只读日志
=== 过期依赖与缺失 import ===
- panel_registry Step10 依赖 bsq_file→sampling_csv_file(匹配 CSV 模式重构)
- step7 添加缺失的 import pandas as pd(修复 NameError)
=== 导航与 UI 一致性 ===
- water_quality_gui_v2 新增 _select_first_nav_item(),启动时默认选中第一项
- step1 输出卡片对齐 step8 风格
- step8 补充缺失的样式表和统一边距
=== Step4 交互式光谱探针重构 ===
- 左右分栏 QSplitter 布局:左侧控制区 + 右侧 Matplotlib 视图
- 1x2 子图:ax1 散点图 + ax2 光谱曲线
- Hover 悬停 Annotation 显示坐标,Click 点击高亮+绘制光谱
- NavigationToolbar2QT 工具栏(保存/缩放/平移)
- 自动检测坐标列和波段列,完善异常处理
|
2026-06-30 09:38:27 +08:00 |
|
|
|
9ab916a61c
|
步骤七页面修改
|
2026-06-26 16:43:28 +08:00 |
|
|
|
43f50ec07b
|
测试修改
|
2026-06-25 15:50:02 +08:00 |
|
|
|
c5a82ec342
|
refactor(gui/sidebar): 重组导航为四模块 + 扁平无框蓝色高亮主题 + 中括号移除
数据层(panel_registry.py):13 个 step 从「阶段一/二/三/四」重组为四个模块
模块一 影像预处理(step 1-3)
模块二 特征工程与数据(step 4-7)
模块三 模型训练与反演(step 8-10)
模块四 制图与成果汇编(step 11-13)
step_id 顺序、tab_index、面板绑定、Tab 路由全部保持零变化
文本层(water_quality_gui.py / v2):移除 └─ 字符前缀
样式层(styles.py:get_sidebar_stylesheet):扁平无框 + 蓝色高亮主题
- 容器 QListWidget 无框化(border: none / outline: none / 透明背景)
- 步骤项 padding 8px 6px + margin 2px 8px + border-radius 4px
- hover 极浅蓝灰 #F0F4F8;selected 饱和蓝 #0078D4 + 白字 #FFFFFF
- 分类头(stage_header):!enabled 选择器锁定 → 蓝色 #0078D4 + 加粗 + 上下间距
Python 代码侧:stage_item.setForeground 硬编码 #0078D4、stage_font.setBold(True)
作为 QSS 失效兜底 + 代码意图自解释
末尾迭代:四个模块名移除 [ ] 中括号(极简风)
|
2026-06-23 16:50:30 +08:00 |
|
|
|
948d1d8acd
|
测试修改
|
2026-06-23 16:12:58 +08:00 |
|
|
|
b8d263e494
|
测试修改
|
2026-06-23 14:39:54 +08:00 |
|
|
|
76d697ce3f
|
fix(viz_thread): generate_all_selected 读 self.extra 注入路径(v1 GUI 实际副本)
|
2026-06-22 17:15:59 +08:00 |
|
|
|
56d8a292be
|
fix(wavelength_prefix): viz_thread.py 同步 _viz_infer_wavelength_start_column 修改
src/gui/core/viz_thread.py 的 _viz_infer_wavelength_start_column 是
step12_viz_panel.py 副本(无跨文件引用),两处独立维护必须同步。
同步前缀兼容与 DEBUG 日志逻辑。
Why: 同一函数双份副本不一致会导致 worker 子线程路径与 panel 主线程
路径在相同列名格式下表现差异。同步保证行为一致。
|
2026-06-22 16:37:57 +08:00 |
|
|
|
5b2f5a8160
|
fix(panel_registry): dependencies 控件名对账 (step2-11, 13处断链)
|
2026-06-18 15:39:12 +08:00 |
|
|
|
f93dbeb848
|
fix: Step 7 路由 + 发送端字符串对齐(消除 KeyError)+ 配套防御性补强
核心修复
- panel_registry: step7_index class_ref 换绑 Step7View(最小侵入式对位,保持 step_id 保护全项目 18 处下游引用)
- step7_view._on_run_single_clicked: 'step7' → 'step7_index'(wrapped_config key + step_name 同步对齐,消除 PipelineScheduler 抛 KeyError "未注册的步骤: 'step7'")
配套防御性补强
- pipeline_executor.run_single_step_handler: 后台 is_running 时改 QMessageBox 警告 + LogMessage,防多次点击死锁
- worker_thread.run_single_step: 兼容嵌套/扁平 config 格式,嵌套子 dict 为空时回退扁平读取
- 公式 ListWidget layout 修复:setUniformItemSizes + stretch=1 + update(),消除 step7_view 加载后坍塌/不刷新
|
2026-06-18 13:59:20 +08:00 |
|
|
|
f61a3dfb1d
|
feat: 懒加载面板Catch-up状态回放 + 上一步/下一步向导导航按钮
|
2026-06-18 11:18:37 +08:00 |
|
|
|
3f217e95b0
|
fix: 修复下游面板自动填充断裂的三处根因 + 清理过时 pipeline→panel 映射
|
2026-06-18 10:28:14 +08:00 |
|
|
|
2261b4b30e
|
feat: Step1~Step14 面板单步按钮 EventBus 解耦 + Handler 补全(Step8~Step14)+ 旧上帝类删除
- 9 个面板(step1~step6/step8_ml_train/step8_qaa/step9_ml_predict/step10)单步执行按钮从 parent 链上溯改为 global_event_bus.publish('RequestRunSingleStep')
- PipelineExecutor 新增 _on_request_run_single_step 订阅
- 新增 Handler: step8_ml_train / step9_ml_predict / step10_qaa_inversion / step11_concentration / step12_kriging / step13_visualization / step14_report
- 删除旧 water_quality_inversion_pipeline_GUI.py(上帝类已肢解完毕)
|
2026-06-18 09:19:51 +08:00 |
|
|
|
f1cc339d4a
|
feat: Step2~Step7 Handler 批量生成 + WorkerThread 接入新调度器
- 新增 6 个 Handler:Step2GlintDetection / Step3GlintRemoval / Step4Sampling / Step5ProcessCsv / Step6ExtractSpectra / Step7CalcIndices
- 新增 register_handlers.py:register_all_handlers() 一键注册 Step1~Step7
- 更新 __init__.py:导出全部 7 个 Handler
- 重构 worker_thread.py:移除旧 WaterQualityInversionPipeline 导入,改用 PipelineScheduler + register_all_handlers
- run_single_step 改为 scheduler.run_step() 调用,保留外部模型透传逻辑
|
2026-06-17 18:02:31 +08:00 |
|
|
|
f6455b71ba
|
fix: PanelFactory 信号风暴修复 + 后端上帝类肢解(BaseStepHandler/调度器/Step1打样)
|
2026-06-17 17:48:40 +08:00 |
|
|
|
39e8c29913
|
refactor: 实现第二批 Manager(LogManager/ConfigManager/DialogService/TrainingModeManager)
- log_manager.py: 日志区+进度条+清空按钮封装,内部订阅 LogMessage/ProgressUpdate
- config_manager.py: 配置读写(new/load/save/get_current_config),懒加载安全(未加载面板返回 {})
- dialog_service.py: 纯展示弹窗封装(Pipeline状态/关于/AI设置)
- training_mode_manager.py: 训练模式切换,发布 TrainingModeChanged 事件
- water_quality_gui_v2.py: 725→605 行,菜单回调全部委托给 Manager,移除 _create_log_panel/_create_progress_panel/_on_log_message/_on_progress_update
|
2026-06-17 17:35:27 +08:00 |
|
|
|
19c86e6e44
|
refactor: 实现纯壳主窗口 + 第一批 Manager(PanelFactory/PipelineExecutor/WorkspaceInitializer)
- water_quality_gui_v2.py: 纯壳主窗口(725行),依赖注入链 + EventBus 驱动,7个菜单连线
- panel_factory.py: PanelFactory 懒加载工厂(占位页替换 + 邻接预加载)
- pipeline_executor.py: PipelineExecutor 核心调度(接管 run_full_pipeline/run_single_step/stop_pipeline)
- workspace_initializer.py: WorkspaceInitializer 环境初始化(接管 init_workspace/set_work_directory/auto_populate_all)
|
2026-06-17 17:18:15 +08:00 |
|
|
|
bb5c2a50f8
|
refactor: 引入 EventBus 事件总线,实现各步骤面板间的去中心化自动参数传导,完成最终解耦
|
2026-06-17 16:27:26 +08:00 |
|
|
|
a58744cfbb
|
refactor: 建立动态面板注册表,消除硬编码,实现步骤界面的数据驱动渲染与依赖路由
|
2026-06-17 16:02:17 +08:00 |
|
|
|
191a4b681d
|
refactor: 移除主界面重复代码,复用现有组件并彻底抽离图像控件
|
2026-06-17 15:16:19 +08:00 |
|
|
|
e59703f163
|
结构修改,后端文件跟前端内容进行适配
|
2026-06-11 17:44:24 +08:00 |
|
|
|
3584c07b67
|
对齐 GUI 面板 ID 与 pipeline 方法路由
|
2026-06-11 15:35:47 +08:00 |
|
|
|
1ad4c54b80
|
Fix step4_panel variable name inconsistency causing AttributeError
|
2026-06-11 15:14:26 +08:00 |
|
|
|
d3262ae80d
|
Rename pipeline method names to match step numbers (Step4)
|
2026-06-11 14:58:39 +08:00 |
|
|
|
3c4d4081a4
|
refactor(gui): 重命名面板序号 step4-11,采样点布设移至 step4,ML 建模移至 step9
|
2026-06-11 11:13:16 +08:00 |
|
|
|
c3cc2ef77e
|
feat(step9): 新增浓度反演模块及 GUI 面板
|
2026-06-09 17:55:25 +08:00 |
|
|
|
28394f2eda
|
feat(gui): 全流程面板合并 + 一键式运行 GUI 入口集成
|
2026-06-09 11:30:42 +08:00 |
|
|
|
aefc9d5aac
|
feat(pipeline): 一键式运行 - 调度引擎核心 + 预检/免检系统 + 线程桥接
|
2026-06-09 11:29:11 +08:00 |
|
|
|
e3debbcb15
|
fix(step8): 修复外部模型字典透传断链 + 规范化 loaded_model_data 防 Ridge subscriptable 崩溃
|
2026-06-08 11:36:36 +08:00 |
|
|
|
2b76d7908f
|
feat(step8): 外部模型从单文件升级为母文件夹多模型字典扫描
|
2026-06-08 09:56:02 +08:00 |
|
|
|
64aa5b8f40
|
fix(runner): 14 Facade kwargs 兜底 + 4 spec parameter_map 修正 + step6_75 路由切到 indices
- 14 个 stepX_... Facade 形参表末尾加 **kwargs,杜绝 Runner 注入未声明 key 时的 TypeError(典型:step3 收到 glint_mask_path)
- runner._invoke user_overrides 合并加 v is not None and v != '' 过滤,避免 GUI 面板空值覆盖 ctx 中已写入的有效路径
- PIPELINE_STEPS 加 4 个 parameter_map 修正 ctx 字段名→形参名错位:step6_5/6_75: training_csv_path→csv_path;step8_5: models_dir→non_empirical_models_dir;step8_75: models_dir→custom_regression_dir
- step6_75 路由从 training_csv_path 切到 indices_path(requires + parameter_map 同步);配合 skip_when_missing,未跑 step5_5 时自动 skip
- worker_thread.py: mode='full' 切到 PipelineRunner + PipelineContext 调度
|
2026-06-04 09:15:04 +08:00 |
|
|
|
343e316799
|
refactor(pipeline): 路径直接传输 — 统一 ctx 字段名/panel key/step 形参名
|
2026-06-03 17:29:41 +08:00 |
|
|
|
d7b5c45dd4
|
修复Step7采样点布设路径读取问题:GDAL环境变量保护+路径归一化+FileNotFoundError检查+水域掩膜备选路径扫描
|
2026-05-08 18:05:11 +08:00 |
|
|
|
0f36da742f
|
修复多步运行时参数传递及文件读取问题
|
2026-05-08 09:27:07 +08:00 |
|
|
|
c12b9d8d8a
|
界面优化
|
2026-05-07 14:23:58 +08:00 |
|