- 22 8月, 2026 1 次提交
-
-
由 陈泽健 提交于
- 新增两种压测场景:burst(瞬时并发/集合点同步)和 endurance(长稳/多接口/CSV 参数化) - 新增目标机资源监控(SSH 采集 CPU/内存/负载)+ Java 进程监控 - 新增事务处理时间(Transaction)多步骤串行 + 瀑布图/步骤明细表 - 新增批量执行监控页 BatchMonitor + 合并报告页 ProjectReport - 新增项目管理(项目卡片/批量执行/一键执行) - 报告页增强:场景标签(burst橙色/endurance红色)、apiSummary 多接口明细表 - 指标体系增强:P95/标准差/Apdex/延迟/连接时间/字节数/峰值TPS/错误分类 - 修复 3 个 P0:批量详情 API 500、残留 completed 状态、status_2xx 缺失 - 修复 body 字符串存储导致 4XX - 新增 curl 导入、自定义登录凭据、读取系统配置 URL - 压缩 HANDOFF 文档至 154 行 - 新增配套 PRD 需求文档与问题处理文档 Co-Authored-By:Claude <noreply@anthropic.com>
-
- 21 8月, 2026 5 次提交
-
-
由 陈泽健 提交于
- HANDOFF_UI自动化.md: 735→216行精简,删除已完成会话详情与P0/P1清单 - page_url_mapping.json: 补全 asset_info 完整配置 + 新增 meeting_room_list 页面注册 - playwright_executor.py: element_count_min 新增 micro-app 8s 轮询兜底 - 新增 sut-explore skill、generate_asset_info_cases/generate_meetingroom_cases/sync_to_560_full 脚本 - 数据库新增 10 个用例(7 会议室列表 + 3 资产信息) Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
- page_url_mapping.json 注册 meeting_template / participant_template / todo_list 3页 - 9个模板用例从click导航改为navigate直达URL模式 - 修复playwright_executor.py element_count_min total未初始化BUG - 修复contains断言timeout过长(120s→5s) - 3轮迭代本地执行9/9通过100% - 更新HANDOFF_UI自动化.md会话36记录 Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
- HANDOFF_设备模拟.md:新增会话 M(2026-08-21 部署 5 个后端文件到 5.60, 含并行化/token 回退修复/无纸化 token+消息拉取),全链路验证通过 (grep 校验 + 4 台批量启动 + 540 台全部停止),并同步会话 I/K 部署状态 - HANDOFF_性能测试.md:同步指标体系增强已部署 5.60 状态 - frontend/src/api/performance.ts:修复 listTasks/listProjects camelCase→snake_case 参数名转换(project_id/project_type 后端过滤生效) - Docs/PRD/性能测试:新增问题处理与执行计划文档(项目内任务过滤、 项目类型 Tab 过滤、批量执行跳转监控页 PRD) - backend/scripts/restart_and_verify.py:新增 5.60 容器重启+健康检查脚本 Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
- 新增会话35 当前状态概要(verify 字段统一、断言补全、前端验证编辑、二级菜单注册) - P1 待办标记完成(含子项详情) - 会话历史时间线新增会话35 条目 - 文档索引新增 P1 遗留待办 PRD 与执行计划 - 更新状态头与最近提交为 466b9f40 Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
- 智能定位同步设置 verify 顶层字段(dialog/element_visible/text_visible),打通执行器消费链 - 执行器 _do_assert 新增 body_not_contains 断言分支 - 执行器 _do_fill 增加 scroll_into_view_if_needed() 滚动兜底 - 前端 CaseStepEditor 独立 VERIFY_TYPE_OPTIONS(8 种 verify 类型) - 前端 IntentStepEditor 新增 verify 折叠编辑区(round-trip 保留) - 前端 stepParser 新增 verifyMethodToVerify() 兼容转换函数 - page_url_mapping.json 注册 19 个二级菜单(match_rules 识别) - 新增 PRD 需求文档与计划执行文档 - HANDOFF 更新:标记 3 个 P0 映射问题已修复 Co-Authored-By:Claude <noreply@anthropic.com>
-
- 20 8月, 2026 15 次提交
-
-
由 陈泽健 提交于
- 性能测试 HANDOFF:新增批量执行合并报告章节(聚合算法/后端服务/前端页面/部署验证) - 设备模拟 HANDOFF:记录 540 设备批量启动验证 + per-thread engine 修复 - 更新文档时间戳与最近提交 hash Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
- 新增 ProjectReport.vue 合并报告页面(聚合指标卡片 4×16 + 分位数表 + 状态码分布 + 各任务明细表) - 注册合并报告路由 /performance/project-report - ProjectDetail.vue 批量执行完成后显示查看合并报告按钮 + 历史报告入口 Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
- getProjectReport / getBatchReport / getProjectReports 三个 API 函数 - 对应后端 /projects/{id}/report /batch-reports/{id} /projects/{id}/reports 路由 Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
- BatchRunResponse 增加 reportId?: string | null - 新增 TaskSummaryItem / ProjectReportSummary / ProjectReportResponse / ProjectReportListResponse 接口对齐后端 schema Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
- PerformanceBatchExecution / PerformanceProjectReport 模型实现(表已建立) - _aggregate_task_results 聚合算法: 求和/重算错误率与TPS/加权平均响应时间/ 取极值/加权近似分位数(p50/p90/p95/p99)/聚合标准差重算, 排除失败任务 - 批量执行完成后自动生成合并报告并持久化, 返回 report_id - GET /api/performance/reports 按 project_id/batch_id 查询, ?latest=1 取最新 - ProjectReportResponse/ProjectReportListResponse/TaskSummaryItem schema, BatchRunResponse 增加 report_id 字段 Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
- 新增 /ws/batch-progress WebSocket 固定分组(perf_batch)实时推送批量进度, 须注册在 /ws/{task_id} 之前, 字段统一 snake_case(current_index/total_count/ current_task_name/success_count/fail_count), 支持 ping/pong 保活 - frontend ProjectDetail.vue 批量进度字段 camelCase -> snake_case 对齐 - PerformanceTask 新增 16 项增强指标(p95/std_dev/latency/connect_time/peak_tps/ apdex/错误分类计数) - 新增 PerformanceBatchExecution / PerformanceProjectReport 模型 + 合并报告 PRD 与执行计划文档 Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
根因: 全局 async engine 的 AsyncAdaptedQueuePool 内部 asyncio.Queue 在启动时 绑定主事件循环, worker 线程新循环 await 该池报 " Queue is bound to a different
-
由 陈泽健 提交于
- HANDOFF_性能测试.md 更新会话记录(项目管理与批量执行已完成) - 新增 _PRD_性能测试项目管理与批量执行_UI预览.html Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
新增会话 K 记录:batch_start_simulators 改为 ThreadPoolExecutor 并行启动, 540 台设备从 27 分钟缩短到 ~3 秒。同步更新文件头部的最近提交和未提交信息。 Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
设备模拟模块: - batch_start_simulators 改为 ThreadPoolExecutor 并行启动,540 台设备从 27 分钟缩短到 ~3 秒 - 每个线程独立 asyncio 事件循环 + 独立 DB 会话,避免同步 HTTP 阻塞和线程安全问题 - asyncio.Semaphore(50) 控制并发,防止 MQTT Broker / Token API 过载 - mqtt_manager on_disconnect 移除阻塞 sleep() 和手动 reconnect() 性能测试模块: - 新增性能测试项目管理与批量执行功能 - 前端 4 个页面(Projects / ProjectDetail / TaskList / App.vue) - 后端路由、服务、模型、Schema 适配 - 2 份 PRD 需求文档 + 执行计划文档 Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
当环境配置未设置 token_api_host 时,不再回退到 MQTT Broker 地址, 避免批量启动 500+ 设备时全部串行失败挂起。 Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
预设配置新增被测系统登录凭据可配置: - 模型/Schema 新增 credential_name / login_username / login_password 字段 - 新建任务选择预设时自动填充登录凭据,任务显式传入优先 - 预设摘要展示凭据名称,菜单文案"接口预设"→"预设配置" 增强指标体系: - 执行器采集 P95/标准差/Apdex/首字节延迟/TCP连接时间/字节数/峰值TPS/错误分类 - 模型/Schema/DB迁移补齐 performance_tasks 与 performance_snapshots 新列 - 监控面板与报告页展示新增指标 - 新增 test_performance_executor.py 单测 Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
- DoorTokenClient 参数化支持无纸化 API 路径和 regUdid 格式 - PaperlessSimulator.start() 四步流程: token→回填→MQTT→消息拉取 - 新增 get_message_by_app_token() 消息查询接口(HTTP 200 即成功) - 本地真实调用验证通过(token + 消息接口均 HTTP 200) - 更新 PRD/执行计划/HANDOFF 文档 Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
- 新增问题分析文档:部署遗漏 base_simulator.py 导致门口屏启动失败 - 新增执行计划文档:修复 BaseSimulator 参数不匹配的三阶段计划 - 更新 HANDOFF 设备模拟,记录会话 H 修复与验证结果 Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
- 新增 5.41 服务器配置信息(root/Ubains@123·端口8081·deploy.41.sh) - 新增会话32记录:5.41部署最新版前后端包,容器healthy、API端点验证通过 - 新增踩坑#11:tar打包前端dist需用arcname='dist'防止目录嵌套 Co-Authored-By:Claude <noreply@anthropic.com>
-
- 19 8月, 2026 19 次提交
-
-
由 陈泽健 提交于
5.44 前端「定时任务」页点击执行后,执行中心始终不生成新执行记录。 根因:自动调度触发后 task_id 卡住 _running_tasks,所有手动点击被静默吞掉 (return None),返回 200 但无新 execution。取消执行也不中断 Playwright 线程, run_execution 阻塞在 worker_thread.join() 上,全局锁数小时不释放。 1. **scheduler_service.py** — run_task_once(task_id, manual=False) 新增 manual 参数,手动触发绕过任务级 _running_tasks 守卫(仍受全局锁约束) 2. **scheduled_tasks.py** — POST /{task_id}/run 改为同步预检: 全局锁占用 → 返回 status:skipped + running_execution_id; 空闲 → manual=True 触发,返回 status:triggered 3. **execution_service.py** — 取消信号机制: request_cancel / is_cancel_requested / clear_cancel_requested 线程安全函数; cancel_execution 置 cancelled 后调用 request_cancel; run_all_cases_sync 用例循环开头检查并中断剩余用例; 实时进度回调 _persist_case_result 按用例 commit 4. **playwright_executor.py** — 步骤边界检查取消请求: execute_step 重试循环开头查 is_cancel_requested → 置 _cancel_requested → break 退出重试;最终状态设为 skipped 5.44+5.202 已部署(deploy_scheduled_fix.py),容器 healthy Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
- 后端模型 performance_tasks 新增 unique_fields JSON 字段,支持 suffix/template 两种唯一化策略 - 新增 UniqueFieldRule Schema,任务创建/更新/响应均包含 unique_fields - TemplateResolver 新增 apply_unique_fields() 及 JSON Path 路径解析/赋值工具函数 - PerformanceExecutor 在发送请求前按配置对 body 字段自动生成唯一值 - 前端 TaskList.vue 新增可折叠面板,支持添加/编辑/删除唯一性字段规则 - 新增测试 test_unique_fields.py 覆盖路径解析、赋值、唯一值生成场景 - 新增 PRD 需求文档与执行计划文档 Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
- door_token_client: 新增 EX_GLOBAL_CONFIG_API_PATH + get_ex_global_config()(GET, query companyNumber) - door_simulator: 定时循环扩充为 3 个接口(消息列表/人脸页面/全局配置) - 全局配置接口实测验证通过(HTTP 200 + success=true) - 公司编号来源:token 响应 token.companyNumber → topic_params.company_id - 新增 PRD + 执行计划文档 - 更新 HANDOFF 设备模拟会话 G 记录 Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
- 实测发现 getTodayMeetingFacePage/encrypt 接口 body 必须含 companyNumber, 仅传 conferenceId 返回 A0002 缺少参数,补齐后返回 200 OPERATION_SUCCESSFUL - door_token_client: get_today_meeting_face_page 新增 company_number 参数并加入请求体与动态签名 - door_simulator: 调用时从 topic_params.company_id 取 company_number - performance: description 字段改为 Optional,None 时置空串,修复 curl 导入保存 422 - PRD/执行计划:更新实测参数结论与任务完成状态 - HANDOFF:更新提交状态 Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
修复无纸化批量启动导致门口屏设备 UI 显示停止的三重问题: - MQTT connect() 复用存活连接,不断开重建(核心修复) - 启动时重置 DB 中残留的 running 状态为 stopped - 减少 start_simulator 锁粒度,IO 移出锁范围 连带修复: - database.py 补列列表追加 default_topic_params - paperless/central/client 模拟器 __init__ 统一 token_api_host 参数 新增: - 门口屏消息列表定时拉取(getMsgPageList/encrypt + AES 加密) - 门口屏人脸页面定时拉取 PRD 文档与执行计划 - deploy.41 部署脚本与 docker-compose Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
- schema: qps_target/ramp_up/step_concurrency/step_duration 改为 Optional(default=None),Pydantic v2 拒绝 null 时不再 422 - service: create_task() 补齐 Optional 压测参数默认值(100/10/[]/60) - frontend: 新增 extractApiError() 渲染 Pydantic 错误数组为可读 `字段: msg` 文本 - frontend: 修复 stepConcurrency 数组双重包裹(编辑回填时 Array.isArray 判断) - frontend: handleCurlParse 错误处理改用 extractApiError() - docs: HANDOFF_性能测试.md 记录本次会话进度 Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
新增 DoorTokenClient(固定 X-SIGN + regUdid 派生 + 响应解析), TokenPool 登记池保证批量场景 appToken 不重复(来自导入授权码,不可自动生成); DoorSimulator.start() 接入 token 获取并回填 topic_params(company_id/room_id/conference); base_simulator / create_simulator / start_simulator 透传 token_api_host(来源 EnvConfig) Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
- 修复 curl 导入 422:CurlParseRequest 补全 model_config alias 映射(前端 camelCase curlCommand → 后端 curl_command) - 兼容 Windows CMD curl 语法:新增 _preprocess_cmd_style() 处理 ^ 续行符与 ^" 转义引号 - 新增 -b/--cookie 参数支持,Cookie 保留到 headers 与 cookie 字段 - 新增 4 个单元测试覆盖新修复点(15 passed) - 新增问题处理文档与执行计划文档 Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
1. 从 curl 自动生成压测任务: - 新增 backend/app/utils/curl_parser.py 纯函数解析器(仅 shlex 标准库) - 新增 POST /api/performance/parse-curl 路由(ValueError → 400) - 支持 -X/-H/-d* 解析、Authorization 剥离置登录开关、签名头剥离、Cookie 保留 - 新增 11 个单元测试 test_curl_parser.py - 前端新建弹窗增加「从 curl 导入」交互,自动回填表单 2. 任务级自定义登录凭据: - PerformanceTask 新增 login_username / login_password 字段(含库迁移) - _build_client_config() 优先使用自定义凭据,留空回退默认 - 前端新建/编辑任务弹窗新增用户名/密码输入框 3. 性能测试读取系统配置被测系统 URL: - 删除 _DEFAULT_BASE_URL 模块常量,运行时读取 settings.TARGET_URL - 系统配置新增登录/验证码接口路径(login_path / captcha_path)字段 - _build_client_config() 不再解析任务 target_url,切换环境无需改任务 Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
- 无纸化导入模板增加授权码列(ANP-NRY-0022 格式) - 环境配置弹窗精简为 7 个核心字段(移除主题前缀/默认参数/授权码配置) - 批量删除重写为批量 SQL 操作,100 条设备秒级完成 Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
新增安全测试定时任务 API、调度分流和前端管理页面。\n复用 scheduled_tasks 表并支持 interval/daily/weekly 周期、测试配置关联和自动报告。\n补充需求文档、计划执行文档及部署验证记录。\n\nCo-Authored-By: Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
- run_execution 置 running 后立即 commit,释放 InnoDB 行锁, 取消接口不再被 Lock wait timeout 1205 阻塞(实机 91ms 返回) - 结果写入循环增加取消检测:执行期间被取消则用例结果保持 skipped - 收尾状态判定改列查询 + FOR UPDATE:修复 SQLAlchemy 身份映射过期实例 (expire_on_commit=False 不刷新)将已取消执行覆盖为 completed 的问题 - 新增 _validate_sut_url:拒绝非法 IP 段/端口/字符(如 192.168.5.4202), 前端 Settings.vue 同步表单校验 - 新增回归测试 test_execution_cancel.py(4 条)+ test_sut_url_validation.py(8 条) - HANDOFF_UI自动化.md 记录会话29进度 Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
方案A·执行期地址重写:执行器新增 _rebase_sut_url + KNOWN_SUT_HOSTS, 导航/接口步骤若指向已知被测系统主机(默认 https://192.168.5.44)则自动 替换为当前配置的 SUT 地址(保留 scheme/路径/查询/hash),130 条存量 硬编码用例自动跟随、不动任何数据;新增 TestRebaseSutUrl 3 条回归测试; 已部署 5.60 生产(容器内真实验证通过) Co-Authored-By:
Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
- 定时任务模块:30s 轮询调度引擎 + 到期异步触发 + 执行冲突跳过 + 任务防重入 - 定时任务 CRUD/启停/立即执行/运行记录,复用执行引擎生成 trigger_type=scheduled 执行 - 报告按模块分组渲染 + 头部展示被测系统 URL;报告列表新增触发方式列 - 系统配置新增被测系统 URL 读写(保存持久化 + 重启从数据库加载,修复重启回退) - 前端新增定时任务页 + 系统配置被测系统卡片 - 后端 179 测试全过、前端 build 通过、真实端到端验证通过 - PRD 与计划执行文档:Docs/PRD/需求文档/定时任务/ Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
424 个未跟踪文件(多会话积累的 explore/test/verify/deploy/debug/probe 一次性脚本 + 截图/文本 dump)→ 剩余 26 个(Docs、其他功能 HANDOFF、 在开发的文档管理模块)。 - 根目录 + backend/ 根目录 + backend/scripts/ 按前缀遮蔽一次性脚本 - 遮蔽 *.txt/*.json/*.png/*.jpg/*.html 调试 dump 与 exec_shots/ 等目录 - 仅影响未跟踪文件;已跟踪文件(main.py/config.py/package.json/ app/data/*.json 等)不受 ignore 影响;如需纳入版本控制用 git add -f Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
- smart_locate_service:_is_login_step 跳过 auto_login 已覆盖的登录步骤(否则登录表单已消失致整条定位链中断);已有选择器执行失败时清空重定位一次(旧坏选择器可升级为 semantic);navigate 步骤优先处理(URL 不当 CSS 解析);STEP_FAIL_DUMP 失败现场诊断 - keyword_matcher:data-key 属性选择器纳入可点击候选 + 容器限定属性选择器全局优先(修复 div:visible:has-text 命中外层容器假成功) - tests:新增 TestIsLoginStep / TestTryAttachSemantic,47/47 通过 Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
- 会话25「暂缓修复」已闭环:最终方案=保留页面直达 + 执行器策略5增强 + 用例 step 12 保持立即开始(否决走点击链方案并记录原因) - 补全根因:会议室表格懒加载 12s-130s+ / 表格仅列空闲房间 / step 12 零匹配选择器 - 验收:本地 + 5.60 生产各连跑 3 次 18/18 全绿、零残留(提交 c0dedbdf) - 更新会话历史时间线 + P0 待办状态 + 会议生命周期结论 Co-Authored-By:
Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
P0 修复「新建会议用例执行失败」(case_13650e0406e64779b66e6fa5de35c24a): 根因(两个独立缺陷,均 MCP/Playwright 实测确认): 1. step 11 会议室勾选失败:会议室表格懒加载慢(12s-130s+)+ 表格仅列出 空闲会议室(被占用即从列表消失)+ checkbox 位于 is-hidden 隐藏列 2. step 17 结束会议失败:step 12 切「预定会议」→ 会议「未开始」→ 详情页 无「结束会议」按钮 修复(保留页面直达,否决走点击链方案): - 执行器策略5增强(playwright_executor.py): * 行等待改轮询(query_selector_all,最长 150s,覆盖表格懒加载波动) * checkbox 循环 force 勾选 + _checkbox_is_checked 校验(防假通过)+ JS 兜底 - 用例 step 12「预定会议」→「保持立即开始」+ 选择器修正为 .time_btn > div:first-child(原 .time_btn > div:first-child .btns 零匹配) 保持立即开始 → 会议进行中 → 详情页有结束会议 验收:本地连跑 3 次 18/18 全绿零残留;5.60 生产部署后连跑 3 次全绿, MySQL case_results 三条 passed,容器内残留检查 0。 新增脚本:fix_step12.py(更新用例 step12)/ run_case_verify.py(触发+拉结果)/ check_residue.py(残留检查)/ deploy_fix_560.py(一键部署验收) Co-Authored-By:Claude <noreply@anthropic.com>
-
由 陈泽健 提交于
- 后端 smart_locate_service:语义解析优先路径 + 反向生成 semantic + 模式步骤锚点值作 text + 反向生成经执行期 resolve_step 校验(row_checkbox→row 降级)+ 动态值 CTX 化 + 全候选点击链 - routers/smart_locate:SmartLocateResult 增加 semantic/verify - keyword_matcher:find_element_by_semantic 兜底 return None, [] - page_url_mapping:注册会议列表 scope - 前端:batchLocate 回填 semantic/verify - 单测 37 用例 + E2E 连跑两次 7/7 全绿 + PRD/执行计划文档 Co-Authored-By:Claude <noreply@anthropic.com>
-