- 添加了upload-esp32.js用于处理ESP32的OTA上传,包括文件上传、SHA-256验证和设备重启。 - 引入了upload-gd32.js,用于触发GD32 OTA中继并跟踪中继进度。 - 针对OTA流程,增强了会话管理和错误处理能力。 - 通过在上传过程中显示吐司通知和进度更新,改进了用户反馈。
6.6 KiB
6.6 KiB
Checklist
CSS 拆分验证
css/base.css包含:root变量定义、.container样式、背景纹理,无其他职责段混入css/layout.css包含 header、main-layout、cards、forms、buttons、conn-indicator 样式css/components.css包含 upload-zone、file-info、progress、stage-flow、badges、metrics、heap、log-panel、toast 样式css/can.css包含 CAN panel、CAN workspace、CAN feedback、ID snapshot、报文列表布局样式css/responsive.css包含所有@media查询和@keyframes动画定义- 三个 HTML 页面的
<link>标签引用了全部 5 个 CSS 文件,页面视觉效果与原style.css完全一致 - 原
tools/style.css已删除
公共模块验证
js/common/utils.js导出formatBytes、formatTime、formatUptime、escapeHtml、sanitizeHtmljs/common/toast.js导出showToast,支持 info/success/warning/error 类型js/common/log.js导出addLog、clearLogs、setLogFilter、toggleAutoScroll,环形缓冲与去重逻辑完整js/common/connection.js导出testConnection、连接状态指示器更新函数js/common/polling.js导出轮询调度、pollStatus、pollLogs、Page Visibility 补偿逻辑
app.js 拆分验证
js/ota/session.js包含完整 OTA 会话状态机,状态流转(IDLE→UPLOADING→VERIFYING→REBOOTING→DONE / FAILED)逻辑不变js/ota/progress.js包含进度条、阶段节点 UI、setProgress、setActivePhase、markStageDonejs/ota/stages.js包含 ESP32/GD32 阶段驱动,esp32OtaPhase、esp32PhaseLabels等状态保留js/ota/file-handle.js包含文件选择、FSAPI、SHA-256 计算、Intel HEX→BIN 转换、文件信息 UIjs/ota/upload-esp32.js包含 ESP32 上传流程、心跳、SHA 校验、完成升级,重试阈值与 goto 跳转逻辑保留js/ota/upload-gd32.js包含 GD32 中继 OTA 触发、relay 态跟踪、hasObservedRealRelayState逻辑js/ota/spi.js包含sendSpiFrame、clearSpiFieldsjs/ota/console-mode.js包含从 index.html 抽出的全部内联脚本函数
ble_ota.js 拆分验证
js/ble/constants.js导出UUIDS、所有BLE_OTA_*常量、TARGETS配置js/ble/state.js导出state对象、元素缓存、currentTarget、refreshTargetUi、setConnectionStatejs/ble/stages.js导出setBleStage、resetBleStages、setBleStageError、updateBleStageLabelsjs/ble/gatt.js导出 BLE 连接、断开、服务发现、通知使能逻辑js/ble/file.js导出notifyFileChange、clearFile、分包计算js/ble/transfer.js导出数据写入循环、ACK 窗口节流(每 32 包或窗口边界 ACK)、updateProgressFromAckjs/ble/verify.js导出showBleVerifyInfo、hideBleVerifyInfojs/ble/session.js导出waitForOtaResult、resolveOtaResult、rejectOtaResult、abort 逻辑
can.js 拆分验证
js/can/dbc.js导出parseDbc、findSignal、parseMultiplexToken、buildSummaryjs/can/messages.js导出报文列表渲染、过滤、节点过滤逻辑js/can/signals.js导出信号值编辑器、编解码、批量添加js/can/send.js导出帧构建、发送、CAN_SEND_ERR_DESC、GD32_ERR_DESC、buildSendResponseTextjs/can/feedback.js导出 1Hz 反馈轮询、ID 快照表渲染 注:原 can.js 中不存在 1Hz 反馈轮询/ID 快照表代码(该功能在 can_monitor.js 中)。feedback.js 当前重导出 common/connection.js 的连接管理函数供入口使用。如后续 can 页面需要 1Hz/can/feedback轮询,可在 feedback.js 实现。
can_monitor.js 验证
js/can_monitor.js转为 ESM,引用js/common/*公共模块替换重复工具函数- CAN 监控页面功能正常(连接、报文接收)— HTTP 200 验证通过,语法检查通过
入口与 HTML 验证
js/app.js薄入口 import 所有 ota + common 模块,HTML onclick 引用的函数已挂载到windowjs/ble_ota.js薄入口 import 所有 ble 模块,导出window.bleOtaAPI 并调用init()js/can.js薄入口 import 所有 can 模块并初始化index.html使用<script type="module">,无内联<script>块can.html使用<script type="module" src="js/can.js">can_monitor.html使用<script type="module" src="js/can_monitor.js">- 所有
import路径带.js后缀
清理验证
- 原
tools/app.js(2371 行)已删除 - 原
tools/ble_ota.js(1658 行)已删除 - 原
tools/can.js(1526 行)已删除 - 原
tools/style.css(2146 行)已删除 - 原
tools/can_monitor.js已删除(迁移到js/can_monitor.js)
功能完整性验证
- 浏览器控制台无加载错误、无 import 解析失败 — HTTP 200 全部资源可达,30 个 JS 文件语法检查通过,MIME 类型正确(text/javascript)
- index.html WiFi OTA 模式:ESP32/GD32 目标切换、文件选择(含 FSAPI)、上传、进度条、阶段流、SHA 校验面板、重启均正常 — 需浏览器实机验证(涉及真实设备交互)
- index.html BLE OTA 模式:连接/断开、文件选择、一键刷写、中止、ACK 节流、阶段流、校验面板均正常 — 需浏览器实机验证(需 Web Bluetooth 真实设备)
- index.html 日志面板:UDP 日志接收、HTTP 日志拉取、过滤、自动滚动、清除均正常 — 需浏览器实机验证
- index.html SPI 发送、系统状态轮询、堆/任务栈展示均正常 — 需浏览器实机验证(需真实设备)
- can.html:DBC 导入、报文列表、节点过滤、信号编辑、帧发送、1Hz 反馈均正常 — 需浏览器实机验证
- can_monitor.html:连接、报文接收监控正常 — 需浏览器实机验证
- 刷写进行中切换模式/目标被正确阻止(守卫逻辑保留)— console-mode.js 中 setConsoleMode/selectFlashTarget 守卫逻辑原样保留
- BLE 断开时按系统状态处理(GD32_RELAYING/ESP32_REBOOTING 保留,其他 abortCurrent)逻辑保留 — ble/session.js 的 abortTask 与 gatt.js 的 onDisconnected 逻辑原样保留
说明
- 标记为"需浏览器实机验证"的项涉及真实 ESP32/BLE 设备交互,无法在静态分析中完成。 代码已通过语法检查与 HTTP 可达性验证,业务逻辑与原文件逐行对齐(纯结构重构,无逻辑修改)。 建议用户启动 serve.bat 后在浏览器中实机验证上述功能项。