1. 09 9月, 2026 6 次提交
    • 陈泽健's avatar
      feat(ui-exec-monitor): UI执行监控目标服务器Java服务日志采集与前端可视化(会话61) · d159860a
      陈泽健 提交于
      后端采集链路(TargetLogMonitor):
      - 新增 executors/target_log_monitor.py:SSH 单条复合命令扫描 8 个 Java 服务日志,
        tail 500 行 + 用例时间窗口 grep 夹逼,单次采集 0.2~0.5s,失败降级不阻塞执行
      - case_result 模型新增 server_log_errors JSON 字段(database.py 启动补列兼容)
      - execution_service 用例循环记录精确起止窗口,采集结果随回调落库 + WebSocket 广播
      - executions 路由新增 GET .../results/{case_id}/server-logs 独立拉取接口
      - config 新增 TARGET_LOG_MONITOR_ENABLED(默认开)/ TARGET_LOG_TAIL_LINES=500
      
      前端可视化(ServerLogDrawer):
      - 新增 ServerLogDrawer.vue 暗黑控制台风格日志抽屉(服务下拉徽标/级别过滤/搜索/复制)
      - Execution 展开行新增「服务端异常」列 + 「服务日志」按钮,StepDetailPanel 联动入口
      - executions.ts 新增 getServerLogs API 封装
      
      验证与部署:
      - 本地 8001 重启后 API 实测通过(结构/404 分支),pytest 471/471,前端 build 零报错
      - 5.60 已部署验收(后端 6 文件 MD5 核对 + dist 95 文件 + settings 实读)
      - 踩坑沉淀:config.py 并行部署覆盖回滚、.env 对 os.getenv 写法不生效、
        PLATFORM_BASE_URL 需部署后核对(HANDOFF 详录)
      Co-Authored-By: 's avatarClaude <noreply@anthropic.com>
      d159860a
    • 陈泽健's avatar
      fix(dingtalk): 修复 5.44/5.202 定时任务未发送钉钉报告(会话 63) · a4fe8140
      陈泽健 提交于
      根因:任务级开关 scheduled_tasks.dingtalk_notify=0(调度器步骤 5b 被跳过);
      5.44 另有部署脚本遗漏 app/models/scheduled_task.py,ORM 无字段导致开关不可见不可存。
      
      修复(deploy_fix_dingtalk_notify_44_202.py,已部署验证通过):
      - SFTP 补发 5.44 models/scheduled_task.py + routers/scheduled_tasks.py
      - 同步两台 services/dingtalk_notify_service.py(09-08 卡片版式)
      - SQL 开启两台目标任务 dingtalk_notify=1 + docker restart + 健康检查
      - 验证:GET /api/scheduled-tasks 返回 dingtalk_notify=true,测试消息发送成功
      
      文档:问题处理 + 执行计划归档至 Docs/PRD/问题处理/执行中心/,HANDOFF 会话 63 沉淀
      Co-Authored-By: 's avatarClaude <noreply@anthropic.com>
      a4fe8140
    • 陈泽健's avatar
    • 陈泽健's avatar
    • 陈泽健's avatar
      feat(ui-automation): 补充会务管理/预定2.0/巡检报表深度用例(第3轮12/12通过)+ 同步三台 · 4f075df4
      陈泽健 提交于
      - 新增 12 条深度 UI 用例(会务统筹×3 + 会务工单×3 + 预定数据×3 + 巡检报表×3),第 3 轮执行 exec_8b0332dc 12/12 全量通过
      - headless 微前端冷挂载修复:等待锚点改 :has-text 文本(inner route 挂载信号)+ 双等待点(文本 30s + canvas/.el-table 15-30s)
      - 会务统筹 3 条旧用例直达 URL 修正 ConferenceManage→ConferenceManagement(旧 URL 404)
      - 巡检报表走首页 inspect_report 入口点击,避开 monitor 直达 URL 竞态
      - 用例已同步 5.44/5.202/5.60 三台 MySQL(各 INSERTED 12)
      - backend/data/test_platform.db 解决 stash 冲突(取含 12 条新用例版本,与 HEAD 差异=+12 用例+3 条 URL 修复,无丢失)
      - HANDOFF_UI自动化.md 记录会话 62(会话 61 TargetLogMonitor 章节保留归档)
      Co-Authored-By: 's avatarClaude <noreply@anthropic.com>
      4f075df4
    • 陈泽健's avatar
  2. 08 9月, 2026 14 次提交
  3. 07 9月, 2026 15 次提交
  4. 02 9月, 2026 3 次提交
  5. 01 9月, 2026 2 次提交
    • 陈泽健's avatar
    • 陈泽健's avatar
      feat(performance): 混合场景 mix 每虚拟用户独立登录(CSV账号各自token + 登录重登替换) · 59948f7c
      陈泽健 提交于
      - 后端 HttpClient 新增 login_with_credentials(username,password) 与 _extract_token 静态方法
        - 复用 captcha uuid + SHA256 加密 + 签名;不写入 _tokens 缓存(token 由 executor 管理)
      - 执行引擎 per-VU 状态:_vu_tokens Dict[int,str] + _vu_tokens_lock + _vu_login_failed
        - _ensure_vu_token 异步幂等(run_in_executor 包裹同步登录),失败记入 _vu_login_failed
        - _resolve_csv_credentials 按 global_thread_idx 分配 CSV 行(idx % len 循环复用)
        - _mix_worker 启动各自登录;登录接口进随机池命中后替换该 VU 自己的 token
        - _send_request 新增 bearer_token 可选参 + 返回 Optional[str](登录 2xx 提取新 token)
        - _build_headers bearer_token 优先于 self._token;登录目标 bearer_token="" 签名且无 Authorization
        - _is_login_target 支持 url_override(识别随机池中的登录接口)
        - _run_mix 校验:CSV 未启用/缺 username/password 列/账号数 < 并发数 → 拒绝执行
        - execute() per_vu_login 时跳过共享预登录
      - Model/Schema 增加 per_vu_login 字段(默认 False)+ _ensure_columns 自动迁移
      - 前端 types perVuLogin + TaskList.vue「每虚拟用户独立登录」开关(仅 mix 显示)
      - 单测 TestPerVuLogin 13 条(各自token/重登替换/失败处理/CSV校验/共享回归)
      - 已部署 5.60(含 performance_tasks.per_vu_login 自动迁移);端到端由用户手动验证
      Co-Authored-By: 's avatarClaude <noreply@anthropic.com>
      59948f7c