Add changelog for fmtTime/venv/batchinstall fixes

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Your Name
2026-05-27 00:59:48 +08:00
parent 869f64ac18
commit 8b82d6bab0
@@ -0,0 +1,47 @@
# 2026-05-27 fmtTime Invalid Date修复 + install.sh venv健壮性 + batch install错误上报
## 变更摘要
1. 修复6个页面的 fmtTime() 函数对带时区后缀(+00:00)的时间戳解析为 Invalid Date
2. install.sh 创建 venv 后检测 activate 文件,缺失时自动安装 python3-venv 重试
3. batch install API 异常时保留 server_name、检测 stdout 中 "Status: FAILED"、stderr 为空时返回提示信息
## 动机
1. API 返回的 last_heartbeat 格式为 `2026-05-26T16:22:14.444657+00:00`fmtTime() 无脑追加 `Z` 导致双重时区标记 `+00:00Z`JS Date 解析失败返回 Invalid Date
2. Debian 12 默认不带 python3-venv 包,`python3 -m venv` 创建目录但不生成 activate 脚本,source 报错且无明确提示
3. batch install API 返回 `success:false, stdout:"", error:""` 无具体错误信息,无法排查失败原因
## 涉及文件
### 前端(6个页面)
- `web/app/servers.html` — fmtTime: 先 new Date(t),失败再 new Date(t+'Z')
- `web/app/index.html` — 同上
- `web/app/credentials.html` — 同上
- `web/app/push.html` — 同上
- `web/app/retries.html` — 同上
- `web/app/schedules.html` — 同上
### Agent 安装脚本
- `web/agent/install.sh` — venv 创建后检测 activate 文件是否存在,不存在则 apt install python3-venv 后重试
### 后端
- `server/api/servers.py` — batch install _install_one(): server_name 提前赋值、检测 "Status: FAILED"、stderr 空时返回提示、超时改为180s
## 需要迁移/重启
- 是:需重启 Nexus 后端(`supervisorctl restart nexus`
- 否:无数据库迁移
## 验证方式
1. 浏览器打开 servers.html → 最后心跳列显示 "5月27日 00:52" 而非 "Invalid Date" ✅
2. 在缺少 python3-venv 的 Debian 12 服务器运行 install.sh → 自动安装 python3-venv 后继续 ✅
3. batch install 失败时返回具体错误信息 ✅
## 审计8步
- H1: install.sh apt-get 需 root — ✅ 正常(脚本以 root 运行)
- H2: install.sh 检测 activate 而非 -d 目录 — ✅ 修复旧 bug
- H3: servers.py shlex.quote 防注入 — ✅ 已有
- H4: servers.py "Status: FAILED" 字符串匹配 — ✅ 无注入风险
- H5: fmtTime 纯前端日期解析 — ✅ 无 XSS(用 esc() 函数)
- DoD: 无明文密码/命令注入/SQL注入/静默吞错/硬编码 ✅
## 进度条
☑实现 ☑WSL验证 ☑审计8步 ☑部署 ☑健康检查 ☑浏览器验证 ☐changelog(本文件)