refactor: 按角色分 web/ diag/ launch/ 三层, 根目录只留主程序

18 个文件平铺根目录太乱, 按角色归拢:
  web/     ecat.html/css + motor.html/js —— 前端资源
  diag/    ecat_scan / ecat_sniff / ecat_esc_regs —— 独立诊断脚本, 互不依赖
  launch/  5 个 .bat/.vbs 双击入口
根目录只留 ecat_server / ecat_tool / ecat_flash_eeprom / test_motor_backend:
这几个互相 import(tool→flash_eeprom, test→server), 挪进子目录就得改 import
或加包, 收益不抵成本。

配套改动:
  _STATIC_MAP 的值加 web/ 前缀 —— URL 路径刻意保持不变(/、/ecat.css、
  /motor.html), 页面内相对引用、书签、外部链接一律不用改。
  launch/ 里 %~dp0 现在指向 launch\, 五个启动器统一改为先取上一层作 ROOT
  (bat 用 %~dp0.., vbs 用两次 GetParentFolderName), run_scan 顺带指向
  diag\ecat_scan.py。

验证: 7 个 py 全编译通过; test_motor_backend 8 项全通过; 服务实起后 6 条
静态路由全 200 且 MIME 正确(js 是 application/javascript)、404 兜底正常;
Edge headless 渲染主页与 motor 页, CSS 294 规则加载、9 个节点样式生效、
零加载失败零 JS 异常; bat/vbs 的 ROOT 解析实测指到项目根, 五个目标文件
全部命中; ecat_tool adapters 与 diag/ecat_scan.py 实跑正常。
This commit is contained in:
cbb
2026-09-03 22:08:38 +08:00
parent 47ea85fb23
commit beb33ffe50
15 changed files with 62 additions and 31 deletions
+8 -6
View File
@@ -1552,15 +1552,17 @@ class Handler(BaseHTTPRequestHandler):
# - .js 用 text/html 会被浏览器的严格 MIME 检查拒掉(module script 与 Worker
# 都会直接报错不执行),这是加新页面最容易踩的坑;
# - 只有 HTML 才注入 _RELOAD_SNIPPET(注入到 js/css 里会破坏文件)。
# URL 路径保持不变(/、/ecat.css、/motor.html…),只是磁盘上挪进了 web/,
# 所以页面内的相对引用、书签、外部链接都不用改。
_STATIC_MAP = {
"/": "ecat.html",
"/ecat.html": "ecat.html",
"/index.html": "ecat.html",
"/ecat.css": "ecat.css",
"/": "web/ecat.html",
"/ecat.html": "web/ecat.html",
"/index.html": "web/ecat.html",
"/ecat.css": "web/ecat.css",
# 电机控制台(EtherCAT 版)。样式直接复用 ecat.css —— 它本身就是 ESP32
# motor.css 的副本(md5 一致),再拷一份 motor.css 只会多出一处会漂移的副本。
"/motor.html": "motor.html",
"/motor.js": "motor.js",
"/motor.html": "web/motor.html",
"/motor.js": "web/motor.js",
}
_CTYPE_BY_EXT = {
".html": "text/html; charset=utf-8",