fix(moldinsight): 方案预览契约断裂——工艺参数面板全 N/A + 备选方案预览无法切换
多方案重构后 cavity_data 与可视化端字段契约断裂,两处收口: - 契约桥接:CalculationService.attach_scheme_info_contract 把方案级 key_info 内嵌回 cavity_data(mold_cavities.cavity_key_info / cavity_count / manufacturing_info 展示字段),multi_scheme_planner._build_scheme 生成后 立即接线——3D 预览"关键工艺参数"面板此前 10 项 8 项恒 N/A, 前端型腔数恒回退 1 腔 - 方案级预览恢复:_attach_scheme_previews 改为每方案生成完整预览 (HTML + 摘要/数据 JSON 直传 RustFS)并写 scheme["html_file"], 前端切方案即切 iframe(此前仅最优方案一份,备选永远显示推荐预览); 删除零消费的 summary_file 死产物;任务级 HTML 复用推荐方案不再重复生成 - 前端 3D 预览标题栏加"当前:方案名"标识 已知取舍:报告键存储随方案数线性增长(记 TECH_DEBT D11 追记); 历史任务不回填,需重新分析。接口面零变化,openapi 不重导出。 测试:193 passed, 13 skipped(净增契约桥接回归测试 1 项,OCC-free); vue-tsc 通过;本地无 pythonocc,planner 运行时路径待 conda 环境补跑。 Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -160,6 +160,7 @@
|
||||
- **读侧**:`/html` StaticFiles 挂载删除,新增代理路由 [html_report_router.py](../src/moldinsight/api/html_report_router.py)(挂根路径保持 URL 形状——持久化 cavity JSON 与前端 iframe 均引用 `/html/{filename}`):RustFS 报告键直取 → 遗留 `html/{hash}.json` JSON 包装解析 → 本地卷存量兜底 → 404,防路径穿越(单段文件名校验)
|
||||
- **部署**:celery 服务摘除 `html_data` 卷(不再写本地);Dockerfile.moldinsight 删除 `COPY html_output/`(构建机陈旧报告不再烤进镜像)
|
||||
- **已知约束**(沿用 StaticFiles 时代既定姿态,非新引入):报告路由不做认证——iframe 无法携带 Authorization 头
|
||||
- **2026-09-27 追记**:可视化产物从"每任务一套"改为**每分模方案一套**——`_attach_scheme_previews` 为每个 `candidate_schemes` 生成独立 HTML / `_summary.json` / `_data.json`([processing_service.py](../src/moldinsight/services/processing_service.py)),`scheme["html_file"]` 供前端切方案即切预览;任务级 HTML 复用推荐方案那份(`HTMLFile` 记录仍仅推荐方案一条)。**已知取舍**:网格数据 JSON 每方案复制一份,报告键存储随方案数线性增长(当前 ≤3 方案,接受);存储吃紧时再演进共享产品网格 + 仅差分型腔/模芯,暂不排期
|
||||
- 回归测试:[tests/test_html_report_router.py](../tests/test_html_report_router.py)(8 例:四链路命中、新旧格式记录区分、媒体类型、404、穿越拒绝)
|
||||
|
||||
~~原现状 / 影响~~:可视化 HTML/摘要同时写本地与 RustFS,多副本下 /html 命中结果取决于负载均衡,跨副本文件不共享。
|
||||
|
||||
Reference in New Issue
Block a user