保留日志横幅中的结构化证据并记录浏览器验收
Some checks are pending
Security Checks / security (push) Waiting to run

This commit is contained in:
smail 2026-09-09 01:20:23 +08:00
parent bb4ac4d5f5
commit c4e9a2fa61
3 changed files with 10 additions and 1 deletions

View File

@ -30,6 +30,10 @@ func legacyStartupNoise(source, message string) bool {
return false
}
message = strings.TrimSpace(message)
// 新格式器可能在横幅文案后附带结构化字段;未知附加信息不得按旧横幅丢弃。
if strings.ContainsAny(message, "{}") {
return false
}
if !strings.HasPrefix(message, "***\t") && !strings.HasPrefix(message, "*** ") {
return false
}

View File

@ -8,9 +8,13 @@
- [✓] 运行日志跨日和压缩文件按真实时间倒序查询;相同时间按文件与行位置稳定排序,过滤在分页前完成。只保存有上限的行位置索引和最多两兆本页内容,不加载全部历史原文;等待归档和扫描均支持取消。
- [✓] 修复 Windows 目录枚举返回正在写入文件旧长度的问题,改为文件句柄取长度;读取前在短锁内冻结长度,避免两次扫描读到新增的半条记录。
- [✓] 文本格式器保留结构化错误和业务字段,不再只留下消息标题;无法序列化字段只保留类型提示,不导致整条有效记录丢失。
- [x] 前端统一时间筛选、十条分页,保留详情、短页回退和请求竞态保护;查询及分类切换才采纳新筛选,翻页固定上一次查询时段。
- [✓] 前端统一时间筛选、十条分页,保留详情、短页回退和请求竞态保护;查询及分类切换才采纳新筛选,翻页固定上一次查询时段。
- [✓] 全量回归 `test-log/run-2026-09-08T17-03-28-009Z-39800`:前端 151 项、部署 4 项及后端全包通过。并发检测 `test-log/run-2026-09-08T17-05-13-325Z-35604`:运行日志、数据库日志、程序启动和配置包通过。
- [~] 完整编译并部署 `yunx-test`、浏览器 MCP 真实验收。
- [✓] 首次实现 `bb4ac4d` 已推送并部署,版本 `dev-7e835b59cdba`,后端进程 `26532`;浏览器刷新后保持登录。随后复审补充保护:附带结构化字段的旧横幅文案仍保留,不因标题相似而隐藏错误证据。
- [✓] MCP 真实接口检查:配置审计 12 条(10+2)、操作记录 4 条、收发信记录 1 条、运行日志 90 条(九页十条),均倒序且位于固定二十四小时时段内。运行日志纯分隔线与独立构建信息为零,三条历史启动事件及六条警告保留。
- [✓] MCP 页面检查:四类切换正常无错误;运行日志下一页显示 11–20 条,与首屏不重叠,上一页准确恢复;实际填写本地 00:30–00:50 后请求携带对应 UTC 时段。警告详情保留完整来源、消息和原文,最近二十四小时按钮恢复默认范围;1707×876 桌面截图无横向溢出,分页在视口内,表格内部允许滚动。
- [!] 压缩归档、空记录不落库/不创建日志文件、损坏文件保留、并发取消通过独立测试验证;没有在部署库伪造数据或为了验收清空现有账号、邮件和日志。已有编译大分包告警不属于本轮日志需求。
- [!] 三十天滚动留存、七天压缩不变;三库保持通用设计,MySQL 和 PostgreSQL 实库验收仍需专用测试连接。
## 2026-09-09 精简启动日志

View File

@ -49,6 +49,7 @@ func TestRuntimeLogStartupPresentation(t *testing.T) {
header + "[" + source + ":39]***\t未知启动消息",
header + "[other/app.go:39]***\tBuild Date: 保留业务消息",
header + "[" + source + ":39]Build Date: 不属于横幅",
header + "[" + source + ":39]***\tBuild Date: old {\"error\":\"必须保留\"}",
strings.Replace(header, "[info]", "[warning]", 1) + "[" + source + ":39]***\tBuild Date: 保留警告",
strings.Replace(header, "[info]", "[error]", 1) + "[" + source + ":39]********",
"[2026-09-08T14:55:23Z] 未知格式保留",