主题
BIM引擎底座 · 测试与验收
文档版本:0.30 | 最近核对日期:2026-11-10
1. 当前结论
首期应用与数据库已实现并在开发环境完成真实链路验证与收口强化:
- 已通过:六表建库与回读、菜单与权限、双视图工程台账导航、单位工程归属与授权、资产/版本/原文件、引擎适配与持久任务、RVT 真实转换、全量构件与分组属性入库、构件分页与属性筛选、多级分类目录树、构件身份解析、BIM 引用保护、发布前置校验。
- 已通过(补充,2026-11-08 二轮):真实几何预览、检查后发布、历史版本仍可预览、工点集中预览(单模型范围)、大文件(717MB)平台上传。
- 已通过(2026-11-09 发布轮):开发/生产 DEV/PROD 项目分离、生产六表与普通管理员菜单授权、生产 8888 引擎同源反代与 2G 上传限制、生产 BIM 导航/模型分页/预览上下文接口、预览页标题改为工程名称;开发与应用产物已发布。
- 已通过(2026-11-09 RVT 收口轮):同工点多模型有序加载队列与单模型失败隔离、构件定位参数修正与数据集相机聚焦、多级分类树展开与构件叶子挂接、模型台账专业(majorCode)轻量筛选、超千条运行时构件 ID 分批防护、BIM 模块与工程引用保护自动化单元测试(39 个用例全通过)、前端 Lint 与构建通过。
- 已通过(2026-11-09 后台上传与复盛站真实闭环):私有化后台上传路线(
placeholder/createInFolder申请占位 + 流式 SFTP 安全传输至引擎宿主机 +placeholder/complete回调通知纳管)、多实例分布式锁BimTaskGuard与引擎可达性探测(解决多实例竞争与远程未放行网段误推任务)、复盛站真实主体结构 RVT 样本(116.10 MiB / 121,741,394 字节)全链路闭环:平台接收原文件 → 后台上传登记 → SFTP 流式写入宿主机物理路径 → 引擎确认接收纳管 → 100% 转换成功(status: 10)→ 全量 2,034 构件与 112,942 条属性完整入库并核查通过(TASK_STATUS: SUCCEEDED,TASK_PHASE: CHECK)→ 浏览器真实 WebGL 渲染车站与混凝土结构三维画面、分类构件树及 7 大分组属性完整回显。 - 已通过(2026-11-10 整文件构件适配):单文件数据集改用
getDataSetFileData(dataSetId)构件清单,多文件数据集保留目录树归属并与整文件清单核对;逐构件核对分组源属性条数;BIM 模块 39 个定向单测通过,真实引擎完整解析探针 435/435 构件、12,135 条属性通过。 - 已通过(2026-11-10 预览重复进入修复):卸载时移除引擎事件监听并调用
releaseEngine(true),预览路由不再 keep-alive;浏览器实测首次预览加载成功,关闭标签后再次进入同一预览仍显示真实几何(getAllDataSetReady=true、界面“已加载”)。 - 未通过/受阻:同工点多模型真实多专业协调验证(受限于当前工程仅有一份已发布样本模型,已通过代码逻辑、状态隔离与测试固化)、非管理员角色的未发布内容权限实测(单测已覆盖 403 拦截)、622MB 样本的引擎转换(引擎侧 status=20)、远程开发服务器到引擎网络不通(远程 dev 实例已通过引擎可达性守卫安全跳过任务推进,不破坏平台任务)。
- 用户决定延期:2026-11-09 用户明确将 PAK 支持放到后续,其支持与样本验证不再纳入本轮 RVT 收口完成条件;没有 PAK 通过证据,不得改写成已通过。
- 因此仍不能声明业务验收通过,也不能把已通过项外推为整条闭环通过。
2. 受测范围与来源
| 来源编号 | 时间、环境与对象 | 实际覆盖 | 限制 |
|---|---|---|---|
| E-BIM-11 | 2026-11-08,内网黑洞部署 15.50.3.12:9012 + 真实 RVT 样本(rac_basic_sample_project.rvt,17,367,040 字节) | 登录、上传分片、转换、资源描述、版本历史、根节点、目录树、叶子构件、构件身份、分组属性、稳定标识能力、同名拒传 | 单样本;未覆盖 PAK |
| E-BIM-12 | 2026-11-08,本地开发环境(后端 8080 / 前端 80),超级管理员 | 菜单、导航树、下钻、资产台账、版本列表、构件查询、属性、发布校验、引用保护 | 单角色;几何未显示 |
| E-BIM-13 | 2026-11-08,项目纳管入口 dm8-dev | 六表 DDL/DML、回读列/约束/索引、属性空值统计、分片参数回读 | 仅开发库 |
| E-BIM-14 | 2026-11-08 至 2026-11-09,dev.ps1 / verify.ps1 | 全仓编译、前端类型检查、oxlint、完整构建、BIM 模块单元测试(28 用例)与引用保护测试(11 用例) | 静态与单元级验证,不替代用户业务验收 |
| E-BIM-15 | 2026-11-09,内网黑洞部署 + 复盛站主体结构真实样本(复盛站主体结构.rvt,121,741,394 字节,116.10 MiB) | 后台上传占位申请、宿主机 SFTP 物理路径流式传输与大小校验、上传完成回调通知纳管、引擎 100% 转换成功、2,034 构件全量入库、112,942 条属性全量入库、完整性核查通过、浏览器端三维真实几何渲染与构件属性分组回显、BimTaskGuard 分布式锁与引擎可达性探测 | 真实工程单模型样本,未默认发布为当前版本 |
证据目录:test-artifacts/blackhole-p0-20261108/(脱敏请求/响应、状态轮询、分片对照)。
3. 已执行检查
3.1 引擎协议实测(P0)
| 检查 | 结果 |
|---|---|
服务端登录 getToken | 通过;请求体 userNameOrPhone/password,响应 {token, tokenId, isSuccess, errMsg}(token 在顶层) |
| 分片 Index 语义 | 通过;5 片 Index=0..4 全部接收,上传记录 blobIndex 末片 = blobCount-1,0 基 |
| 末片收尾 | 通过;filemanage/v3/list 的 uploadStatus 6→4、checkResult=Passed 后才可提交转换 |
| 同名拒传 | 通过;isOverWrite=false 且同名 → 「已有重复名称的其他数据集」 |
| 第二版独立数据集 | 通过;同源文件两次上传得到不同 dataSetId(3a24cd00… 与 3a24cd0f…) |
| 转换状态查询 | 差异:单数版 getConvertStatus 对有效数据集返回「无效的数据集」,必须用 batchGetConvertStatus |
| 转换可用性 | 部分通过:4MB×5 分片的同一 RVT 在约 100 秒内 status=10;单分片(blobSize 20MB > 文件 17MB)两次均停滞在 68.4%「生成资源文件」;另一次 5 分片尝试失败(status=20,无产物) |
| 引擎版本号 | 通过;GET modelTree/v3/versionHistory/{dataSetId} → [{version:1, convertCompleteTime}],元数据接口必须带该版本 |
| 根节点 | 通过;version=0 返回空 files,version=1 返回 fileIntId=-1 的文件项 |
| 全量构件接口 | 差异:getDataSetFileData 传 fileName 返回空;传 dataSetId 可返回全量构件及扁平属性(435 构件、10,830 条源属性),但无分组、顺序和 3 个系统属性;为保留分组仍走「全树 + 叶子 getTreeChildren + 逐构件 getElementParam」 |
| 构件身份 | 通过;elementGuidId/hostFileId 返回正常(hostFileId=1 与 fileIntId=-1 属两个身份空间) |
| 分组属性 | 通过;单构件 6 组 30 条,保留组序与属性序,含空字符串值 |
| 稳定标识能力 | 通过;RVT 返回 data: true |
| 资源产物 | 观察到:成功转换的数据集在资源桶有 267 个键(hlod 几何块、贴图、elemlist、total.xml 等);depths.txt 仅 1 字节 |
3.2 平台链路(E-BIM-12 / E-BIM-13)
| 检查 | 结果 |
|---|---|
| 菜单与路由 | 通过;「BIM底座 → 模型管理」可见,/bim/model 正常渲染 |
| 双视图与建设状态 | 通过;在建默认,空间/合同切换可用,树内容随之变化 |
| 单位工程叶节点 | 通过;下钻线路→工点→标段→单位工程,叶节点显示模型数徽标 |
| 空模型工程 | 通过;无模型的单位工程可选中,台账显示「暂无数据」 |
| 上层节点新建禁用 | 通过;未选单位工程时「新建模型」「集中预览」均禁用并带提示 |
| 资产台账与实时状态 | 通过;版本处理中显示真实阶段与进度(如「V1 转换中 68.4%」),非静态假进度 |
| 台账预览入口 | 通过;行内「预览」打开单模型(当前发布版或待检查版),勾选模型后工具栏变为「集中预览(已选 N)」,按 versionIds 加载所选且校验仍为当前发布版 |
| 零版本资产 | 通过;显示「暂无版本」与「尚未发布」 |
| 资产建立/改名 | 通过;归属由后端解析,改名仅改名称(bm:model:edit 生效) |
| 原文件上传 | 通过;RVT 上传后建版本与任务,原文件存 OSS |
| 全量解析 | 通过;1/1 文件、435/435 构件、12135 条属性,完整性核查通过后切换 acceptedTaskId |
| 快照隔离 | 通过;失败尝试的 12135 条属性保留排障,普通查询只返回成功快照的 435 构件 |
| 构件分页与筛选 | 通过;名称包含 18 条;标高=Foundation 11 条;仅属性名 435 条;两条件 AND 435 条;零匹配 0 条 |
| 目录树与构件叶子 | 通过;文件根 1 项 → 多级分类树逐级展开;叶节点展示具体构件分页并可联动定位 |
| 构件属性与解析 | 通过;36 条分组属性有序返回;运行时 ID 解析得到唯一平台构件 |
| 发布前置校验 | 通过;未确认检查 → 400「发布前必须确认已完成几何与数据检查」;不存在版本 → 400 |
| 预览上下文互斥 | 通过;EXACT_VERSION 携带 siteId → 400;CURRENT_SCOPE 携带 versionId → 400;无发布版本时返回空模型数组 |
| BIM 引用保护 | 通过;对无分部工程但已建模型的单位工程执行删除 → 「单位工程已关联BIM模型,请先处理对应模型资产后再删除」,单位工程保留;标段删除与范围调整均已接入并单测验证 |
| 分片参数落库 | 通过;CHUNK_SIZE=4194304、CHUNK_COUNT=5、LAST_CONFIRMED_CHUNK=4 |
| 几何画面 | 通过(二轮)。根因是 SDK 版本与引擎部署不一致(我们用公开包 3.2.0.3968,部署为 3.2.0.3772)且未注册资源授权/路径索引;改用部署同版本 SDK 并调用 addAuthorPath/addPathIndex、写入 window.pathCtrl* 后,画面出现真实模型,构件集合 448(含天空盒)、构件 1 包围盒为真实坐标 |
| SDK 版本 | 通过;window.BlackHole3D.getVersion() 返回 3.2.0.3772,与部署一致 |
| 检查后发布 | 通过;确认检查后发布成功,资产当前版本指针切换,返回标签 CURRENT |
| 历史版本 | 通过;V2 发布后 V1 转为历史,仍可打开并渲染自身几何(数据集独立:3a24cd73… 与 3a24cdb0…) |
| 工点集中预览 | 通过(单模型);CURRENT_SCOPE 按工点+标段+单位工程取当前发布版本并渲染,标题与上下文正确;多模型队列加载与显隐切换已强化 |
| 换版期间旧版可用 | 通过;V2 解析完成但未发布时,CURRENT 仍为 V1,汇总视图仍加载 V1 |
| 大文件上传 | 通过(调整部署后);717MB RVT 平台上传成功(3 分 04 秒);此前同文件因存储前置代理 500m 限制返回 413 |
| 大模型全链 | 通过(683.77MB 真实工程样本,无人工干预):171 片全部接收(约 25 分钟)→ 引擎收尾校验完成 → 转换成功 → 解析 1/1 文件、621/621 构件、18266 条属性 → 完整性核查通过 → 预览页加载 621 个构件并显示真实几何 → 发布为当前版本,V2/V1 转为历史。任务从建立到完成 22:52:59–00:08:45(约 76 分钟,含上传、收尾、转换、解析)。另有一个 622MB 样本直连引擎转换失败(status=20,无产物) |
3.3 构建与静态检查
| 检查 | 结果 |
|---|---|
| 后端全仓编译 | 通过 |
| BIM 模块自动化测试(digital-construction-bim) | 28/28 通过,0 失败 |
| 工程基础定向回归(UnitProject/BidSection) | 11/11 通过,0 失败(含 2 个 BIM 引用保护拦截用例) |
| 前端 lint(oxlint src) | 0 error / 0 warning |
| 前端完整构建(vite build) | 通过(dist 产物生成正常) |
3.4 双环境发布验证(2026-11-09)
| 检查 | 结果 |
|---|---|
| 引擎项目隔离 | 通过;黑洞管理端存在 交开投数智建管平台-PROD(3a24ce26-…fdab)与 -DEV(3a24c81b-…2be8);application-prod.yml/application-dev.yml 分别固定对应项目,生产服务端环境未设置覆盖项 |
| 生产建表与回读 | 通过;新建 BIM 六表,回读 6 表、24 索引、27 约束(15 CHECK/6 PK/6 UNIQUE)与开发库一致;BIM_MODEL/VERSION/ELEMENT 均为 0 行 |
| 生产菜单权限 | 通过;9 行 BIM 菜单已存在,本次为 normaladmin 补齐 9 行 SYS_ROLE_MENU,回读 9 条 |
| 生产应用发布 | 通过;releases/20261109-0105-bim,JAR SHA-256 b8ed1a84…71d51,首页 e9ade4e1…5fd7;服务 active、启动 32.4 秒、到生产库 15 条连接 |
| 生产引擎同源代理 | 通过;/blackHole3D/ API 与授权/索引资源经 https://15.50.3.142:8888 与 https://dcp.cqrailway.com:8888 均返回 200;/prod-api/、MinIO 反代均为 2g |
| 生产 BIM 接口 | 通过;BIM 导航树 200、指定单位工程模型分页 total=0、CURRENT_SCOPE 上下文 200;返回 siteName=九曲河东站、bidName=土建施工01标、unitProjectName=九曲河东站 土建综合工程,SDK/资源地址随请求 Origin 分别指向 IP 或域名同源 |
| 开发应用发布 | 通过(代码与配置);后端 JAR 53167de7…f0d7,前端 frontend-release-20261109-0107-bim(首页 9f4880b1…bf26);服务 active,HTTP/HTTPS 验证码接口 200 |
| 开发 BIM 接口 | 通过(应用层);CURRENT_SCOPE 返回 V3 模型与三个工程名称,SDK 地址按 Origin=https://tangyucong.top 生成同源 /blackHole3D/… |
| 开发到引擎网络 | 受阻;1.12.68.9 到 15.50.3.12:9012 TCP 超时,nginx 引擎反代超时;远程 dev 的转换与预览不可用,本机开发环境直连引擎链路正常 |
| 页面文案修复 | 通过(本机开发);预览页标题由主键改为“九曲河东站 + 当前发布 + 土建施工01标·单位工程”,模型台账页移除“所属工点/所属标段/标准专业”说明小字 |
4. 首期功能用例状态
| 用例 | 状态 | 依据/缺口 |
|---|---|---|
| TC-BIM-01 模型粒度 | 通过 | 一个单位工程下多资产可建;同工点跨标段隔离由授权契约与树范围实现,单测覆盖标段与专业过滤 |
| TC-BIM-02 格式与原文件 | RVT通过 | RVT上传/下载入口实现;16.56MB与717MB上传成功;PAK支持与验证按用户决定延期,不作为本期阻断 |
| TC-BIM-03 转换闭环 | RVT 通过(平台链路) | 4MB 多分片 100 秒内完成;单分片配置停滞已记录并改默认 |
| TC-BIM-04 全量枚举 | 通过(RVT 单样本) | 435 构件/12135 属性;跨文件重复 ID 判歧义;超千条 ID 分批防护 |
| TC-BIM-05 属性无损 | 通过(样本范围) | 组序、空字符串 1908 条保留;该样本无 NULL 值 |
| TC-BIM-06 解析中断恢复 | 通过(单测与单样本) | CHECK 阶段失败→重新解析复用转换成果已验证;平台重启/中断恢复逻辑由单测验证 |
| TC-BIM-07 发布校验 | 通过 | 未确认检查被拒;几何实际检查后确认发布成功,当前版本指针切换 |
| TC-BIM-08 新版失败 | 通过(逻辑与单测) | V3 上传/解析期间 V2 持续为当前发布并可预览;新版未就绪时不切换指针;旧发布版持续可用 |
| TC-BIM-09 多模型预览 | 通过(单样本闭环与队列加载强化) | 工点集中预览按工点/标段/单位工程加载当前发布版本并渲染;前端已补齐串行加载队列、熔断超时与失败隔离;勾选多模型按 versionIds 加载所选 |
| TC-BIM-10 历史一致性 | 通过 | V1/V2/V3 数据集独立、版本标签正确(V3 当前、V1/V2 历史),历史版仍渲染自身几何(435 构件);单测覆盖 HISTORICAL 标签生成 |
| TC-BIM-11 单位工程授权 | 通过(单测覆盖) | 后端统一按专属组合断言;单测覆盖未发布版本对普通查询人员的 403 拦截 |
| TC-BIM-12 基础访问保护 | 部分通过 | 业务接口需登录与权限;凭据不出服务端;资源源站仍匿名可读(后置加固) |
| TC-BIM-13 稳定标识留存 | 通过(RVT) | 435 个 GUID 原值入库,缺失不强制唯一 |
| TC-BIM-14 元数据查询 | 通过 | 数据库分页 + 属性 AND;同名属性不重复计构件;台账补充专业筛选 |
| TC-BIM-15 页面生命周期 | 通过 | 页面销毁解绑与卸载实现;多模型加载队列清空与超时保护已完善 |
| TC-BIM-16 真实规模 | 通过(记录) | 16.56MB:转换约 88–100s、解析约 100s、435 构件/12135 属性;683.77MB:上传约 25 分钟、全链 76 分钟、621 构件/18266 属性。测量均在开发环境,未承诺生产秒数 |
| TC-BIM-17 同名上传与分片恢复 | 通过(拒绝路径) | 同名拒传、独立数据集、0 基分片、收尾轮询 |
| TC-BIM-18 阶段恢复 | 通过 | 复用转换成果重新解析已验证;平台重启后续转由单测覆盖 |
| TC-BIM-19 分页与导航权限 | 通过 | 模型默认 10/上限 200、构件默认 20/上限 200;BIM 用户无需工程配置权限 |
| TC-BIM-20 SDK 资源兼容 | 通过 | 部署同版本 SDK(3772)+ addAuthorPath/addPathIndex 后真实几何可见;SDK 资产按版本目录随 dist 发布 |
| TC-BIM-21 导航主入口 | 通过 | 无独立查询卡;双视图、树搜索、折叠、刷新、空模型工程、上层提示均验证 |
| TC-BIM-22 导航范围与返回 | 通过 | 逐级下钻与标段上下文生效;列表工具栏名称与专业筛选生效;返回恢复位置实现(sessionStorage 记忆与重放) |
| TC-BIM-23 工程引用保护 | 通过 | 直接删除单位工程、标段删除、标段范围调整三处拦截均已由业务层实现并由自动化单测覆盖 |
| TC-BIM-24 原台账与布局回归 | 通过 | 共享组件替换后原台账页面类型检查/构建通过;查看器窄屏响应式已补充 |
5. 当前阻断与关闭依据
| 编号 | 问题/缺口 | 当前判断 | 关闭依据 |
|---|---|---|---|
| B-BIM-01 内网RVT转换停滞 | 已关闭(RVT) | 4MB 多分片稳定:16.56MB 约 88–100 秒;683.77MB 样本完成全链(上传 25 分钟、收尾校验较慢、转换+解析至完成约 76 分钟总计)。单分片配置会停滞,已改默认 4MB。仍有个别失败样本(622MB 直连转换 status=20、一次 5 分片失败),按单样本偶发处理,不影响已通过结论 | |
| B-BIM-02 资源回调成功但无几何 | 已关闭 | 根因是客户端侧:SDK 版本与部署不一致(3968 vs 3772)且未注册 addAuthorPath/addPathIndex。改用部署同版本 SDK + 正确注册后,getElemTotalBV 返回真实坐标、画面可见;depths.txt 为 1 字节并非阻断条件 | |
| B-BIM-03 全量构件/属性读取与入库 | 已关闭(RVT);PAK延期 | 435/435、12135条与源响应一致;getDataSetFileData 传 dataSetId 可用但为扁平属性,为保留分组改用树枚举;大文件 621 构件/18266 属性入库核查通过;超千条 ID 查询分批保护已添加 | |
| B-BIM-04 平台业务授权与凭据边界 | 部分关闭 | 业务接口鉴权与未发布内容维护权限实现(单测已覆盖 403 拦截);源站匿名旁路仍待 H-BIM-01 | |
| B-BIM-05 历史与版本一致性 | 已关闭(RVT) | V1/V2/V3 数据集独立、标签正确,历史版仍渲染自身几何;版本标签 HISTORICAL 已补齐且单测通过 | |
| B-BIM-06 未发布内容角色隔离 | 已关闭(逻辑与单测验证) | requireContentAccess 限制未发布版本仅具备上传/发布权限者可读,单测已覆盖非维护角色的 403 拦截 | |
| B-BIM-07 远程开发到引擎网络 | 受阻 | 1.12.68.9 → 15.50.3.12:9012 TCP 超时;不影响生产(142 已通)与本机开发;需网络放行后复验 |
后续加固 H-BIM-01(源站匿名旁路、短期票据、撤权失效)按用户决定延期,不纳入首期完成门槛。
后续格式 F-BIM-01:PAK 支持、真实样本转换/预览/解析及性能测量按 2026-11-09 用户决定延期。原始证据中“未覆盖 PAK”保持事实,不要求本轮寻找样本,不为延期重建表或删除格式预留。
6. 文档验证记录
2026-11-08 实施轮:按本页 §3 执行引擎与平台验证;修复过程中发现并修正的实现缺陷:登录 token 解析路径(顶层)、转换阶段缺少提交转换、计数 Long 引用比较误判、属性筛选“省略值条件”被当作匹配空值、目录树文件根子级解析、页头预览模式非响应式、画布绘制缓冲未随容器同步、加载回调成功即标“已加载”、版本抽屉缺预览/发布入口、发布返回标签读旧指针、RESystemReady 时序丢失与 wasm 未就绪即初始化。
二轮(同日,按用户提供的真实工程样本与厂商部署预览证据):定位并关闭几何不显示问题——SDK 版本须与引擎部署一致(3.2.0.3772),且必须注册 addAuthorPath/addPathIndex 并设置 window.pathCtrl* 等资源路径全局;SDK 改为版本化目录随构建发布;对象存储前置代理 client_max_body_size 由 500m 调整为 2g 并关闭请求体缓冲(用户授权,dev 已执行并重载,生产 142 待发布时同步)。同一轮把分片默认值从 20MB 改为 4MB 并限制 blobSize 不超过文件大小,依据是本页 §3.1 的单分片停滞对照实验。
2026-11-09 发布轮:新增黑洞 PROD 项目并把 dev/prod 项目 ID 分置于 application-dev.yml/application-prod.yml;生产库新建 BIM 六表并补齐普通管理员菜单;生产 nginx 增加 /blackHole3D/ 同源反代、/prod-api/ 与 MinIO 反代提升至 2g;生产发布 releases/20261109-0105-bim,开发发布新前端目录与后端包。预览页标题改用工程名称、台账页移除说明小字。远程开发到引擎网络不通,按 B-BIM-07 记录。
2026-11-09 收口验收轮:
- 三维查看器强化多模型串行队列加载机制,增加 30s 熔断保护与逐项错误隔离;首个模型清空画布,后续模型追加;显隐切换调用
setElemsValidState。 - 修复构件树多级分类与叶子构件加载,构件点击定位修正为引擎规范的
setCamLocateToElem([{ dataSetId, elemIdList: [runtimeElementId] }], 1.0)。 - 模型台账列表工具栏增加专业(
majorCode)轻量下拉筛选,与名称筛选及工程导航范围共同生效,并记入会话状态用于返回时自动恢复。 - 构件树节点构件分页查询针对超过 1000 个运行时构件 ID 增加分批 OR 查询保护,防止超出数据库
IN限制;buildVersionVo规范发布标签。 - 补充 28 个 BIM 模块后端单元测试与 2 个引用保护测试,全部通过;前端 Lint 检查 0 错误 0 警告,Vite 构建顺利产出。
2026-11-10 接口复核:按厂商反馈修正 getDataSetFileData 参数结论——正确参数为 dataSetId(hasParams=true),对已转换数据集返回全量构件及扁平属性;rac_basic_sample_project.rvt 返回 435 构件、10,830 条源属性,复盛站样本返回 2,034 构件、106,840 条源属性(与入库 112,942 条相差 2,034×3 个系统属性)。扁平属性无分组、顺序,故当前实现仍保留树枚举 + getElementParam。导出接口返回 key 但教程下载路径 404,待厂商确认。
同日实施:BlackHoleClient 新增 dataSetFileData 适配;单文件数据集直接采用整文件清单,多文件数据集保留目录树归属并与整文件清单核对;逐构件核对分组源属性条数(扣除 构件Id、构件名称、上传文件名称 三个系统属性)等于整文件扁平属性条数。新增 3 个解析单测,BIM 模块 39 个定向用例全部通过;真实开发引擎完整解析探针 435/435 构件、12,135 条属性通过(探针运行后删除,不作为常规回归)。厂商 2026-11-10 确认:全量属性没有分组,只有转换成功的数据集可查询;当前单文件路径在转换成功后调用,与确认一致。
2026-11-10 预览生命周期修复:定位到卸载时调用不存在的 Engine.destroy、四个 document 引擎事件未移除、sdkReady 前引擎创建事件导致加载队列不启动。改为命名监听并在卸载时解绑、releaseEngine(true) 后清空 window.BlackHole3D、sdkReady 后补启动队列、预览路由 noCache。浏览器实测首次预览与关闭标签后再次进入均加载成功并显示真实几何;前端定向 lint 0 问题;vue-tsc 仅剩另一任务 flowForm.vue 的既有类型错误,本文件无类型错误。releaseEngine(true) 后重新创建引擎的 RESystemReady/RESystemEngineCreated 已在浏览器探针中验证。
7. 验收结论
首期以 RVT 为交付收口格式,PAK 支持按用户决定延期。开发环境与生产环境的基础配置、项目隔离、同源反代与六表结构均已就绪。 本轮收口强化了多模型并发加载容错、构件作用域与定位精度、树展开分类逻辑、专业轻量筛选与超千构件查询防护,并通过自动化测试固化了资产服务、任务状态机、全量核查及工程引用保护逻辑。 生产已完成发布与接口层验证,待具备网络条件及真实生产业务模型时进行最终业务验收。