这次需求的边界其实很清楚
7 月 5 日这次 SEUPhyX 修改,最开始的要求并不复杂:把队友那边已经做好的视觉测量功能合进本地油滴实验平台,并且不要修改之前的聚类和拟合逻辑。
这个限制很重要。SEUPhyX 已经是一条完整的教学路径:学生录入油滴数据,系统计算电荷估计,再做 Q 分布聚类,最后进入符号回归和报告生成。如果视觉测量只是新的数据入口,它就应该落在预留接口上,最终写进同一份测量数据,后面的分析逻辑继续保持稳定。
换句话说,这次真正要做的是接线,重新设计实验系统不在本轮范围里。
视觉测量应该像一个新的采集端
队友实现的视觉部分是一个 OpenCV 运行时:摄像头窗口负责识别和跟踪油滴,下游把测量结果写成表格。这个设计天然适合做成“独立测量窗口 + 主应用刷新导入”的结构。
我把它看成三层:
- OpenCV 窗口负责真实测量和跟踪。
- 视觉标签页负责启动窗口、说明当前数据来源、刷新共享结果。
- 原有油滴系统继续读取统一的
oil_drop.csv,让手动录入和视觉测量走同一条后续分析链。
这样做的好处是,视觉测量不会变成另一套平行系统。它只是多了一个数据入口,后面的聚类、符号回归、报告页仍然面对同一种数据格式。
接进去之后,页面的噪声也暴露出来了
接入视觉测量时,主应用还有一个很实际的问题:侧边栏会把完整数据表直接渲染出来。油滴数据一多,页面就变得很吵,视觉测量刷新时也不够轻。
所以我顺手把侧边栏改成只显示当前测量条数,最近 20 条数据放进可展开区域。这个改动本身不改变实验结果,但让“视觉采集 -> 刷新数据 -> 继续分析”的体验干净了很多。
另一个暴露出来的问题是报告页。原来 Plotly / Kaleido 的图片导出失败时,底层错误容易穿透到用户界面。对学生来说,他们不需要看到一堆导出路径和底层异常;他们需要的是报告能生成,图像能兜底,结论能保留。
于是报告页变成了摘要优先的结构:核心结论、Q 峰摘要、最终公式和结果图保留下来,逐点明细表不再塞进报告。导出失败时,用 Pillow 生成一张内置回退图,保证 PDF 仍然能产出。
这次真正值得记下的是“越界感”
虽然功能接上了,验证也跑过了,但这次工作有一个不太满意的地方:我没有完全守住最初的边界。
需求说得很明确,不要改之前的聚类和拟合逻辑。视觉接入本来应该集中在视觉运行时、视觉标签页、数据刷新和报告展示上。但实际过程中,工作区里出现了与分类、回归标签页相关的改动痕迹。这不一定意味着算法被大改了,但从工程纪律上讲,它已经让审查成本变高了。
学生项目里最容易发生的事情就是“顺手修一下”。顺手修 UI、顺手改报告、顺手理一下依赖,看起来都合理。但当用户已经给出清晰边界时,最重要的是让最终 diff 能证明自己只做了承诺过的事。
这次我会把它记成一条规则:当需求明确说“不要动某块逻辑”时,结束前要用 diff 反向证明这件事,不能只凭主观印象说“我大概没动”。
对 SEUPhyX 来说,视觉测量是下一步
如果把油滴实验系统分成“采集、发现、解释、报告”四段,视觉测量补的是第一段。
之前系统更偏向手动录入和离线数据分析。现在视觉测量接进来之后,它开始有了实验现场的入口:摄像头看见油滴运动,数据流入 CSV,主应用读取并继续聚类和拟合。这个方向比单纯把模型调准更接近真实教学场景。
但我也不想把这次说得太圆满。视觉测量接上只是第一步,后面还需要更稳的标定、异常轨迹处理、采集过程提示,以及和课堂实验流程更自然的衔接。
这次最有价值的结果,是让我更清楚地看到 SEUPhyX 应该怎样扩展:新增入口可以很多,但分析主线要稳,工程边界要清楚,报告输出要让学生能读懂。
Comments
评论