本文件适用于 batteryDetection-web。同时遵守父目录 AGENTS.md 的项目不变量。
localStorage 保存业务记录。触及已有本地模拟 store 时,将当前流程迁移到后端 API;不要求顺带重写无关页面。localStorage 可保存认证令牌、记住的用户名和纯展示偏好。可恢复表单草稿必须明确是草稿,提交成功后清除,且不能参与权限或状态判断。待测试、检测中、暂停、检测完成。完成确认中、检测中(异常)和已终止不属于新流程状态,历史值仅作兼容展示。未开始接收、接收中、暂停接收、已结束接收;不要把设备、接收和测试三套状态合并到一个字段或筛选项。S-01...S-N 仅属于演示合同。src/api/request.ts 的鉴权和错误处理;按业务域在 src/api 中维护带类型的接口,不在视图内散落 URL。fetch 流式读取 text/event-stream 并携带 Authorization 请求头。JWT 不放入 URL,不使用原生 EventSource 绕开现有鉴权。battery-* 业务 API 时间按 Unix epoch 毫秒解析并以用户本地时区展示;平台接口可保持原有格式。单位换算只发生在展示或导入边界,并保留接口返回的原始单位。npm run build。若新增测试脚本,再同时运行受影响测试。npm run test:e2e:ticket04;该命令必须使用隔离端口和临时 MySQL/Redis,结束后不得遗留进程或容器。**注意:该编排原本还会启动开发模拟器(后端 dev-simulator profile 与 /dev/bts-simulator 页面),模拟器已按 Ticket04(2026-10-08)整体拆除**,tests/e2e/ 下依赖模拟器页面与端点的用例(含设备登记与采集器登记的旧流程)在按真实来源重写之前跑不通,见 docs/KNOWN-GAPS.md。npm run dev,检查控制台和网络请求;完成后说明仍依赖模拟数据的页面。