Commit Graph

68 Commits

Author SHA1 Message Date
DXC
b8d263e494 测试修改 2026-06-23 14:39:54 +08:00
DXC
d6c003a211 fix: Step7 UI坍塌修复+EventBus打通 + DRY抽离spxy/ks + GridSearchCV→RandomizedSearchCV + smoke test死链修复 2026-06-18 11:18:27 +08:00
DXC
3ee4e90b31 fix: step_default_outputs 支持列表候选文件名,解决动态命名导致 OutputUpdated 断链 2026-06-18 10:36:52 +08:00
DXC
3f217e95b0 fix: 修复下游面板自动填充断裂的三处根因 + 清理过时 pipeline→panel 映射 2026-06-18 10:28:14 +08:00
DXC
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
DXC
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
DXC
f6455b71ba fix: PanelFactory 信号风暴修复 + 后端上帝类肢解(BaseStepHandler/调度器/Step1打样) 2026-06-17 17:48:40 +08:00
DXC
bb5c2a50f8 refactor: 引入 EventBus 事件总线,实现各步骤面板间的去中心化自动参数传导,完成最终解耦 2026-06-17 16:27:26 +08:00
DXC
1949711cda refactor: 提取 WorkspaceManager,将文件扫描与路径业务逻辑从主 GUI 解耦 2026-06-17 15:35:02 +08:00
DXC
91881d564a fix: 修复 Step8 模型生成路径错误及特征分离未过滤坐标列导致的 0 模型 Bug
- view 层 Step8View.update_work_directory 不再生成 <work_dir>/indices/<basename>_indices.csv,改为生成标准的 <work_dir>/8_Modeling/ 模型存放目录;FileSelectWidget 标签与文件过滤器同步调整为目录语义(输出模型目录 / All Files (*.*)),消除'保存目录被存成 csv 文件'导致的 train_models 跳过判定。
2026-06-17 14:15:34 +08:00
DXC
5084f7d049 Step10 Kriging 输出路径强制 14_visualization + Step11 掩膜自动填入 2026-06-16 14:12:10 +08:00
DXC
0238aa66ab 路径归一化:统一 14 个子目录 helper 接口 + 修复 getattr 张冠李戴
新增 _step_path_resolver.py(STEP_DATA_SOURCE 映射表 + _FALLBACK_DIR_TABLE 40+ keys + resolve_subdir / get_step_output_path / resolve_step_widget 三层 API),与 pipeline.get_step_output_dir 互为表里、互不依赖。

pipeline 新增 get_step_output_dir(step_name) 唯一权威接口(class-level _STEP_OUTPUT_DIR_MAP 延迟构造 + 未知 key 回退 work_dir + 调试日志)。

全量重构 src/gui/panels/step*.py(17 个文件)

* 消除全部 os.path.join(wp, "X_subdir") 硬编码(14 个预定义子目录)

* 8 处 getattr(main_window.stepXX_panel, ...) 张冠李戴死代码全部修复(错位属性名 → 通过 STEP_DATA_SOURCE 映射到正确的 main_window 长名属性)

* 删除 step12_viz_panel.py 中 self.step11_ml_panel / step11_panel / step12_panel 死代码块

* 提示文字/标签字典/日志保留原文,仅替换实际路径计算

