feat(performance): 混合场景 mix 每虚拟用户独立登录(CSV账号各自token + 登录重登替换)
- 后端 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:
Claude <noreply@anthropic.com>
正在显示