提交 521ead34 authored 作者: 陈泽健's avatar 陈泽健

feat(perf-report): 报告导出排版质量优化 + 导出文件名使用任务名

- FR-1 图表尺寸控制:图表 img width=700 解决 Word 溢出,保留 pixelRatio:2 高清
- FR-2 指标卡片 Word 兼容:flexbox 改 table 网格布局(核心/执行机/目标机/MySQL)
- FR-3 表格列宽比例:5 张表全部 colgroup 控制列宽
- FR-4 专业排版:h1 21pt 主题色底边线 / h2 分隔线 / 表头隔行变色 / mso-* Word 兼容
- FR-5 分页控制:page-break-inside/after avoid + 快照表前强制分页
- FR-6 合并报告同步:ProjectReport 同步全部排版优化
- 导出文件名:单任务用任务名、合并报告用项目名(sanitizeFilename 清洗非法字符)
- 新增 PRD 文档:报告导出排版质量优化需求文档 + 计划执行文档
Co-Authored-By: 's avatarClaude <noreply@anthropic.com>
上级 8f417389
......@@ -3,7 +3,51 @@
> **生成时间**: 2026-08-25
> **当前分支**: `platform-auto-test`
> **最近提交**: `f4892d6c` docs(handoff): 精简 HANDOFF_UI自动化文档 + 更新会话37状态
> **状态**: 🟢 **会话39:薄弱模块 31 个用例全量修复验证 R7 通过率 100%。Phase 4 直达导航接入 `_do_navigate` 完整路径(含 reload 兜底),彻底解决 monitor/meetingV3 二次导航 NO-BODY 顽疾。**
> **状态**: 🟢 **会话40:新增用例数据全量同步三台测试管理平台(5.44/5.202/5.60)——本地 SQLite 315 条用例 UPSERT 至三端 MySQL(5.44/5.202 各 371→393 补 22 条、5.60 393→394 补 1 条),含会话37/38/39 新增用例 + 14 条断言对齐更新;沉淀 `sync_cases_to_servers.py`。**
---
## 📊 当前状态(会话 40,2026-08-25)
**新增用例数据全量同步三台测试管理平台(192.168.5.44 / 192.168.5.202 / 192.168.5.60)**:应需求将本地新增/更新的用例数据补充到三台服务器。三台应用均为 Docker MySQL 架构(`plat-auto-test-app` 容器内连 `mysql` 容器,库 `plat_auto_test`,表 `test_cases`),直接 SQL UPSERT 写入即可生效,无需重启容器。
### ✅ 三端用例库同步(会话 40,2026-08-25)
**差异对比**
| 数据源 | 用例数 |
|--------|--------|
| 本地 SQLite(`backend/data/test_platform.db`) | 315 条 |
| 5.44 / 5.202 MySQL(同步前) | 371 条(缺 22 条本地新增) |
| 5.60 MySQL(同步前) | 393 条(缺 1 条本地新增) |
**同步结果**(全量 UPSERT,单向,不删除远端独有用例):
| 服务器 | 同步前 | 同步后 | 新增 | 更新 |
|--------|--------|--------|------|------|
| **5.44** | 371 | **393** | 22 | 293 |
| **5.202** | 371 | **393** | 22 | 293 |
| **5.60** | 393 | **394** | 1 | 314 |
**覆盖内容**
- **会话 38 新增**`资产信息-新增资产闭环`(case_bc72e3de...,27 步闭环用例)→ 三台均补 ✅
- **会话 37 新增**:待办事项 3 个 + 会议室列表 7 个直达 URL 化 + 资产信息 3 个(5.44/5.202 各补 22 条)
- **会话 39 更新**:14 个用例断言对齐(通讯录/会务工单/消息通知/信息窗管理等,updated_at=2026-08-24 17:30)→ 三台均更新 ✅
**验证**
- 三台用例数:5.44=393、5.202=393、5.60=394 ✅
- 模块表三端无缺失(本地 28 个模块在三端全部存在;远端另有 sec_* 安全等本地没有的模块,未受影响)✅
- 抽查 9 个关键用例(新增闭环 + 会话37 新用例 + 会话39 断言对齐):三台 **9/9 全部命中**,updated_at 与本地一致 ✅
**改动清单**
| 文件 | 说明 |
|------|------|
| `backend/scripts/sync_cases_to_servers.py` | 新增同步脚本:读本地 SQLite 全量用例 UPSERT 到 5.44/5.202/5.60 三台 MySQL(docker exec 管道传 JSON,无重启) |
**遗留说明**:本次仅同步用例数据(`test_cases` 表)。会话 39 的 `playwright_executor.py` 两处代码修复(`_do_navigate` 接入 + reload 兜底)**尚未部署**三台服务器;14 个用例断言对齐已随用例同步到位(但执行器无 reload 兜底时,薄弱模块在远端仍可能复现 NO-BODY 问题,需尽快部署代码)。
---
......@@ -229,6 +273,7 @@ button:has-text('确定')
| 会话 | 日期 | 主题 | 结果 |
|------|------|------|------|
| 40 | 08-25 | **新增用例数据同步三台测试管理平台**:本地 315 条 UPSERT 至 5.44/5.202/5.60 MySQL(各补 22/22/1 条,含会话37/38/39 新增 + 14 条断言对齐更新);沉淀 `sync_cases_to_servers.py`(docker exec 管道传 JSON,无重启) | ✅ 5.44=393、5.202=393、5.60=394,抽查 9 用例三台全命中 |
| 39 | 08-25 | **薄弱模块 31 用例全量修复 R7 100%**`_navigate_to_target_page` 改走 `_do_navigate`(含 reload 兜底);`_ensure_micro_app_loaded` 阶段4 reload 修复;5 个探测脚本沉淀;14 个用例断言对齐 | ✅ 本地 31/31,799.7s |
| 38 | 08-24 | **资产信息-新增资产闭环用例**:Playwright 4 轮探测添加弹窗(表单/radio/cascader/select/MessageBox);生成 27 步闭环用例(新增→验证→删除);首次执行 27/27 100% 通过 | ✅ 本地 1/1,254.9s |
| 37 | 08-21 | **会议室列表 + 资产信息直达 URL 化改造 + 5.60 部署**:7+3 用例 navigate 直达;page_url_mapping 补全 asset_info;`element_count_min` micro-app 8s 轮询兜底 | ✅ 本地 10/10、已部署 5.60 |
......@@ -328,7 +373,7 @@ cd frontend && npm run build
### P2(低优先级)
- [ ] **排查搜索确定按钮 88s 卡点**(会话 38 新增资产闭环 Step 16/25 各 88s,功能通过但拉长总时长 254.9s)
- [ ] **薄弱模块 R7 修复部署 5.60**(会话 39 产出:`playwright_executor.py` 两处修复 + 14 个用例断言对齐,仅本地验证 31/31,尚未同步生产
- [ ] **薄弱模块 R7 修复部署三台服务器(5.44/5.202/5.60)**(会话 39 产出 `playwright_executor.py` 两处修复 + 14 个断言对齐用例。⚠️ 会话 40 已同步用例数据到位,但**执行器代码修复尚未部署**三台——远端薄弱模块仍可能复现 NO-BODY,需尽快部署;可复用 `deploy_to_544_5202.py`/`sync_to_560_full.py`
- [ ] **monitor 内层路由被忽略**(微应用固定渲染设备列表,忽略 URL 内层 Maintenancelist/Filemanage 路由;相关用例已按实际渲染断言,如需真正内页需进一步探测侧边栏交互方案)
- [ ] 完善二级菜单映射表(`menu_mapping.py`
- [ ] 智能定位 API 与用例执行路径统一(当前两者逻辑分离)
......@@ -344,4 +389,4 @@ cd frontend && npm run build
---
*本文档由 Claude Code 于 2026-08-25 更新(会话 39:薄弱模块 31 个用例全量修复验证 R7 通过率 100%——Phase 4 直达导航 `_navigate_to_target_page` 接入 `_do_navigate` 完整路径 + `_ensure_micro_app_loaded` 阶段4 reload 兜底,彻底解决 monitor/meetingV3 二次导航 NO-BODY;14 个用例断言对齐;5 个探测脚本沉淀 `backend/scripts/`)。*
\ No newline at end of file
*本文档由 Claude Code 于 2026-08-25 更新(会话 40:新增用例数据全量同步 5.44/5.202/5.60 三台测试管理平台——本地 SQLite 315 条用例通过 `sync_cases_to_servers.py` UPSERT 至三端 MySQL,承诺不删远端独有用例;会话39 14 条断言对齐随用例同步到位,但执行器代码修复尚未部署三台)。*
\ No newline at end of file
此差异已折叠。
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论