feat(autocal): 完善标定记录检查流程与UV轮廓显示

补齐传感器身份、稳定段检查引导和未完成试验诊断,并保存采集轮廓快照。通过60项相关测试、已有记录读取及代码和文档检查。
This commit is contained in:
ykcheungab
2026-10-11 20:15:04 +08:00
parent 432f45325f
commit d06501d7d5
17 changed files with 719 additions and 141 deletions
+53 -22
View File
@@ -488,6 +488,8 @@
"flow_missing": "No valid displacement for this frame"
},
"overview": {
"capture_in_progress": "In progress",
"saved": "Analysis saved; hover for its location.",
"open_session": "Open calibration session…",
"empty": "Choose the session folder containing session.json to view collected sites, normal response and sensitivity. You can also open current data from Calibration capture.",
"title": "Calibration record overview",
@@ -496,36 +498,64 @@
"sensitivity": "Normal sensitivity",
"import_plan": "Import planned-point CSV…",
"clear_plan": "Clear plan comparison",
"load": "Load saved review…",
"save": "Save new overview and review",
"summary": "Acquired {collected}; planned {planned}; missing {missing}; incomplete attempts {incomplete}; pending review {pending}; reviewed {reviewed}; outside plan {extra}.",
"no_plan": "Without a plan, missing sites cannot be determined. Plan order is separate from acquisition site_id.",
"load": "Load saved analysis…",
"save": "Save analysis results",
"summary": "Collected {collected} / planned {planned}; missing {missing}; with incomplete attempts {incomplete}; unchecked {pending}; checked {reviewed}; extra {extra}.",
"no_plan": "Import a plan to identify missing sites.",
"uncollected": "Not acquired",
"incomplete": "Has incomplete attempts",
"pending": "Pending review",
"reviewed": "Reviewed",
"confirmed": "Confirmed",
"candidate": "Candidate",
"coverage_map": "Red: incomplete attempts; orange: pending; green: reviewed; grey: not acquired",
"pending": "Awaiting check",
"reviewed": "Stable windows checked",
"confirmed": "Checked",
"candidate": "Unchecked",
"coverage_map": "Red: incomplete attempts; amber: unchecked; green: checked; grey: uncollected",
"sensitivity_map": "Confirmed sensitivity: blue→red {low:.4g}→{high:.4g} raw/N<br/>Grey: no confirmed fit",
"details": "Inspect signal / review windows…",
"details": "Check hold windows…",
"trial_filter": "Displayed trial",
"all_trials": "All trials",
"site_fit": "Site loading fit (all eligible trials)",
"response_title": "Normal response: reference force → raw signal",
"selected_fit": "Site exploratory sensitivity {sensitivity} raw/N ({basis}); fit range and trial count are in the table. Physical signal/reference validation is still required.",
"no_windows": "No complete hold windows for this site/trial. Incomplete trials are excluded from fits; raw files are retained.",
"selected_fit": "Sensitivity {sensitivity} raw/N · {basis}. Fit uses all eligible loading windows at this site; range and trial count are in the site tooltip.",
"no_windows": "No eligible complete windows; recorded signal and stop diagnostics remain available.",
"col_order": "Plan order",
"col_site": "Acquired site",
"col_uv": "U / V (px)",
"col_xyz": "Sensor XYZ (mm)",
"col_status": "Status",
"col_status": "Analysis readiness",
"col_trials": "Complete / all trials",
"col_windows": "Confirmed / complete windows",
"col_levels": "Confirmed loading levels (N)",
"col_sensitivity": "Sensitivity (raw/N) / basis",
"col_range": "Fit range (N)",
"col_fit_trials": "Fit trials"
"col_fit_trials": "Fit trials",
"tools": "Plan / saved analysis",
"identity": "Model: {model} SN: {sn} Acquired: {date} Source: {source} Capture: {status}",
"source_video": "Video replay (debug only)",
"source_camera": "Camera",
"timeline": "Time signal / diagnostics",
"response": "Loading / unloading response",
"time_axis": "Time from each trial’s first valid sample (s)",
"reference_axis": "Declared reference (N)",
"timeline_title": "Blue: FN_raw; orange: declared hold reference (not live FT)",
"no_trace": "No readable valid signal; inspect diagnostics below",
"outline_snapshot": "Grey: sensor boundary; blue: colour patch boundary (recorded snapshot)",
"outline_surface_only": "Sensor mapping verified; no recorded colour patch outline is available.",
"outline_unavailable": "Recorded UV outline unavailable; showing sites only.",
"outline_mismatch": "UV outline does not match the recorded mapping; overlay disabled.",
"analysis_reviewed": "Stable windows checked",
"analysis_pending": "Check stable windows",
"analysis_no_analysis": "No eligible windows",
"site_details": "XYZ (mm): {xyz}\nComplete / all attempts: {attempts}\nFit range (N): {range}; contributing trials: {trials}",
"inspect_incomplete": "Inspect incomplete attempt",
"diagnostic": "{trial} · {status} | Valid samples {samples}; invalid / unjoined {invalid}; recording drops {dropped}; largest frame gap {gap} s\nStop reason: {reason}",
"read_errors": "Missing or unreadable: {detail}",
"choose_trial": "Select one trial for integrity, drop and stop diagnostics. All-trial traces use separate time origins.",
"unsaved": "Window or plan changes have not been saved.",
"save_hint": "Confirming stability does not certify calibration accuracy.",
"guide_missing": "1 Check identity → 2 Select site / trial → 3 Check stable windows → 4 Save\nNext: this site has no attempt; choose a collected site or acquire it.",
"guide_incomplete": "1 Check identity → 2 Select site / trial → 3 Check stable windows → 4 Save\nNext: inspect the stop reason and recorded signal. Incomplete attempts are excluded from fitting.",
"guide_check": "1 Check identity → 2 Select site / trial → 3 Check stable windows → 4 Save\nNext: select a trial and Check hold windows; adjust the time interval if needed.",
"guide_save": "1 Check identity → 2 Select site / trial → 3 Check stable windows → 4 Save\nNext: inspect remaining holds or save current analysis."
},
"quality": {
"open": "Repeatability and validation…",
@@ -562,9 +592,9 @@
"col_range_status": "Range/status"
},
"review": {
"load_selection": "Load saved review…",
"confirm_stable": "Reviewed as stable",
"apply_window": "Apply window and recalculate",
"load_selection": "Load saved analysis…",
"confirm_stable": "This interval was checked for stability",
"apply_window": "Confirm interval and recompute",
"start_offset": "Start",
"end_offset": "End",
"verified": "Stability confirmed by operator",
@@ -575,9 +605,9 @@
"trace_title": "Selected hold signal; vertical lines mark the analysis window",
"selection_unsaved": "Window applied; save the analysis to preserve this review.",
"open": "Review calibration data…",
"title": "Exploratory calibration review",
"notice": "Inspect each raw hold signal, adjust the times relative to hold start, confirm stability and apply. Operator review does not prove reference accuracy or synchronisation. Replay is for debugging; fits are exploratory.",
"save": "Save new review",
"title": "Hold window inspection",
"notice": "Select a hold → inspect signal, standard deviation and drift → adjust the interval → confirm stability and recompute → save. Operator confirmation is not accuracy acceptance.",
"save": "Save analysis results",
"no_sites": "No sites in this session",
"candidate": "Candidate window",
"insufficient_samples": "Insufficient valid samples",
@@ -590,7 +620,7 @@
"force_axis": "Manual reference force (N)",
"chart_title": "Hold-window means: loading vs unloading",
"uv_title": "Site sensitivity: blue→red {low:.4g}→{high:.4g} raw/N; grey has no fit",
"issues": "Skipped {count} incomplete trials; complete holds still require stability review.",
"issues": "{count} incomplete attempts excluded from fitting. Inspect raw signals for stability.",
"saved": "Saved new review: {path}",
"col_trial": "Trial",
"col_branch": "Phase",
@@ -599,6 +629,7 @@
"col_mean": "Raw mean",
"col_std": "Raw std",
"col_duration": "Hold (s)",
"col_quality": "Quality"
"col_quality": "Quality",
"col_drift": "Drift (raw/s)"
}
}
+53 -22
View File
@@ -488,6 +488,8 @@
"flow_missing": "本帧无有效位移信号"
},
"overview": {
"capture_in_progress": "采集中",
"saved": "分析结果已保存;保存位置见提示。",
"open_session": "打开标定会话…",
"empty": "请选择包含 session.json 的会话文件夹,查看已采集测点、法向响应和灵敏度;也可从标定采集页打开本场数据。",
"title": "标定记录总览",
@@ -496,36 +498,64 @@
"sensitivity": "法向灵敏度",
"import_plan": "导入计划测点 CSV…",
"clear_plan": "清除计划对照",
"load": "载入已保存复核…",
"save": "另存总览与复核",
"summary": "已采集 {collected} 点;计划 {planned} 点;未采 {missing};有未完成试验 {incomplete};待复核 {pending};已复核 {reviewed};计划外 {extra}。",
"no_plan": "未导入计划表,无法判断漏采点;序号仅用于计划对照,不作为采集 site_id。",
"load": "载入历史分析…",
"save": "保存分析结果",
"summary": "已采 {collected} 点/计划 {planned} 点;漏采 {missing};有未完成试验 {incomplete};待检查 {pending};已检查 {reviewed};计划外 {extra}。",
"no_plan": "未导入计划,暂不能判断漏采点。",
"uncollected": "尚未采集",
"incomplete": "有未完成试验",
"pending": "待复核",
"reviewed": "已复核",
"confirmed": "已确认",
"candidate": "候选",
"coverage_map": "红:有未完成试验;橙:待复核;绿:已复核;灰:未采",
"pending": "待检查",
"reviewed": "稳定段已检查",
"confirmed": "已检查",
"candidate": "待检查",
"coverage_map": "红:有未完成试验;橙:待检查;绿:已检查;灰:未采",
"sensitivity_map": "已确认灵敏度:蓝→红 {low:.4g}→{high:.4g} raw/N<br/>灰:无已确认拟合",
"details": "查看信号/复核窗口…",
"details": "检查保持段…",
"trial_filter": "显示试验",
"all_trials": "全部 trial",
"site_fit": "测点加载拟合(全部符合条件的 trial)",
"response_title": "法向响应:参考力 → 原始信号",
"selected_fit": "本测点初步灵敏度 {sensitivity} raw/N({basis});拟合范围和 trial 数见表格。原始信号与实际参考力仍须实机验证。",
"no_windows": "所选点/trial 无完整保持窗口;未完成试验不参与拟合,原始文件仍保留。",
"selected_fit": "灵敏度 {sensitivity} raw/N · {basis}。拟合按本点全部合格加载窗口计算;范围及试验数见测点提示。",
"no_windows": "所选试验没有可分析的完整窗口;可查看已有原始信号和结束原因。",
"col_order": "计划序号",
"col_site": "采集测点",
"col_uv": "U / V (px)",
"col_xyz": "传感器 XYZ (mm)",
"col_status": "状态",
"col_status": "分析准备状态",
"col_trials": "完成/全部 trial",
"col_windows": "确认/完整窗口",
"col_levels": "已确认加载档位 (N)",
"col_sensitivity": "灵敏度 (raw/N)/依据",
"col_range": "拟合范围 (N)",
"col_fit_trials": "拟合 trial 数"
"col_fit_trials": "拟合 trial 数",
"tools": "计划/历史分析",
"identity": "型号:{model} SN:{sn} 采集时间:{date} 来源:{source} 采集:{status}",
"source_video": "视频重放(仅调试)",
"source_camera": "相机",
"timeline": "时间曲线/记录诊断",
"response": "加载/卸载响应",
"time_axis": "距各试验首个有效样本 (s)",
"reference_axis": "人工参考力 (N)",
"timeline_title": "蓝:FN_raw;橙:人工保持参考力(不是实时 FT)",
"no_trace": "没有可读的有效信号;请查看下方记录诊断",
"outline_snapshot": "灰:传感面轮廓;蓝:彩色 patch 区域轮廓(采集快照)",
"outline_surface_only": "传感面映射已核对;未保存彩色 patch 轮廓,无法恢复。",
"outline_unavailable": "找不到记录对应的 UV 轮廓;仅显示测点。",
"outline_mismatch": "UV 轮廓与记录映射不一致,已停用叠加。",
"analysis_reviewed": "稳定段已检查",
"analysis_pending": "待检查稳定段",
"analysis_no_analysis": "无可分析窗口",
"site_details": "XYZ (mm):{xyz}\n完成/全部试验:{attempts}\n拟合范围 (N):{range};拟合试验数:{trials}",
"inspect_incomplete": "查看中止记录",
"diagnostic": "{trial} · {status}|有效样本 {samples};无效/未关联 {invalid};录像丢帧 {dropped};最大帧间隔 {gap} s\n结束原因:{reason}",
"read_errors": "缺失或无法读取:{detail}",
"choose_trial": "请选择单次试验查看完整性、丢帧及结束原因;全部试验曲线按各自起点对齐。",
"unsaved": "窗口或计划已修改,尚未保存。",
"save_hint": "确认稳定只表示检查过信号,不代表标定精度合格。",
"guide_missing": "① 核对身份 → ② 选测点/试验 → ③ 检查稳定段 → ④ 保存\n下一步:此点尚未采集,请选择已采点或安排补采。",
"guide_incomplete": "① 核对身份 → ② 选测点/试验 → ③ 检查稳定段 → ④ 保存\n下一步:查看结束原因及已录曲线,决定补采;未完成试验不参与拟合。",
"guide_check": "① 核对身份 → ② 选测点/试验 → ③ 检查稳定段 → ④ 保存\n下一步:选择单次试验,点击“检查保持段…”;必要时调整时间区间。",
"guide_save": "① 核对身份 → ② 选测点/试验 → ③ 检查稳定段 → ④ 保存\n下一步:继续检查剩余保持段,或保存当前分析结果。"
},
"quality": {
"open": "重复性与验证…",
@@ -562,9 +592,9 @@
"col_range_status": "范围/状态"
},
"review": {
"load_selection": "载入已保存复核…",
"confirm_stable": "已检查此段稳定",
"apply_window": "应用窗口并重算",
"load_selection": "载入历史分析…",
"confirm_stable": "此时间段已检查稳定",
"apply_window": "确认选中时间段并重算",
"start_offset": "起点",
"end_offset": "终点",
"verified": "人工已确认稳定",
@@ -575,9 +605,9 @@
"trace_title": "选中保持段原始信号;竖线为分析窗口边界",
"selection_unsaved": "窗口已应用;请另存分析结果以保留复核。",
"open": "查看标定数据…",
"title": "标定数据初步分析",
"notice": "逐段查看原始信号,调整起止时间并确认稳定后应用。起止时间相对本段保持开始;人工复核不证明参考力准确或同步。视频重放仅供调试;拟合不是正式标定系数。",
"save": "另存分析结果",
"title": "保持段检查",
"notice": "选择保持段 → 检查曲线、标准差及漂移 → 调整起止时间 → 确认稳定并重算 → 保存。人工确认不是精度验收。",
"save": "保存分析结果",
"no_sites": "会话没有测点",
"candidate": "候选窗口",
"insufficient_samples": "有效样本不足",
@@ -590,7 +620,7 @@
"force_axis": "人工参考力 (N)",
"chart_title": "各保持窗口均值:加载/卸载对照",
"uv_title": "测点初步灵敏度:蓝→红 {low:.4g}→{high:.4g} raw/N;灰色无拟合",
"issues": "已跳过 {count} 个未完成 trial;完整保持窗口仍须复核稳定性。",
"issues": "{count} 次未完成试验不参与拟合;请按原始曲线检查稳定性。",
"saved": "已另存:{path}",
"col_trial": "试验",
"col_branch": "阶段",
@@ -599,6 +629,7 @@
"col_mean": "原始均值",
"col_std": "原始标准差",
"col_duration": "保持 (s)",
"col_quality": "质量说明"
"col_quality": "质量说明",
"col_drift": "漂移 (raw/s)"
}
}