Commit Graph

3 Commits

Author SHA1 Message Date
832caaffef feat: F1 剖面盒自动检测完整链路跑通(真实物体)
- SectionBoxBatchDetector:路径剖面盒(复用 SectionClipHelper.CalculatePathClipBox 产品语义)→ 导出局部 NWD → 副实例检测 → 报告回传
- 移动物体跨实例解析:导出剖面盒保留节点树结构,去掉根后主/副层级链一致,按 ancestorChain 匹配(用户验证结论)
- 副实例临时库:TRANSPORTPLUGIN_TEST_DB_PATH 环境变量显式指定,createIfMissing 时强制创建(解决检测记录无法落库→报告失败)
- 副实例进程定位:cmd start detach 后按新 Roamer PID 定位并关闭
- batch-queue-add:真实物体写入 ModelItemReferences(MovingObject),F1 从引用读移动物体名/PathId/层级链
- batch-queue-process:改后台执行立即返回(模态进度条不阻塞 HTTP),调用方轮询数据库状态
- 集成测试标准场景:自动测试_Ground 更新(用户修改)+ Ground 真实物体改 Chair Lounge Couch Double

验证:F1 Ground + Chair Lounge Couch Double,碰撞 28/28,链路完整
2026-08-05 12:11:37 +08:00
44214baa00 feat: 集成测试补 T05/T06 + 动画加速与多项基础设施修复
测试新增:
- T05 Free 自由路径(FreePathAutomationTests:完整动画 + 逐帧位置=路径点)
- T06 碰撞报告内容断言(CollisionReportAssertions 接入虚拟/真实物体测试)

服务端增强:
- list-model-items 端点(枚举物体:DisplayName/PathId/包围盒中心/祖先链)
- run-virtual-collision-test 支持 frameRate/durationSeconds(测试动画加速:15fps/5s)
- 测试执行串行锁(SemaphoreSlim,防客户端超时后任务占用 UI 线程并发污染)
- 标准路径清单/XML 增加自动测试_Free

Bug 修复:
- AnimationControlViewModel.InvalidateLastGeneratedReport(跨测试碰撞报告残留)
- 真实物体身份校验 ReferenceEquals→InstanceGuid(NW ModelItem 实例不保证同引用)
- 真实物体动态解析(ModelPath 跨会话不稳定,禁止硬编码 PathId)
- PathImportValidity 测试点 Id 随机化(PathPoints.Id 全局主键,p1/p2 固定会冲突)
- start-navisworks.ps1:启动前清理 AutoSave(避免恢复弹窗拦截)、文件关联打开模型、dismiss 兜底、启动 15s→4.4s

验证:集成测试 13/13 通过,完整集 6min→59.6s(动画 15fps/5s)
2026-08-04 18:13:26 +08:00
b5cfcbf8ac feat: 集成测试新增真实物体动画验证(P0 T01-T03)
- 服务端 run-virtual-collision-test 支持 useVirtualObject=false + animatedObjectPath(ModelPath 定位,解决 DisplayName 重名)
- ResolveAnimatedObjectFromQuery 支持按 CreatePathId 的 PathId 精确匹配
- 修复 ModelItem 身份校验:ReferenceEquals 对 NW API 同一逻辑对象不同实例不可靠,改用 InstanceGuid 比较
- 新增 RealObjectAnimationAutomationTests:Ground/Hoisting/Rail 真实物体动画完整流程
  (42" Diameter=0/0/660/0,25" x 25"=0/0/769/0)
- 集成测试 9/9 通过(3 虚拟碰撞 + 1 autoPath + 2 导入 + 3 真实物体)
2026-08-04 16:52:37 +08:00