|
1 | 1 | # TestPilot AI 开发备忘录 |
2 | 2 |
|
3 | | -> 最后更新:2026-03-25(✅ v14.0-G9 完成 + v14.1 蓝本规则架构重构) |
| 3 | +> 最后更新:2026-03-26(✅ v14.2 设置面板重构 + 登录持久化修复) |
4 | 4 | > 项目结构详见 README.md,此处不重复。 |
5 | 5 |
|
6 | 6 | --- |
7 | 7 |
|
| 8 | +## ✅ v14.2 设置面板重构 + 登录体验优化(2026-03-26) |
| 9 | + |
| 10 | +### 核心变更 |
| 11 | + |
| 12 | +#### 1. 登录持久化(离线优先策略) |
| 13 | +- **问题**:每次 VS Code 重载都要重新登录 |
| 14 | +- **根因**:`_handleCheckAuth` 每次重载都调用 `cloudGetMe` 网络验证,失败就清除 token 退出 |
| 15 | +- **修复**(`extension/src/sidebarProvider.ts` - `_handleCheckAuth`): |
| 16 | + - secrets 里有 token + username → **立即**显示已登录(不等网络) |
| 17 | + - 后台静默调用 `cloudGetMe` 刷新用户信息 |
| 18 | + - 网络失败时尝试 refresh token,仍失败则**静默忽略**(保持已登录状态) |
| 19 | + - **只有主动点"注销"才退出**,任何网络异常都不强制退出 |
| 20 | +- RefreshToken 延长至 **30天**(原7天) |
| 21 | + |
| 22 | +#### 2. 注销按钮样式 |
| 23 | +- 从小型行内按钮改为**全宽按钮**(同登录按钮宽度),高度 28px |
| 24 | +- 样式:透明背景 + 灰框,不显眼但易点击 |
| 25 | +- 新增 `.sdrop-logout-btn` CSS 类 |
| 26 | + |
| 27 | +#### 3. 设置面板全面重构 |
| 28 | +新增三个功能项,布局结构: |
| 29 | +``` |
| 30 | +个性化设置 |
| 31 | +───────────── |
| 32 | +🌓 界面主题 [切换] |
| 33 | + ☀️ 浅色模式 |
| 34 | +───────────── |
| 35 | +🌐 界面语言 即将推出 |
| 36 | +🔤 字体大小 即将推出 |
| 37 | +💰 积分情况 99分 ← 新增,点击展开详情面板 |
| 38 | + ├ 剩余积分: 99 分 |
| 39 | + ├ 当前套餐: 免费版 |
| 40 | + └ 充值和升级套餐即将推出 |
| 41 | +⏱ 步骤间隔 [500] ms ← 新增,默认500ms,全链路传给引擎 |
| 42 | +🔔 完成通知 [切换] ← 新增,测试完弹VS Code右下角通知 |
| 43 | +───────────── |
| 44 | +👤 zcj220 ← 已登录时点击无反应(不弹登录面板) |
| 45 | +[ 注销 ] |
| 46 | +``` |
| 47 | + |
| 48 | +#### 4. 步骤间隔 — 全链路打通 |
| 49 | +- **前端**:默认 500ms(原0),localStorage 存储,每次运行测试时读取 |
| 50 | +- **传参链路**:`blueprintTest postMessage` → `_handleBlueprintTest` → `startBlueprintTest(step_interval_ms)` → HTTP API → `BlueprintRunner(step_interval_ms)` → `asyncio.sleep(step_interval_ms/1000)` |
| 51 | +- **叠加关系**:蓝本中每步的 `wait_after_ms` 执行完后,**额外**再等 `step_interval_ms` |
| 52 | +- **改动文件**: |
| 53 | + - `src/testing/blueprint_runner.py`:`__init__` 加 `step_interval_ms=0`,每步后加 sleep |
| 54 | + - `src/api/models.py`:`RunBlueprintRequest` 加 `step_interval_ms: int = 0` |
| 55 | + - `src/api/routes.py`:创建 `BlueprintRunner` 时传入该参数 |
| 56 | + - `extension/src/engineClient.ts`:`startBlueprintTest` 接口加 `step_interval_ms?: number` |
| 57 | + - `extension/src/sidebarProvider.ts`:读取、保存、发送该参数 |
| 58 | + |
| 59 | +#### 5. 完成通知 |
| 60 | +- 测试完成后,若用户开启「完成通知」,调用 `vscode.window.showInformationMessage()` |
| 61 | +- 显示内容:`✅ TestPilot: 「蓝本名」完成,通过率 83%` |
| 62 | + |
| 63 | +#### 6. 积分情况独立展开行 |
| 64 | +- 登录后在设置面板显示「💰 积分情况 99分」行 |
| 65 | +- 点击展开子面板:剩余积分 + 当前套餐 + 充值提示 |
| 66 | +- 积分为 -1(离线占位)时:右侧不显示数字,展开后 balance 显示 `-` |
| 67 | +- 退出登录后积分行和展开面板均隐藏 |
| 68 | + |
| 69 | +#### 7. 账号区域精简 |
| 70 | +- `settingsUserRow`(账号区):只保留注销按钮,不再显示重复的用户名/积分 |
| 71 | +- 已登录时点「👤 zcj220」行不弹出登录面板(原来会弹) |
| 72 | +- 未登录时点击正常展开登录/注册表单 |
| 73 | + |
| 74 | +### 版本提交记录 |
| 75 | +| commit | 说明 | |
| 76 | +|--------|------| |
| 77 | +| `a9a07a5` | 离线优先登录持久化 + 注销按钮全宽灰色样式 | |
| 78 | +| `75beb96` | 去掉注销区域重复显示的用户名 | |
| 79 | +| `66ca5f9` | 设置面板新增步骤间隔+完成通知,修复积分-1显示 | |
| 80 | +| `dfa8889` | 步骤间隔默认500ms且全链路生效,积分独立一行 | |
| 81 | +| `6d3b205` | 登录态点账号行不弹面板,积分情况独立展开行 | |
| 82 | + |
| 83 | +--- |
| 84 | + |
8 | 85 | ## v14.0 进度总结(2026-03-25) |
9 | 86 |
|
10 | 87 | ### ✅ v14.0-A MySQL 云数据库完成 |
|
0 commit comments