# FlowMeasure **Repository Path**: amning/flow-measure ## Basic Information - **Project Name**: FlowMeasure - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-02 - **Last Updated**: 2026-07-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FlowMeasure 流量在线校准测量比对系统,正式桌面端基于 Tauri 2、Vue 3、Element Plus 和 .NET 本地 API 构建。 ## 当前实现 - 正式桌面端采用 Tauri + Vue:左侧功能导航包含工作台、流程、监控、记录、配置,并通过本地 API 打开对应业务页面。 - 支持两种业务模式:直接流量测量、在线校准比对。 - 被检表取数方式包含:无被检表、人工录入、通信读取、摄像头识别(暂不支持)。 - 工作台显示实时瞬时流量、累计流量、采样控制、结果判定和自绘曲线。 - 工作台包含动态系统框架图,实时显示标准表、被检表、管路、流量、温度、压力和节点状态。 - 新版主控台和工具窗口使用 Element Plus 语义配色 token。 - 曲线支持标准表、被检表、采样点标记和 1/5/15 分钟窗口。 - 现场校准支持不可调流量单点测试、手工录入、4-20mA 电流信号模拟、瞬时量/累计流量分表明细和记录编号生成。 - 现场校准记录、配置和基础资料默认保存到 `D:\FlowMeasure\Data\flowmeasure.db`;D 盘不可用时回退到 `C:\FlowMeasure\Data\flowmeasure.db`,支持每日启动备份、手动备份和恢复备份排程。 - 保存后的现场校准记录支持导出 PDF 校准记录和 Excel 原始数据表,默认输出到同一数据根目录的 `Exports/`;旧版用户目录中的既有数据会在首次启动时复制到新的根目录,原始文件保留不删除。 - 系统设置中接入 AutoUpdater.NET,可配置升级清单地址并执行在线更新检查。 - 核心计算与趋势窗口已覆盖单元测试。 ## 已核实的开发待办 > 本清单于 2026-07-28 对照当前代码、测试与近期提交整理。已运行 `dotnet test FlowMeasure.slnx --no-restore`,结果为 **74/74 通过**。该结果不替代 UI、安装包、设备超时、SSE 和重启恢复等端到端验证。 ### P0:数据正确性与交付安全 #### 1. 导出数据与报表 - [ ] 修复 Excel 原始记录中“目标流量”的取值:必须导出已确认/配置的 `TargetFlow`,不能写入标准表实际测量流量。 - [ ] 修复过程数据工作表格式:仅对真实时间戳列使用日期时间格式;流量、温度、压力、测量时长等数值列必须使用对应数值格式。 - [ ] 增加导出回归测试,覆盖目标流量映射、数值格式、超过 21 条结果行、12 点 × 10 次容量和追加点位。 - [ ] 手工验证:导出超过 21 条结果行时,PDF 与 Excel 均生成成功,且数据与格式正确。 #### 2. 保存、实时采集与异常路径回归 - [ ] 增加 API 回归测试:保存校验失败时,导出不得复用上一条记录;“下一台”不得重启或丢弃当前未保存数据。 - [ ] 增加实时采集回归测试:停止采集后仍可保存临时数据;单/双通道断线后不能保存陈旧或不完整读数。 - [ ] 明确并验证单通道失败的 UI 状态:必须表达数据不完整且不可保存。 - [ ] 增加模拟 5 秒设备读取超时的测试,确认校准 ticker、计时和 SSE 状态推送不会被阻塞。 - [ ] 手工验证发布包位于含空格目录(例如 `C:\Program Files\FlowMeasure`)时,API 仍可正常启动和关闭。 #### 3. 工作表编辑与历史记录一致性 - [ ] 统一“现场工作表双击编辑”与“已保存记录编辑”的语义:已保存记录的编辑必须同步重算、持久化更新历史记录并写入审计;否则现场工作表不得修改已保存数据。 - [ ] 确保工作表编辑后的结果在离开或重启后仍保留,并与记录查询、PDF、Excel 导出一致。 - [ ] 增加端到端回归测试:保存记录 → 双击编辑 → 重启 → 查询、审计、PDF、Excel 均反映修改后的数据。 - [ ] 维持数值校验与未测量空行禁止编辑;编辑操作不使用显眼入口或确认弹窗。 ### P1:流程完整性与前端保存可靠性 #### 4. 追加流量点的持久化恢复 - [ ] 追加流量点后立即持久化草稿,确保追加第 8 点后直接重启 API/应用仍能恢复流量点、测试次数、进度、工作表和已采样数据。 - [ ] 补充 API 会话重建的回归测试;不能只依赖同进程 ViewModel 或数据库往返测试。 - [ ] 若某些状态无法恢复,明确实际恢复策略,避免界面承诺“已恢复”但新增点尚未落盘。 #### 5. 标准器编辑与通信配置保存 > 以下“默认交付壳”均指 Tauri 正式桌面端。 - [ ] 补齐默认交付壳中标准器编辑的完整字段校验,并保持字段级输入校验。 - [ ] 保存期间防止重复提交;资料、校准通道、实时通道多步保存失败时,显示明确的失败阶段。 - [ ] 保存失败后从服务端回读标准器与通信状态,保留可重试草稿,不能将本地草稿误显示为已生效。 - [ ] 修复无效溯源日期被静默替换为默认日期/有效期的问题。 - [ ] 改造 `ShowFieldDialog` 的 fire-and-forget 保存流程:失败时不得直接关闭编辑对话框或跳转页面。 - [ ] 增加模拟、TCP、串口和同串口冲突的端到端验证。 #### 6. 现场校准保存资料与反馈 - [ ] 补充默认壳端到端验证:完成测试 → 保存 → 记录查询可见 → 重复保存不新增记录。 - [ ] 防止 `BuildCalibrationConfig()` 的空字段覆盖既有资料,或提供明确的合并规则和回归测试。 - [ ] 为完成阶段提供专用的保存资料元数据更新路径;修改资料后必须先同步到服务端,再保存记录。 - [ ] 保持直接保存、无确认弹窗;如需修订资料,提供明确但不打断保存流程的编辑入口。 #### 7. 记录查询、详情、Excel 导出与隐蔽编辑 - [ ] 完善记录查询的详情界面,补齐记录信息、测量明细和相关结果展示。 - [ ] 完善记录查询的 Excel 导出,确保导出字段、格式和数据完整性与记录详情一致。 - [ ] 数据修改仅在双击相应数据后进入编辑;不设置明显的编辑入口或过度细分的修改操作。 - [ ] 编辑和保存均不显示提醒、确认或其他打断性提示;同时保留必要的数据校验,避免非法输入覆盖原始数据。 - [ ] 修改后的数据必须同步反映在详情、PDF 和 Excel 导出中。 ### P2:交付路径与并发控制 #### 8. Tauri 正式交付路径 - [x] 正式发布功能落点统一为 `FlowMeasure.TauriPreview`(Tauri + Vue);其目录名称因构建、资源和发布脚本兼容性暂时保留 `Preview`,不代表预览交付。 - [ ] 补充 Tauri 安装包的启动、升级、API 随包启动和关闭验证;Avalonia 仅作为兼容实现,不再承接新增正式前端功能。 #### 9. 控制租约与保存并发 - [ ] 为校准与实时采集 API 的控制租约补充 HTTP 端点级 409 冲突集成测试。 - [ ] 在默认交付壳中为保存、轮询和 SSE 刷新使用统一操作 gate,避免保存期间被异步状态刷新覆盖。 - [ ] 增加保存与 SSE/轮询并发的回归测试。 ## 已核实实现(避免重复开发) - API 子进程已使用 `ProcessStartInfo.FileName` / `ArgumentList` 直接启动,关闭时会优雅停止并在超时后清理进程树;保留健康检查、启动超时与错误提示。 - 导出保存失败时不会复用上一条 `LastSavedRecord`;“下一台”仅在当前保存成功后重启流程。 - 实时采集停止时会保留临时数据;任一通道读数失败时会清除可保存的最新双表读数。 - 校准 ticker 已采用异步、非重叠的设备读取调度,避免同步读取直接阻塞 10ms 循环。 - 原始记录模板容量已扩展至 120 行,覆盖标准 12 点 × 10 次;PDF 结果行支持分页。 - 已测量的工作表行支持数值校验和重算,未测量空行会被拒绝编辑;记录详情的历史结果行编辑可重算、落库并写审计。 - 中断校准草稿已具备数据库保存与恢复基础;但“追加后立即重启”的保证仍需补齐。 - API 已具备标准器必填校验、部分溯源校验以及标准器/被检表同串口冲突拦截。 - 保存失败、缺少必填资料和 API 异常已在校准页面提供可见反馈。 - `BuildCalibrationConfig()` 已映射有效期、地点、气体状态、标准器溯源、核验人、扩展不确定度和其他信息;仍需补空值覆盖保护。 - 控制租约已作用于校准和实时采集的非 GET 变更请求;新 AXAML 校准页已有操作 gate,默认壳仍需补齐。 ## 运行 当前桌面端仅支持 Windows 10 和 Windows 11 本地运行。 ```powershell # 本地 API pnpm --dir FlowMeasure.TauriPreview api:dev # 正式 Tauri 桌面端 pnpm --dir FlowMeasure.TauriPreview tauri:dev # 类型检查、前端构建和 .NET 测试 pnpm --dir FlowMeasure.TauriPreview typecheck pnpm --dir FlowMeasure.TauriPreview build dotnet test FlowMeasure.slnx ``` 发布 Windows 10/11 x64 包: ```powershell pnpm --dir FlowMeasure.TauriPreview tauri:build ``` ## 架构 - `FlowMeasure.TauriPreview`:正式 Tauri 桌面端,提供 Vue 业务页面、安装包和随包 API 启动。 - `FlowMeasure.Api`:本地 HTTP/SSE 业务服务、SQLite 持久化、审计和导出入口。 - `FlowMeasure.App`:兼容的 Avalonia 实现与共享运行时服务,不再承接新增正式前端功能。 - `FlowMeasure.Core`:业务模式、采样模型、趋势模型、误差计算。 - `FlowMeasure.Infrastructure`:设备采集抽象与模拟测量源。 - `FlowMeasure.Tests`:计算、运行时持久化和导出回归测试。 第一版仅支持 Windows 10/11 本地使用,真实串口/Modbus 采集、远程登录、移动端和中心同步按架构预留继续扩展。