diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a9b52797..2779297b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,7 +12,7 @@ jobs: with: { python-version: '3.11' } - uses: actions/setup-node@v4 with: - node-version: '20' + node-version: '22' cache: npm cache-dependency-path: frontend/package-lock.json - name: Install dependencies diff --git a/docs/BUG_HISTORY.md b/docs/BUG_HISTORY.md index 62748f64..cc8562ca 100644 --- a/docs/BUG_HISTORY.md +++ b/docs/BUG_HISTORY.md @@ -449,11 +449,11 @@ - 最近更新:2026-07-22 - 影响面:production 发布门禁、首页主题入口、会话输入区、生时校正组件服务端渲染测试 - 用户现象:production 应用构建成功,但完整前端测试有 7 项失败,导致最新 `main` 无法通过发布前验证。 -- 触发条件:运行完整前端测试;旧断言仍查找已移除的首页证据预览、固定 180px 模型菜单、无条件输入区类名和旧 `profile` 文案来源,组件测试还会在 Node ESM 下加载 GSAP 默认导出。 -- 根因:首页与普通 session 的布局和文案已经更新,测试契约没有随产品行为同步;`chat-message-row` 使用 GSAP 默认导入,在 Next 构建中可用,但 Node ESM 测试运行器解析到的模块形态不同。 -- 修复:测试改为锁定当前首页主题选择、内容自适应模型菜单、带首页修饰类的停靠输入区和 `profileDraft` 文案来源;GSAP 改用其正式命名导出,保持浏览器行为不变并恢复 Node ESM 组件测试。 -- 验证:6 个相关测试文件、完整前端测试、ESLint、production build 与 patch check 全部通过后方可发布。 -- 防复发:产品 UI 结构调整时必须在同一提交同步源码契约测试;跨 Next 与 Node 运行的依赖优先使用包声明的稳定命名导出。 +- 触发条件:运行完整前端测试;旧断言仍查找已移除的首页证据预览、固定 180px 模型菜单、无条件输入区类名和旧 `profile` 文案来源;旧手动 workflow 还固定在 Node 20,而当前 `@mastra/core` 明确要求 Node 22.13 以上。 +- 根因:首页与普通 session 的布局和文案已经更新,测试契约没有随产品行为同步;`Jyotish Skill Tests` 的 Node 版本也落后于其他 production 门禁和应用依赖声明,使 Node 20 把 GSAP ESM 错误解析成 CommonJS namespace。 +- 修复:测试改为锁定当前首页主题选择、内容自适应模型菜单、带首页修饰类的停靠输入区和 `profileDraft` 文案来源;GSAP 使用正式命名导出;手动 production 测试 workflow 与其余门禁统一到 Node 22。 +- 验证:6 个相关测试文件、Node 22 完整前端测试、ESLint、production build 与 patch check 全部通过后方可发布。 +- 防复发:产品 UI 结构调整时必须在同一提交同步源码契约测试;workflow 的 Node 主版本不得低于已锁定运行时依赖声明的最低版本。 - 相关记录:BUG-022、BUG-024、BUG-025 - 复发自:无 - 修复版本:待提交(production gate)