Smoke test:39 fallback key + 14 路径映射 + 14 step 数字 key + 17/17 panel AST 解析 + 17/17 import 全部就位。
2026-06-16 12:54:18 +08:00
DXC
03c788a16c Step6 波长读取:spectral 解析失败时增加 .hdr 文本暴力解析兜底,消灭 band_1 fallback 2026-06-16 11:07:30 +08:00
DXC
0a0ede2e02 Step3 插值:多进程内存雪崩二次补丁(mask copy + workers 上限 6) 2026-06-15 17:10:36 +08:00
DXC
60a9d7d922 Step3 插值算法 OOM 修复 + 多进程加速 + 全链路累积改动(14 文件) 2026-06-15 16:49:17 +08:00
DXC
82e0b92af6 Mega-1.1 全链路路径归一化收尾(18 文件) 2026-06-15 15:20:50 +08:00
DXC
f73a7d8999 添加公式方法 2026-06-12 16:48:20 +08:00
DXC
4c9ca2aa03 全链路路径对齐:注册表重写为字符串格式,10_sampling→4_sampling,water_quality_indices→training_spectra_indices 2026-06-12 09:59:35 +08:00
DXC
d3262ae80d Rename pipeline method names to match step numbers (Step4) 2026-06-11 14:58:39 +08:00
DXC
3c4d4081a4 refactor(gui): 重命名面板序号 step4-11,采样点布设移至 step4,ML 建模移至 step9 2026-06-11 11:13:16 +08:00
DXC
016c895803 feat(qaa): 新增 QAA 算法模块 src/core/algorithms/qaa/ 2026-06-10 17:14:08 +08:00
DXC
320f2f18f2 feat(step8): 新增水色指数反演模块 waterindex_inversion + CSV 公式驱动架构 2026-06-10 17:13:25 +08:00
DXC
cfe4c50c31 feat(step8→step9): 源头透传坐标元数据,打通空间坐标全程流 2026-06-10 09:55:28 +08:00
DXC
7571762e63 fix(step9): 保留原始坐标列至 final_concentrations.csv,防止 Step14 崩溃 2026-06-10 09:54:00 +08:00
DXC
c3cc2ef77e feat(step9): 新增浓度反演模块及 GUI 面板 2026-06-09 17:55:25 +08:00
dxc
4ca90b0e79 fix: get_spectral.py CSV列索引错误 - 跳过测量点ID列正确读取纬度(41.66°)和经度(124.22°)
input.csv列顺序: 时间,测量点,纬度,经度,水质参数...
原代码错误地将测量点ID(col0)当作纬度,纬度(col1)当作经度
修复后: lat=col1(纬度), lon=col2(经度)
修复前导致所有14815个采样点坐标转换后超出影像范围,光谱提取为0
修复后: 14815个采样点全部成功提取有效光谱(314~717)
2026-06-09 15:02:28 +08:00
dxc
2872788cc3 fix(pipeline): 移除STEP_MAP中step8→step11_ml的错误映射,避免resolve_step_id('step8')返回step11_ml 2026-06-09 13:30:52 +08:00
dxc
90ba5a5fe2 fix(pipeline): 移除未使用的WaterQualityIndexCalculator导入和实例化 2026-06-09 13:30:36 +08:00
DXC
47cbb4a013 refactor(pipeline): step8 输出文件命名统一为 training_spectra_indices.csv,produces 增加 trad_indices_dir 2026-06-09 13:18:15 +08:00
DXC
28394f2eda feat(gui): 全流程面板合并 + 一键式运行 GUI 入口集成 2026-06-09 11:30:42 +08:00
DXC
aefc9d5aac feat(pipeline): 一键式运行 - 调度引擎核心 + 预检/免检系统 + 线程桥接 2026-06-09 11:29:11 +08:00
DXC
371e7a2745 fix(PipelineRunner): 接力棒断链修复 + 依赖级联自动唤醒引擎 2026-06-09 09:07:59 +08:00
DXC
d22414bf7d feat(sampling): add adaptive sampling toggle + interactive sampling point viewer 2026-06-08 15:39:43 +08:00
DXC
e3debbcb15 fix(step8): 修复外部模型字典透传断链 + 规范化 loaded_model_data 防 Ridge subscriptable 崩溃 2026-06-08 11:36:36 +08:00
DXC
2b76d7908f feat(step8): 外部模型从单文件升级为母文件夹多模型字典扫描 2026-06-08 09:56:02 +08:00
DXC
2139715829 fix(runner): step5 严格依赖 step4 产物 + 拒绝静默跳过
- step5.requires 加入 processed_csv_path(step4 产物) 并显式 parameter_map 到 csv_path 形参;step5.skip_when_missing=False 配合 Facade **kwargs 兜底

- parameter_map 双向映射规避 L2 顺序注入冲突: processed_csv_path→csv_path(主), csv_path→_raw_csv_ignored(占位, 落 **kwargs)

- PipelineRunner.run() skip_when_missing 块新增 _notify 通知, 让 GUI 知道具体缺了什么(拒绝静默跳过)
2026-06-04 10:38:33 +08:00
DXC
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
DXC
343e316799 refactor(pipeline): 路径直接传输 — 统一 ctx 字段名/panel key/step 形参名 2026-06-03 17:29:41 +08:00
DXC
517bb28611 snapshot: 路线 B 重构前原状(pipeline 包首次入 git) 2026-06-03 16:31:45 +08:00
DXC
170d347e21 内容部分修改 2026-05-11 17:38:29 +08:00
DXC
9ba39a7bff fix(step7): 消除UnboundLocalError — 将Path/os导入上移至函数第一行,避免与后续局部赋值冲突 2026-05-10 16:45:07 +08:00
DXC
d15a7a1e2b fix(step7): 去除耀斑路径智能回溯 — .dat占位符自动拦截改为glob搜索3_deglint真实.bsq产物 2026-05-10 16:34:04 +08:00
DXC
6d4d802ffe fix(step5/step5.5): 掩膜.shp智能替身为.dat、band_math.eval注入np.nan/np.inf命名空间 2026-05-10 16:20:51 +08:00
DXC
abac272b31 fix(step3/step7): 路径断层闭环 — _safe_rename换用os.rename、generate_sampling_points入口强制.bsq后缀校验 2026-05-10 16:04:26 +08:00
DXC
8c7c995985 修复步骤3去耀斑路径断层 + UI默认路径标准化 2026-05-10 15:11:01 +08:00
DXC
f96c55f361 refactor(step6): 步骤6机器学习建模UI汉化 + 默认全不选 + 底层反向映射清洗 2026-05-10 14:58:57 +08:00
DXC
14278739bf refactor(step4): 剥离 Steps 层 - step4~step9 业务逻辑下沉到独立模块 2026-05-09 17:55:58 +08:00
DXC
d0eb458392 refactor(step4): 剥离 Steps 层 - step1~step3 业务逻辑下沉到独立模块 2026-05-09 17:30:49 +08:00
DXC
dcbcc043e4 refactor: 渐进式模块化重构 — 剥离可视化层、工具层、算法层到独立模块 2026-05-09 17:18:34 +08:00
DXC
9d39e61161 fix: 自动格式转换 .shp→.dat 水域掩膜,解决插值函数报错 2026-05-09 14:35:58 +08:00