前端开发规则

本文件适用于 batteryDetection-web。同时遵守父目录 AGENTS.md 的项目不变量。

状态所有权

  • 后端响应是测试、通道、监测、异常、采样、用户、权限和审计的正式状态。前端 store 只保存当前会话的展示缓存和临时表单。
  • 新代码不使用 localStorage 保存业务记录。触及已有本地模拟 store 时,将当前流程迁移到后端 API;不要求顺带重写无关页面。
  • localStorage 可保存认证令牌、记住的用户名和纯展示偏好。可恢复表单草稿必须明确是草稿,提交成功后清除,且不能参与权限或状态判断。
  • 页面按钮可按权限改善体验,但每个受限操作都以服务端授权结果为准。

测试与监测界面

  • 正式测试状态只展示:待测试、检测中、暂停、检测中(异常)、检测完成、已终止。“完成确认中”是后端内部阶段,前端可用进度文案表达但不新增正式测试状态。
  • 监测状态单独展示:未监测、等待设备启动、监测中、补采中、监测结束、已取消。不要把两套状态合并到一个字段或筛选项。
  • “开始监测”表示开始观察和认领,不表示启动 BTS。暂停、继续、结束等入口在第一里程碑保持禁用或明确为未启用设备控制,不能伪造成功状态。
  • 实时快照与历史结果在类型、接口和页面文案上分开;实时点不能加入最终原始数据列表。
  • 采集器是可选辅助设备。创建测试允许只选择检测柜通道,不把采集器做成必填项。

API 与 SSE

  • HTTP 请求复用 src/api/request.ts 的鉴权和错误处理;按业务域在 src/api 中维护带类型的接口,不在视图内散落 URL。
  • SSE 使用 fetch 流式读取 text/event-stream 并携带 Authorization 请求头。JWT 不放入 URL,不使用原生 EventSource 绕开现有鉴权。
  • SSE 重连后用服务端当前快照替换本地快照;历史区间通过 REST 查询。不要把 SSE 当作可靠消息队列或在浏览器累积所有采样点。
  • API 时间按 ISO 8601 解析并以用户本地时区展示;单位换算只发生在展示或导入边界,并保留接口返回的原始单位。

交互与数据安全

  • 运行中测试禁用导入。导入结果逐行展示校验信息,并明确分组成功与失败记录;不能用导入覆盖原始采样。
  • 终态测试不提供重启入口。修订和认领纠正以新操作提交并展示审计结果,不提供静默撤销。
  • SSE 断开、REST 失败和权限拒绝要有可见错误状态;不得乐观地把正式测试状态改为成功。
  • 延续现有 Element Plus 布局与组件习惯,确保桌面和常用窄屏下按钮、状态文本和表格操作不重叠。

验证

  • 修改 API 类型、状态映射或实时流时,检查加载、空数据、断线、重连、无权限和后端异常状态。
  • 完成前运行 npm run build。若新增测试脚本,再同时运行受影响测试。
  • 需要浏览器交互验证时启动 npm run dev,检查控制台和网络请求;完成后说明仍依赖模拟数据的页面。