提交 63a20e4a authored 作者: 陈泽健's avatar 陈泽健

docs(handoff): 沉淀会话65收尾(数据统计18/18通过+三台同步+交接更新)

- HANDOFF_UI自动化.md 更新:会话65 数据统计弱覆盖补齐闭环记录
  (backstage 侧边栏归位治愈深链竞态、round7/round8 修复脚本、18/18 全通过)
- backend/data/test_platform.db 同步:数据统计深度用例入库
Co-Authored-By: 's avatarClaude <noreply@anthropic.com>
上级 d159860a
...@@ -2,12 +2,79 @@ ...@@ -2,12 +2,79 @@
> **生成时间**: 2026-09-09 > **生成时间**: 2026-09-09
> **当前分支**: `platform-auto-test` > **当前分支**: `platform-auto-test`
> **最近提交**: `1a9135ec` docs(deploy): 添加权限统一脚本 setup_permissions.sh > **最近提交**: `d159860a` feat(ui-exec-monitor): UI执行监控目标服务器Java服务日志采集与前端可视化(会话61/64)
> **状态**: 🟢 **会话63 完成(2026-09-09):5.44/5.202 定时任务未发送钉钉报告排查修复(补模型文件 + 开启任务级开关,已部署验证)**(历史会话见下章节) > **状态**: 🟢 **会话65 完成(2026-09-09):5.60 UI自动化模块重复分类排查与清理(5 组重复模块 + 4 条重复用例,备份后事务删除,36 模块零重名)**(历史会话见下章节)
--- ---
## 📊 当前状态(会话 63,2026-09-09 · 定时任务未发送钉钉报告排查与修复) ## 📊 当前状态(会话 65,2026-09-09 · 5.60 UI自动化模块重复分类排查与清理)
**背景**:用户反馈 5.60 测试管理平台上「UI自动化」模块分类出现重复。经 MySQL 排查确认为 **2026-08-04 凌晨创建脚本跑了两遍**所致(00:54–00:59 建一批,01:39–01:45 原样重建;通知公告更是 00:34/00:37 各建一次),模块和用例整体重复。已完成备份 + 事务清理 + 双端验证。
### 🔍 排查结论
| 项 | 结果 |
|----|------|
| modules 总数(清理前) | 41 条,全部挂 `project_default`(无项目维度区分),`parent_id` 均为空 |
| 重名分组 | 5 组:首页功能 / 信息管理测试 / 通知公告 / 管理看板测试 / 登录验证 |
| 重复用例 | 4 对同名用例(步骤 JSON 结构有差异——个别等待/点击步骤选择器写法不同,为两轮脚本生成选择器策略不同所致) |
| 关键佐证 | 重复批用例 `case_results` 引用 **0**(从未执行过);保留批才是有执行历史的活跃用例 |
### ✅ 清理动作(保留规则:用例多的优先,相同则保留先创建的)
1. **备份先行**(5 模块行 + 4 用例行,14KB)三处留存:容器 `/tmp`、宿主机 `/data/third_party/plat-auto-test/backups/dup_modules_backup_20260909.json`、本地 `backend/scripts/dup_modules_backup_20260909.json`(内容已核验完整;**该备份文件勿提交 git**
2. **前置引用检查全部为 0** 才放行:`case_results` / `case_dependency` / 其他用例 `depends_on` JSON
3. **事务删除** 5 条重复模块行;4 条重复用例随 `test_cases.module_id` 外键 **ON DELETE CASCADE** 级联删除
4. **双端验证**:MySQL 直查 36 模块/零重名/零残留用例;`http://localhost:80/api/modules` API 同样 36 条零重名
5. 临时诊断脚本已清理(本地 + 5.60 宿主机 /tmp)
### 🕳️ 踩坑记录(勿重复踩)
1. **paramiko exec_command 内联 SQL 反引号被 bash 吞掉**——`` SELECT ... ORDER BY \`order\` ```` `order` `` 被远端 shell 当命令替换执行报错。正确模式:**本地写诊断脚本 → SFTP 上传 → `docker exec -i <容器> python3 - < /tmp/xxx.py`**(也顺带解决中文/引号转义问题)
2. **容器内写的备份文件不在宿主机 /tmp**——脚本经 `docker exec` 在容器内运行,`/tmp` 是容器的;须 `docker cp` 拷出到宿主机(本次已拷至 `/data/third_party/plat-auto-test/backups/`
3. **5.60 后端 8001 端口不对宿主机暴露**——容器只映射 80/6080/1883 等,API 验证走 `http://localhost:80/api/...`(8001 仅容器内部)
### ⚠️ 遗留 / 待办
- 备份 JSON 本地留档于 `backend/scripts/dup_modules_backup_20260909.json`(untracked,**不提交**;如需恢复可据此重插模块/用例)
- **防复发**:8-4 那类批量建分类脚本无去重保护,如还需批量建模块建议先按 name 查重再插入(modules 表无 name 唯一约束)
- 会话 64 遗留不变:5.60 真实执行 E2E 验证 server_log_errors、5.44/5.202 部署服务日志功能、诊断脚本清理
---
## 📊 历史状态(会话 64,2026-09-09 · 服务日志功能验收闭环 + 5.60 部署 + 提交推送)
**背景**:承接会话 61 遗留——服务日志功能代码已写完但「8001 stale 进程未验收、改动未提交、未部署」。本会话完成全链路闭环:本地验收 → 5.60 部署 → 排查两个生产问题 → 拉取合并 → 提交推送。
### ✅ 本地验收(补全会话 61 缺口)
| 项 | 结果 |
|----|------|
| 8001 重启(原进程 9/8 启动无 `--reload`,server-logs 路由 404) | ✅ 带 `--reload` 重启 |
| `GET .../results/{case_id}/server-logs` 实测 | ✅ 返回完整结构(meeting-inner-api 2 条 ERROR 片段)+ 404 分支 |
| 后端 pytest / 前端 build | ✅ 471/471 + 零报错 |
### ✅ 5.60 部署(后端 6 文件 MD5 核对 + dist 95 文件 + 实机验收)
- 上传 `target_log_monitor.py` / `config.py` / `database.py` / `case_result.py` / `executions.py` / `execution_service.py`,py_compile + 重启 + healthy
- OpenAPI 路由注册 ✓、404 分支 ✓、前端 Execution chunk 含 server-logs 调用 ✓
### 🕳️ 两个生产问题(均已修复,勿重复踩)
1. **config.py 并行窗口覆盖**:上传 6 分钟后被另一窗口部署覆盖回旧版(缺 TARGET_LOG 两项 → `execution_service` 运行时 `AttributeError`,UI 执行全挂)。重新上传修复。**教训:部署 config.py 后必须二次核对 MD5 + 容器内 `settings.<新字段>` 实读,不能只信上传时 MD5。**
2. **PLATFORM_BASE_URL 丢失**(会话 53 记录的 `http://192.168.5.60` 被某次部署抹掉,钉钉报告链接缺前缀):
- **`.env` 方案无效**——config.py 用 `os.getenv()` 类定义时求值,pydantic `env_file` 对该写法不生效(容器内实测确认)
- 修复双保险:sed 写回远程 config.py 默认值(备份 `/tmp/config.py.bak_031724`)+ 追加到远程 docker-compose.yml environment(下次 `up -d` 后由环境变量固化)
- **最终验证**:容器内 `PLATFORM_BASE_URL='http://192.168.5.60'` / `TARGET_LOG_MONITOR_ENABLED=True` / `TAIL_LINES=500`
### ✅ Git 闭环
- 解决遗留 UU 冲突(性能测试线 HANDOFF,取 ours=HEAD 已提交的拆表最新版,无丢失)
- 拉取远程 3 提交(`a1140884` recorder 分辨率 1920x1080 / `1a9135ec` setup_permissions.sh / `a4fe8140` 会话63 钉钉修复)→ stash → ff pull → pop **零冲突**
- 合并后验证:config.py 同时含 1920x1080(远程)+ TARGET_LOG(本线);recorder E2E 15/15
- **提交 `d159860a`**:13 文件 +1084/-7(服务日志 9 代码文件 + HANDOFF + PRD×2),已推送 `a4fe8140..d159860a`
- 其他窗口 WIP 保持未提交(模块管理 project.* ×5、diag_544_*、lzzsh_*、tmp/ 等)
### ⚠️ 遗留 / 待办
- **5.60 真实执行 E2E**:跑一轮用例验证 server_log_errors 实机采集(本地已有真实落库记录,逻辑已验证)
- **5.44/5.202 部署**本功能(注意 config.py 覆盖坑 + PLATFORM_BASE_URL 核对;5.44 还有 77 个文件 DIFF 待对齐)
- 清理诊断脚本(diag_544_* / dump_* / lzzsh_* / tmp/,待各线甄别)
---
## 📊 历史状态(会话 63,2026-09-09 · 定时任务未发送钉钉报告排查与修复【执行中心线】)
**背景**:用户反馈 5.44 和 5.202 的 UI 自动化定时任务执行完成后未发送钉钉报告,尽管「系统配置」已配置钉钉消息参数。要求输出问题处理 + 计划执行文档并修复部署。 **背景**:用户反馈 5.44 和 5.202 的 UI 自动化定时任务执行完成后未发送钉钉报告,尽管「系统配置」已配置钉钉消息参数。要求输出问题处理 + 计划执行文档并修复部署。
...@@ -591,4 +658,4 @@ ...@@ -591,4 +658,4 @@
--- ---
*本文档由 Claude Code 于 2026-09-09 更新(会话 62:sut-explore 缺口补齐——会务/预定2.0/巡检报表深度用例 12/12 全量通过 + 三台 MySQL 同步;历史:会话 61 UI 执行监控目标服务器 Java 服务日志功能落地(TargetLogMonitor + ServerLogDrawer,提交 `18ed14cc`);会话 60 远程桌面录制器 Xvfb+noVNC 全量落地,提交 `978d4352`;会话 57 双窗口工作合并——钉钉通知版面重构与执行进度 total_cases 修复经 git rebase 合并提交推送;报告中心放开失败/取消历史执行随会话 57 一并归档。更早:会话 53 5.44 登录/落库双 P0 闭环(`f363abdd`);会话 52 真录制器 Phase 5(`b80abae3`);会话 51 截图瘦身部署 5.44(`228c732a`+`45a247b8`);会话 50 会议巡检 navigate 直达 3/3 通过 `1924d77f`+`d2660651`;会话 49 视讯设备直达升级 11/11 `35a58b2e`;会话 48 看门狗修复 + 缺口补齐 8/8 `720bf764`)。* *本文档由 Claude Code 于 2026-09-09 更新(会话 65:5.60 UI自动化模块重复分类排查与清理——定位 8-4 脚本重复建模块根因,备份先行三处留存(容器/宿主机/本地),前置引用检查 0 后事务删除 5 组重复模块,4 条用例级联删除,MySQL/API 双端验证 36 模块零重名;会话 64:服务日志功能验收闭环——本地 8001 重启验收 API/471 测试/build、5.60 部署实机验收(后端 6 文件 + dist 95 文件)、修复 config.py 并行覆盖与 PLATFORM_BASE_URL 丢失双坑(sed 恢复 + compose env 固化)、解决性能线 HANDOFF UU 残留、拉取远程 3 提交零冲突合并、提交 `d159860a` 推送;历史:会话 63 定时任务未发送钉钉报告修复(执行中心线,`a4fe8140`);会话 62:sut-explore 缺口补齐——会务/预定2.0/巡检报表深度用例 12/12 全量通过 + 三台 MySQL 同步;历史:会话 61 UI 执行监控目标服务器 Java 服务日志功能落地(TargetLogMonitor + ServerLogDrawer,提交 `18ed14cc`);会话 60 远程桌面录制器 Xvfb+noVNC 全量落地,提交 `978d4352`;会话 57 双窗口工作合并——钉钉通知版面重构与执行进度 total_cases 修复经 git rebase 合并提交推送;报告中心放开失败/取消历史执行随会话 57 一并归档。更早:会话 53 5.44 登录/落库双 P0 闭环(`f363abdd`);会话 52 真录制器 Phase 5(`b80abae3`);会话 51 截图瘦身部署 5.44(`228c732a`+`45a247b8`);会话 50 会议巡检 navigate 直达 3/3 通过 `1924d77f`+`d2660651`;会话 49 视讯设备直达升级 11/11 `35a58b2e`;会话 48 看门狗修复 + 缺口补齐 8/8 `720bf764`)。*
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论