docs: add E2E debugging principles to CLAUDE.md
Document vconsole visibility rules (SYS_TESTER label / SYS_CAN_SUDO tag), existing debug data injection patterns, and the norm for inserting new debug data in frontend (console.warn + localStorage), backend (tracing), and database fixtures. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -34,6 +34,36 @@
|
||||
|
||||
**Why:** 大部分问题在步骤 2-3 就能发现,避免反复触发 CI 浪费排队时间和 GitHub Actions 配额。
|
||||
|
||||
## E2E 调试原则
|
||||
|
||||
排查不了的 E2E 问题时,可以往前后端插入 debug 数据辅助排查。
|
||||
|
||||
### vConsole(小程序前端调试面板)
|
||||
|
||||
- **打开条件**:用户有 `SYS_CAN_SUDO` tag(root 标签)或角色上有 `SYS_TESTER` label → 自动显示 vConsole 面板
|
||||
- **实现位置**:`huike-front/src/App.vue` → `watch(() => store.current)`
|
||||
- **使用方式**:打开 vConsole 后,可在 Console 面板查看 `console.warn` / `console.log` 输出,Storage 面板查看 `localStorage` 数据
|
||||
|
||||
### 已有 debug 数据注入模式
|
||||
|
||||
项目中已存在以下 debug 注入模式,可直接复用:
|
||||
|
||||
| 模式 | 注入位置 | 查看方式 |
|
||||
|------|----------|----------|
|
||||
| `window.__cp_debug` | `pick.vue`、`add.vue`(课包相关) | vConsole Console 输入 `__cp_debug` |
|
||||
| `localStorage.setItem("OrgSwitchDebug", ...)` | `store/org.ts` | vConsole Storage 面板 |
|
||||
| `localStorage.setItem("ClazzPayloadDebug", ...)` | `store/clazz.ts` | vConsole Storage 面板 |
|
||||
| `localStorage.setItem("CourseSectionPayloadDebug", ...)` | `store/qumu-section.ts` | vConsole Storage 面板 |
|
||||
| `console.warn("[OrgSwitchDebug]", ...)` | `store/org.ts` | vConsole Console 面板 |
|
||||
|
||||
### 插入新 debug 数据的规范
|
||||
|
||||
**前端**:参考已有模式,用 `console.warn("[TagName]", data)` + `window.__tagName = data` 或 `localStorage.setItem("TagName", JSON.stringify(data))` 注入。vConsole 自动捕获 console 输出。
|
||||
|
||||
**后端(Rust)**:用 `tracing::warn!("[TagName] {:?}", data)` 或 `tracing::info!(...)` 打印关键中间数据。日志会出现在服务启动的 nohup 输出(`/tmp/htykc.log` / `/tmp/htyuc.log`)以及 CI 的收尾日志步骤中。
|
||||
|
||||
**数据库**:可在 `huike-unit/ci/fixtures/` 下添加 SQL fixture 文件,插入特定测试数据。在 `e2e.yml` 中新增步骤运行即可。
|
||||
|
||||
## 部署原则
|
||||
|
||||
**禁止使用 scp/rsync 部署代码。** 所有部署必须走 GitHub push → 服务器 git pull 的流程。
|
||||
|
||||
Reference in New Issue
Block a user