Files
bim_engine/.sisyphus/notepads/section-axis-integration/qa-instructions.md

5.3 KiB
Raw Blame History

Task 4: 最终验证指令

前置条件检查

在开始验证前,确保:

  1. Demo 已启动:npm run dev:demo
  2. 浏览器打开 localhost通常是 http://localhost:5173
  3. 3D 引擎已初始化:控制台检查 window.bimEngine?.engine 不为 null
  4. 模型已加载3D 场景中可见 BIM 模型

验证步骤16 项验收标准)

场景 1: 打开弹窗时4 项)

操作:点击工具栏的"轴向剖切"按钮

预期结果

  • 弹窗正常显示在容器右下角
  • 控制台输出:
    [Engine] Activating section axis: x
    
  • 视觉确认:模型被 X 轴平面剖切(可见内部结构)
    • X 轴是前后方向,模型应该被一个垂直平面切开
    • 能看到模型内部的墙、梁、柱等结构
  • UI 状态X 按钮显示为激活状态(高亮或不同颜色)

如果失败

  • 如果控制台输出 [SectionAxisDialogManager] Engine not initialized,说明未调用 initEngine()
  • 如果没有剖切效果,检查模型是否加载完成

场景 2: 切换到 Y 轴3 项)

操作:点击 Y 按钮

预期结果

  • 控制台输出(按顺序):
    [SectionAxisDialogManager] 切换轴向: y
    [Engine] Deactivating section axis: x
    [Engine] Activating section axis: y
    
  • 视觉确认:模型截面从 X 轴方向变为 Y 轴方向
    • Y 轴是上下方向,模型应该被水平平面切开
    • 可以看到楼层的横截面
  • UI 状态Y 按钮激活X 按钮恢复普通状态

控制台验证

window.bimEngine?.engine.getCurrentSectionAxis()  // 应返回 'y'

场景 3: 切换到 Z 轴3 项)

操作:点击 Z 按钮

预期结果

  • 控制台输出(按顺序):
    [SectionAxisDialogManager] 切换轴向: z
    [Engine] Deactivating section axis: y
    [Engine] Activating section axis: z
    
  • 视觉确认:模型截面变为 Z 轴方向
    • Z 轴是左右方向,模型应该被侧面垂直平面切开
  • UI 状态Z 按钮激活Y 按钮恢复普通状态

控制台验证

window.bimEngine?.engine.getCurrentSectionAxis()  // 应返回 'z'

场景 4: 幂等性测试1 项)

操作:当前 Z 轴激活,再次点击 Z 按钮

预期结果

  • 控制台输出:
    [SectionAxisDialogManager] 切换轴向: z
    [Engine] Section axis z already active, skipping.
    
  • 无额外 API 调用(没有 "Deactivating" 或 "Activating" 日志)
  • 视觉效果不变

场景 5: 隐藏按钮1 项)

操作:点击"隐藏"按钮(眼睛图标)

预期结果

  • 控制台输出:
    [SectionAxisDialogManager] 隐藏切换(暂不支持): true/false
    
  • 无报错:不应该有 JavaScript 错误
  • 视觉效果不变(因为功能未实现)

场景 6: 反向按钮1 项)

操作:点击"反向"按钮(双向箭头图标)

预期结果

  • 控制台输出:
    [SectionAxisDialogManager] 反向剖切(暂不支持)
    
  • 无报错:不应该有 JavaScript 错误
  • 视觉效果不变(因为功能未实现)

场景 7: 关闭弹窗2 项)

操作点击弹窗关闭按钮X

预期结果

  • 控制台输出:
    [Engine] Deactivating all section axis
    
  • 视觉确认:模型恢复完整显示(不再被剖切)
  • 工具栏按钮恢复普通状态(不再激活)

控制台验证

window.bimEngine?.engine.getCurrentSectionAxis()  // 应返回 null

场景 8: 边界情况 - 快速切换1 项)

操作:重新打开弹窗,快速连续点击 X → Y → Z → X

预期结果

  • 每次切换都有正确的控制台日志输出
  • 最终状态X 轴激活
  • 视觉效果:模型被 X 轴平面剖切
  • 无 JavaScript 错误

控制台验证

window.bimEngine?.engine.getCurrentSectionAxis()  // 应返回 'x'

场景 9: 边界情况 - 重新打开弹窗(额外验证)

操作:关闭弹窗后再次打开

预期结果

  • 默认激活 X 轴(而不是上次的轴向)
  • 控制台输出:[Engine] Activating section axis: x

验证工具

手动 API 测试(可选)

在控制台运行以下命令测试 API

// 检查引擎实例
const engine = window.bimEngine?.engine;
console.log('Engine instance:', engine);

// 测试激活方法
engine.activateSectionAxis('x');  // 应激活 X 轴
engine.activateSectionAxis('x');  // 应输出 "already active"

// 测试切换
engine.activateSectionAxis('y');  // 应先停用 X再激活 Y

// 测试停用
engine.deactivateSectionAxis();   // 应停用所有剖切

// 检查状态
console.log('Current axis:', engine.getCurrentSectionAxis());  // null

成功标准

所有 16 项验收标准通过
控制台无 JavaScript 错误
日志输出顺序正确
视觉效果符合预期


如果发现问题

记录以下信息:

  1. 场景编号操作步骤
  2. 实际结果(控制台输出、视觉效果)
  3. 错误信息(如果有)
  4. 浏览器和版本

将问题记录到 .sisyphus/notepads/section-axis-integration/issues.md