From 7d480bbe3495260e610b03f6ef97624d818e2dda Mon Sep 17 00:00:00 2001 From: zyh Date: Wed, 15 Apr 2026 08:44:50 +0000 Subject: [PATCH] =?UTF-8?q?sync:=20=E6=96=B0=E5=A2=9E=E6=B5=8B=E8=AF=95=20?= =?UTF-8?q?token=20=E7=94=9F=E6=88=90=E8=AF=B4=E6=98=8E=20+=20=E5=8F=AF?= =?UTF-8?q?=E5=A4=8D=E7=94=A8=E7=BB=84=E4=BB=B6=E6=A3=80=E6=9F=A5=E8=A7=84?= =?UTF-8?q?=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../skills/d8d-dev/visual-diff-mode-pencil.md | 42 +++++++++++++++++-- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/.claude/skills/d8d-dev/visual-diff-mode-pencil.md b/.claude/skills/d8d-dev/visual-diff-mode-pencil.md index e918662..0b3a7fe 100644 --- a/.claude/skills/d8d-dev/visual-diff-mode-pencil.md +++ b/.claude/skills/d8d-dev/visual-diff-mode-pencil.md @@ -241,15 +241,34 @@ PVD-1 PER-PAGE LOOP: 大多数功能页面需要登录才能访问,未登录会自动跳转到登录页。正确流程: -1. 如果已有测试 token,在 `browser_navigate` **之前** 注入 token 到 `localStorage`: +1. **生成测试 token**(需要组织者权限的页面必须): + 项目已提供预先生成 token 的脚本,直接运行: + ```bash + node tests/generate-test-token.cjs + ``` + 输出一个已认证组织者身份的 JWT token,复制备用。 + + > 脚本会使用 `api/.env` 中的 `JWT_SECRET` 生成签名,确保与后端验证一致。 + +2. 如果已有测试 token,在 `browser_navigate` **之前** 注入 token 到 `localStorage`: ```javascript await page.evaluate((token, userInfo) => { localStorage.setItem('token', token); localStorage.setItem('user', JSON.stringify(userInfo)); }, token, userInfo); ``` -2. 再导航到目标 URL -3. 如果需要组织者权限,确保测试账号已通过局头认证(状态 `APPROVED`) + 其中 `userInfo` 是: + ```javascript + { + id: "test-organizer-user-id", + nickname: "Test Organizer", + role: "organizer", + organizer: { id: "test-organizer-id", status: "APPROVED" } + } + ``` + +3. 再导航到目标 URL +4. 如果需要组织者权限,确保测试账号已通过局头认证(状态 `APPROVED`) ### 常见问题排查 @@ -301,6 +320,23 @@ PVD-1 PER-PAGE LOOP: - 设计规范(是否违反 Neon Pulse 原则:如存在不必要的 1px 边框) ``` +### 可复用组件检查(通用规则) + +设计稿 (.pen) 中标记 `reusable: true` 的组件为**全局可复用组件**,必须抽取为 Vue 全局组件在 `app/mini-program/src/components/` 目录,所有页面使用 import 导入,禁止在每个页面重复手写完整实现。 + +**检查规则**: + 1. 先通过 Pencil MCP `batch_get` 扫描 `.pen` 中所有标记 `reusable: true` 的节点 → 获取全局可复用组件列表 + 2. 对每个需要使用该组件的页面: + - 如果页面**完整手写实现了可复用组件代码**(未 import 使用全局组件)→ 🟡 中等差异 `moderate_count += 1` + - 如果使用了全局组件但样式(背景色/尺寸)不符合设计规范 → 🟡 中等差异 `moderate_count += 1` + - 正确使用了全局组件且样式符合规范 → 不计数 + +**当前已识别可复用组件**: + - `NavigationBarPrimary` (一级页面通用导航栏) → 要求:背景 `#000000` 不透明 + - `NavigationBarWithBack` (二级页面带返回导航栏) → 要求:背景 `#000000cc` 半透明 + `backdrop-filter: blur(20px)` + +**修复要求**:发现重复手写实现必须抽取为全局组件,并更新所有页面使用。 + ### 图标检查特别规则(@egoist/tailwindcss-icons) **设计要求**:设计节点 `type=icon_font` 必须用 tailwindcss-icons 实现,禁止使用 emoji 或纯文本占位。