补充日志滚动保留部署与浏览器验收记录
Some checks are pending
Security Checks / security (push) Waiting to run

This commit is contained in:
smail 2026-09-08 23:08:43 +08:00
parent b3935d108d
commit 3520d957c8

View File

@ -15,13 +15,13 @@
## 实施状态
- [✓] 复审通过:需求确认与修改前 Git 检查点,`5faadcd`、`b77b272` 已成功推送至 `smail/main`。
- [✓] 复审通过:需求确认与修改前 Git 检查点,`5faadcd`、`b77b272` 已成功推送至 `smail/main`;后续修正提交 `b4337dc`、`b3935d1` 也已推送。
- [x] 已完成,等待复审:三数据库兼容存储、30 天滚动清理及旧配置审计幂等迁移;SQLite 已真实执行,MySQL、PostgreSQL 等待专用连接验收。
- [x] 已完成,等待复审:操作及收发信记录接入;登录完成的身份与二次验证入口补充审计。
- [✓] 复审通过:运行日志日文件、七天压缩、边界日精确清理和压缩查询;损坏归档保留原文件;归档不阻塞当天已打开日志句柄追加。
- [✓] 复审通过:具体配置变更明细、敏感字段脱敏及审计导出回归。
- [x] 已完成,等待复审:日志管理页面,访问权限、筛选、短页回退、过期文件切换、请求竞态回归通过,尚待真实浏览器验收。
- [~] 进行中:完整构建、同步最新部署包至 `yunx-test`、重启及浏览器验收。
- [x] 已完成,等待复审:日志管理页面,访问权限、筛选、短页回退、过期文件切换、请求竞态回归通过;浏览器已验证分类切换、筛选、历史审计详情和当前运行日志,真实业务写入与压缩文件查看尚未完整端到端验收。
- [✓] 复审通过:完整构建并同步最新部署包至 `yunx-test`,后端重启成功,源码指纹及部署程序哈希校验通过;前端开发服务继续运行。
- [!] 暂缓或存在阻塞:MySQL、PostgreSQL 活库测试缺少本项目专用测试连接,不能用其他项目数据库替代。
## 当前验证记录
@ -29,11 +29,26 @@
- 全量回归:`test-log/run-2026-09-08T14-40-12-728Z-20120`,前端 144 项、部署 4 项及后端全包通过。
- 并发检测:`test-log/run-2026-09-08T14-44-59-839Z-25272`,运行日志与数据库日志包 `-race -count=1` 通过。
- 补充修正后的全量回归:`test-log/run-2026-09-08T14-51-24-127Z-17952`,前端 144 项、部署 4 项及后端全包通过,包含完整登录审计身份及致命错误落盘测试。
- 最新部署源码全量回归:`test-log/run-2026-09-08T15-03-33-242Z-25356`,前端 145 项、部署 4 项及后端全包通过,执行退出码为 0;汇总在 `test-log/log-final-deployed-regression-20260908.log`。
- 完整构建发现日志页错误使用 Axios 默认导出,已改为现有的命名导出 `http`,并新增导入契约回归。修正后的前端、三个插件、主程序及管理员工具均构建成功,记录在 `test-log/log-deploy-final-second-20260908.log`。
- 部署包源码提交为 `b3935d1`,运行版本为 `dev-2f06b03f2afd`,数据库结构版本为 17。2026-09-08 23:06 再次执行 `node deploy/build-state.mjs verify --deployed`,退出码为 0;后续仅更新本文档不改变源码指纹。
- MySQL、PostgreSQL 日志专项集成入口:`node test/run.mjs backend -v -run TestLogStoreServerDatabaseIntegration ./services/logstore`。需设置 `SMAIL_TEST_MYSQL_DSN`、`SMAIL_TEST_POSTGRES_DSN`,只创建连接私有临时日志表,不改动既有业务表;测试连接断线后禁止自动重连。当前变量未设置,相关活库测试跳过。
- MySQL、PostgreSQL 跳过记录:`test-log/run-2026-09-08T15-01-05-642Z-29732`。当前 SQLite 部署库只读核验记录在 `test-log/log-live-database-check-20260908.txt`,确认时间索引及分类时间索引存在;没有清空当前账号或邮件数据。
- 启动补清理,之后每小时执行,数据库每批最多删除 1000 条;查询立即应用最近 30×24 小时窗口。物理清理存在调度间隔,不声称每秒即时删除。
- 运行日志文件名采用 UTC 日期,每条记录含明确时区;后台显示本地时间。已压缩文件也按记录时间清理,压缩不重新计时。
- 模拟部署启动器的控制台诊断写入 `test-log/service-launch`,不在 `yunx-test/log` 重复生成散乱的启动文件;旧文件保留。
## 浏览器与运行验收
- MCP 使用现有 Smail 窗口访问 `https://xuans.com/`,前端监听 80/443,后端监听 5201。后端使用 `yunx-test/smail.exe --dev-disable-admin-reset`;生产本地管理员恢复通道的权限要求未放宽。
- 刷新后保留已有登录状态,设置导航末尾可进入日志页面;已依次切换配置审计、操作记录、收发信记录、运行日志。
- 已查看 22 条导入的历史配置审计及详情。旧记录缺失修改前后值时明确说明,不补造历史详情。
- 操作者编号筛选可返回空结果,清空后可恢复查询;当前运行日志文件与真实启动内容可读取。页面最终停留在运行日志分类。
- 本轮未执行新的业务修改或真实收发信,因此操作记录和收发信页面只验证空状态;新配置变更明细、完整登录审计链路及真实邮件日志仍需后续端到端验收。
- 压缩读取、七天压缩及三十天清理使用独立测试数据验证,未在真实部署目录伪造过期日志,也没有等待真实七天或三十天;压缩文件的浏览器读取仍未实测。
- MCP 快照写入 `test-log` 被工具的工作区限制拒绝,没有生成快照文件;页面树已通过工具响应现场检查,不将不存在的文件作为验收证据。
- 完整前端构建仍有既有编辑器分包大小告警:约 808.91 kB,gzip 后约 282.55 kB。此项不属于日志保留策略改造,未扩展修改。
## 验收边界
数据库连接沿用部署者当前配置,不能猜测或复用其他项目的密码。SQLite 实测通过不等于 MySQL、PostgreSQL 真实连接验收通过;方言检查与真实数据库测试必须分别报告。写入或清理失败必须可观察、可重试,不能无限排队或静默丢弃。