# 变更日志 (Changelog) 本项目的所有重要变更都将记录在此文件中。 格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/), 版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)。 ## [1.6.0] - 2025-12-11 17:40 ### 新增 (Added) - **Android构建系统统一化改造** ([.build/build-android.js](.build/build-android.js)) - 将Android SDK安装和构建功能合并到单个脚本中 - 实现完整的自动化构建流程:先安装SDK,然后构建APK - 新增Gradle wrapper配置功能,强制使用预装的Gradle 9.0.0版本 - 集成智能SDK路径检测,支持多平台路径fallback策略 - 添加跨平台环境变量管理,确保构建一致性 ### 变更 (Changed) - **CI工作流优化** ([.github/workflows/build-linux-arm-appimage.yml](.github/workflows/build-linux-arm-appimage.yml)) - 简化Android构建工作流,移除重复的SDK安装步骤 - 优化步骤顺序,确保依赖关系正确 - 移除平台特定的shell配置,支持跨平台构建 - 清理注释和冗余配置,提高可维护性 - **H5构建环境变量传递** ([.build/build-h5-smart.js](.build/build-h5-smart.js)) - 实现自定义API和MQTT服务器地址配置传递 - 支持动态配置TARO_API_URL和TARO_MQTT_URL环境变量 - 保持构建缓存机制的完整性 ### 移除 (Removed) - **独立的setup-android-sdk.js脚本** - 功能已完全合并到build-android.js中 --- ## [未发布] (Unreleased) ### 新增 (Added) - 待添加的新功能 ### 变更 (Changed) - 待变更的现有功能 ### 修复 (Fixed) - 待修复的问题 ### 移除 (Removed) - 待移除的功能 --- ## [1.6.0] - 2025-12-11 ### 新增 (Added) - **运行时配置后端 API 地址功能** ([#server-config-runtime](docs/实现/运行时配置后端地址功能.md)) - 实现完整的服务器配置管理系统,支持 Electron、Cordova、浏览器三端 - 新增 `serverConfig` Feature 模块,包含类型定义、服务层、状态管理和UI组件 - 支持用户手动配置 API 基础地址和 MQTT Broker 地址 - 实现跨平台存储适配器:Electron使用文件系统,Cordova使用NativeStorage,浏览器使用内存存储 - 添加服务器连接检测机制,启动时自动验证配置有效性 - 实现智能配置优先级:用户配置 > 浏览器动态检测 > webpack编译配置 > 默认值 - 新增服务器配置对话框,支持地址验证和测试连接功能 - 集成 MQTT 服务动态配置,确保设备通信正常工作 - 优化应用初始化流程,添加连接检查和错误处理 **核心架构改进:** - 新增 `src/features/serverConfig/` Feature 模块 - 新增 `src/utils/platform.ts` 统一平台检测工具 - 新增 `src/domain/mqttConfig.ts` MQTT 配置服务 - 改造 `src/API/config.ts` 支持动态配置 - 优化 `src/app.tsx` 初始化流程和错误处理 **技术实现亮点:** - Feature-based 架构设计,支持模块化开发 - 统一的存储适配器接口,支持多平台存储策略 - 状态机驱动的初始化流程,确保可靠的启动顺序 - 完整的 TypeScript 类型支持和错误处理 - 用户友好的配置界面和连接测试功能 **改动文件:** - 新增文件: - `src/features/serverConfig/types/index.ts` - `src/features/serverConfig/storage/IStorageAdapter.ts` - `src/features/serverConfig/storage/ElectronStorageAdapter.ts` - `src/features/serverConfig/storage/CordovaStorageAdapter.ts` - `src/features/serverConfig/storage/BrowserStorageAdapter.ts` - `src/features/serverConfig/storage/index.ts` - `src/features/serverConfig/services/ConfigService.ts` - `src/features/serverConfig/state/serverConfigSlice.ts` - `src/features/serverConfig/components/ServerConfigModal.tsx` - `src/features/serverConfig/index.ts` - `src/domain/mqttConfig.ts` - `src/utils/platform.ts` - `docs/实现/运行时配置后端地址功能.md` - `docs/实现/初始化管道系统设计方案.md` - 修改文件: - `src/app.tsx` - 添加服务器连接检查和配置对话框 - `src/API/config.ts` - 改为动态配置函数 - `src/API/interceptor.ts` - 支持动态修改 baseURL - `src/states/store.ts` - 注册 serverConfig slice - `src/domain/mqttService.ts` - 使用动态 MQTT 配置 - `src/domain/mqttServiceForDevice.ts` - 使用动态 MQTT 配置 - `main.js` - 修复 ES 模块兼容性 - `preload.js` - 更新存储 API - `types/global.d.ts` - 添加平台类型定义 - `package.json` - 更新版本号至 1.6.0 --- ## [1.5.0] - 2025-12-11 ### 新增 (Added) - **矩形灰度测量工具完整交互功能** ([#rectangle-grayscale-interaction](src/components/measures/RectangleGrayscaleMeasurementTool.ts)) - 实现线段精确检测功能,支持点击矩形边框进行整体拖拽 - 实现文本框独立拖拽功能,支持自由移动测量结果显示位置 - 实现智能光标反馈系统: - 文本框悬停显示手型光标(pointer) - 线段和手柄悬停显示十字准星光标(crosshair) - 矩形内部显示默认光标 - 实现选中状态下手柄半径动态调整(默认6 → 悬停9 → 选中12) - 实现三级交互优先级:文本框 → 手柄 → 线段 → 内部区域 - 优化矩形内部点击行为:仅选中,不触发拖拽 ### 修复 (Fixed) - **矩形拖拽坐标计算问题修复** - 修复整体拖拽时坐标计算错误导致工具跑出视区的问题 - 简化偏移计算逻辑:新质心位置 = 当前鼠标位置 - 初始偏移 - 确保矩形能够准确跟随鼠标移动,不产生额外偏移 **核心改进:** - 新增 `_isPointNearLine` 和 `_isPointNearLineSegment` 方法实现精确线段检测 - 新增 `_isPointInTextBox` 和 `_checkTextBoxBounds` 方法实现文本框检测 - 优化 `_mouseDownModifyCallback` 实现文本框、手柄、线段的优先级检测 - 优化 `_mouseDragModifyCallback` 支持文本框拖拽和修复整体拖拽坐标计算 - 优化 `_mouseMoveModifyCallback` 实现智能光标样式切换和悬停高亮 - 优化 `renderAnnotation` 根据选中和高亮状态动态调整手柄大小 **改动文件:** - src/components/measures/RectangleGrayscaleMeasurementTool.ts --- ## [1.4.2] - 2025-12-11 ### 新增 (Added) - **直线灰度测量工具文本框交互功能** ([#line-grayscale-text-interaction](src/components/measures/LineGrayscaleMeasurementTool.ts)) - 实现文本框拖拽功能,支持自由移动测量结果显示位置 - 实现文本框悬停时显示手型光标,提供清晰的交互提示 - 实现点击文本框选中整个工具,统一选中行为 - 优化文本框检测逻辑,使用默认位置作为备选值 - 调整检测区域 padding 从 50 减小到 10,提高检测精度 **核心改进:** - 修复文本框位置未定义时检测逻辑不执行的问题 - 实现三级交互优先级:文本框 → 手柄 → 线段 - 确保所有文本框交互功能正常工作 **改动文件:** - src/components/measures/LineGrayscaleMeasurementTool.ts --- ## [1.4.1] - 2025-12-11 ### 新增 (Added) - **直线灰度测量工具交互功能增强** ([#line-grayscale-measurement-interaction](src/components/measures/LineGrayscaleMeasurementTool.ts)) - 实现整个工具平移功能,点击线段可拖拽移动整个测量工具 - 实现手柄拖拽功能,支持单独调整端点位置 - 实现选中状态管理,选中时手柄半径从6增大到12 - 实现线段和手柄悬停时显示十字准星光标 - 实现悬停高亮效果,提供更好的视觉反馈 - 点击空白区域可取消工具选中状态 - 优化数据更新逻辑,只在必要时重新计算统计数据 **核心改进:** - 使用 `handleIndex = -1` 标识整个工具的拖拽操作 - 使用 `wholeToolOffset` 追踪工具平移的拖拽状态 - 实现优先级检测:手柄 → 线段 - 选中状态下保持高亮,提供更好的用户体验 **改动文件:** - src/components/measures/LineGrayscaleMeasurementTool.ts --- ## [1.4.0] - 2025-12-10 ### 新增 (Added) - **矩形区域灰度测量功能** ([#rectangle-grayscale-measurement](docs/实现/矩形区域灰度测量的实现方案.md)) - 实现完整的矩形区域灰度测量工具,提供医学影像选区统计分析 - 新增 `RectangleGrayscaleMeasurementTool` 类,基于Cornerstone3D实现 - 支持在医学图像上绘制矩形选区并自动计算平均、最小、最大灰度值 - 集成完整的测量工具管理系统,支持多视口和状态管理 - 修复矩形手柄拖拽算法,确保角点移动时矩形形状保持正确 - 测量结果实时显示,包括像素平均值、极值和选区面积信息 - 支持工具切换、清除和历史记录管理 **核心文件变更:** - `src/components/measures/RectangleGrayscaleMeasurementTool.ts` (新增) - `src/utils/measurementToolManager.ts` (更新测量工具管理) - `src/pages/view/components/viewers/stack.image.viewer.tsx` (工具集成) - `docs/实现/矩形区域灰度测量的实现方案.md` (功能设计文档) --- ## [1.3.5] - 2025-12-10 ### 修复 (Fixed) - **工作列表患者照片显示逻辑修复** ([#worklist.tsx](src/pages/patient/worklist.tsx)) - 修复患者照片查找条件类型比较错误,解决 undefined === '' 导致照片不显示的问题 ## [1.2.7] - 2025-12-09 ### 修复 (Fixed) - **Reset Image 功能反色问题** ([#stack.image.viewer.tsx](src/pages/view/components/viewers/stack.image.viewer.tsx)) - 修复了点击 Reset Image 按钮后,DICOM 图像显示反色的问题 - 从图像缓存中正确获取原始 `photometricInterpretation` 元数据 - 发现并处理 `resetProperties()` 后需要反转 invert 值的特殊行为 - 解决了 MONOCHROME1/MONOCHROME2 格式图像的正确显示问题 **关键技术发现:** - `resetProperties()` 会重置 VOI LUT 等渲染参数 - 导致需要与初始加载相反的 invert 值才能正确显示 - MONOCHROME1: 初始 `invert=true`,Reset 后需要 `invert=false` - MONOCHROME2: 初始 `invert=false`,Reset 后需要 `invert=true` **影响范围:** - 确保无论用户是否使用"反色对比"功能,Reset 都能正确恢复初始显示 - 所有使用 Cornerstone3D 显示的 DICOM 图像 --- ## [1.2.6] - 2025-12-XX ### 说明 - 历史版本,具体变更待补充 --- ## 版本号说明 本项目遵循[语义化版本 2.0.0](https://semver.org/lang/zh-CN/)规范: - **主版本号 (Major)**:当你做了不兼容的 API 修改 - **次版本号 (Minor)**:当你做了向下兼容的功能性新增 - **修订号 (Patch)**:当你做了向下兼容的问题修正 ### 变更类型说明 - **新增 (Added)**: 添加的新功能 - **变更 (Changed)**: 对现有功能的变更 - **弃用 (Deprecated)**: 即将移除的功能 - **移除 (Removed)**: 已移除的功能 - **修复 (Fixed)**: 任何 bug 修复 - **安全 (Security)**: 针对安全漏洞的修复 --- ## 链接说明 - [未发布]: 当前开发中的版本 - [1.2.7]: https://github.com/usernamedd/zsis/compare/v1.2.6...v1.2.7 - [1.2.6]: https://github.com/usernamedd/zsis/releases/tag/v1.2.6