主题
BIM引擎底座 · 数据库设计
文档版本:0.36 | 最近核对日期:2026-11-09
1. 基线与设计边界
本文给出首期六张表的完整字段设计,覆盖模型资产、版本、处理任务、内部文件、全量构件及属性。2026-11-08 已按本文结构通过项目纳管入口在开发库建表并回读:6 张表、27 项约束(主键/唯一/检查)、8 个命名索引全部就位,列数与字段矩阵一致(模型资产 9、版本 22、任务 29、内部文件 11、构件 10、属性 14,含 BaseEntity 审计列)。生产库未访问、未建表。
| 核对对象 | 开发库实际事实 | 本设计采用方式 |
|---|---|---|
BIM_MODEL、BIM_MODEL_VERSION、BIM_PROCESS_TASK、BIM_MODEL_FILE、BIM_ELEMENT、BIM_ELEMENT_PROPERTY | 2026-11-08 经纳管入口按本文建表;回读列数 9/22/29/11/10/14,约束 27 项、命名索引 8 个 | 已建成,字段矩阵即实际结构 |
BIZ_UNIT_PROJECT.UNIT_PROJECT_ID | BIGINT,非空 | 模型唯一工程归属逻辑外键 |
BIZ_UNIT_PROJECT.LINE_ID/BID_ID/SITE_ID | BIGINT,非空 | 从单位工程关联解析工程范围,不复制到BIM_MODEL |
BIZ_UNIT_PROJECT.MAJOR_CODE | VARCHAR(64),非空 | 从单位工程继承标准专业,不重复录入 |
BIZ_SITE_MASTER.SITE_MASTER_ID | BIGINT,非空 | 通过单位工程关联工点,用于汇总 |
BIZ_SITE_MASTER.LINE_ID | BIGINT,允许空 | 业务服务核对实际线路关系;不能假设数据库保证非空 |
BIZ_MAJOR_DICT.ID | VARCHAR(64),非空 | 不转为 Long,不作为模型专业字段 |
BIZ_MAJOR_DICT.MAJOR_CODE | VARCHAR(64),非空 | 单位工程专业对应标准字典,BIM不另存归属编码 |
SYS_OSS.OSS_ID | NUMBER,DATA_LENGTH=22,非空 | 复用文件记录;实体映射为 Long |
SYS_MENU BIM相关记录 | 原 10 行禁用旧记录;本次启用「BIM底座/模型管理」及四个按钮,删除旧进度任务与 bim:model:view 共 5 行,新增 bim:model:edit/submit/download/preview 四行 | 仅保留本模块入口,不恢复旧进度任务 |
2026-11-08 实测补充:DM8 空字符串不折叠为 NULL('' IS NULL 为假),DBMS_LOB.SUBSTR(clob, n, 1) 可用于 CLOB 有界比较;属性筛选按此实现,更换数据库时需复核该适配点。
2. 关系与通用约定
版本的 CURRENT_TASK_ID 指向当前处理尝试,ACCEPTED_TASK_ID 指向已完整核查的解析快照;资产的 CURRENT_VERSION_ID 指向当前发布版本。它们必须指向自身下属记录,不允许跨资产或跨版本引用。
- 主键为平台雪花 ID,逻辑类型 Long,目标 DM8 类型 BIGINT;浏览器不得数字化转换。
LFK表示逻辑外键,服务端校验引用与归属,本版不假定建立物理外键,也不设计级联删除。PK、UK、I分别表示主键、联合唯一约束及普通索引。- 以下矩阵每表包含 BaseEntity 五个持久化审计列。
params等非持久化辅助字段不建列。无租户、审批或独立组织权限需求,不建 tenant_id、流程实例字段或另一套授权表。 - “无”表示无数据库默认值,填充值由表中来源指定。当前首期无删除动作,不增设无来源的逻辑删除字段;历史版本及失败任务暂保留。
- 所有行“核验”均为“已建(2026-11-08)”;列、约束与索引经开发库回读一致。VARCHAR 长度为实际定义,中文字符按 UTF-8 存储。
- 时间由应用审计/业务服务填充。任务执行采用原发起人审计上下文,不凭空使用用户 0;创建部门允许空,以平台现有用户上下文为准。
- CLOB 存放原始大文本,不要求数据库 JSON 扩展。跨人大金仓、openGauss 的 CLOB 映射、空字符串、排序规则和索引长度需专项验证,不把 DM8 方言变成业务规则。
3. 完整字段矩阵
3.1 BIM_MODEL:模型资产
对应R-BIM-001~005、资产接口。模型唯一归属为UNIT_PROJECT_ID;工点、标段、线路和专业通过单位工程解析。此前草稿的SITE_MASTER_ID、MAJOR_CODE从目标模型表移除,不建立双写、兼容字段或归属快照。开发库此前未建BIM表,本次是目标设计修订,不是已执行数据迁移。
| 字段 | 中文含义 | 逻辑类型 | DM8类型 | 长度/精度 | 可空 | 默认 | 键/索引 | 来源/生成规则 | 核验 |
|---|---|---|---|---|---|---|---|---|---|
| MODEL_ID | 模型资产ID | Long | BIGINT | 64位 | 否 | 无 | PK | 雪花ID | 已建 |
| UNIT_PROJECT_ID | 所属单位工程ID | Long | BIGINT | 64位 | 否 | 无 | LFK;I_UNIT | 导航选定单位工程,后端核对有效性及专属权限 | 已建 |
| MODEL_NAME | 模型名称及局部范围 | String | VARCHAR | 256 | 否 | 无 | 无 | 用户填写 | 已建 |
| CURRENT_VERSION_ID | 当前发布版本ID | Long | BIGINT | 64位 | 是 | 无 | LFK | 发布事务更新 | 已建 |
| CREATE_DEPT | 创建部门 | Long | BIGINT | 64位 | 是 | 无 | 无 | BaseEntity审计 | 已建 |
| CREATE_BY | 创建人 | Long | BIGINT | 64位 | 否 | 无 | 无 | BaseEntity审计 | 已建 |
| CREATE_TIME | 创建时间 | DateTime | TIMESTAMP | 6 | 否 | 无 | 无 | BaseEntity审计 | 已建 |
| UPDATE_BY | 最后更新人 | Long | BIGINT | 64位 | 否 | 无 | 无 | BaseEntity审计 | 已建 |
| UPDATE_TIME | 最后更新时间 | DateTime | TIMESTAMP | 6 | 否 | 无 | 无 | BaseEntity审计 | 已建 |
3.2 BIM_MODEL_VERSION:原文件与业务版本
对应 R-BIM-010、030~034。每个平台版本对应独立黑洞数据集;版本号仅在本资产内递增。
| 字段 | 中文含义 | 逻辑类型 | DM8类型 | 长度/精度 | 可空 | 默认 | 键/索引 | 来源/生成规则 | 核验 |
|---|---|---|---|---|---|---|---|---|---|
| VERSION_ID | 模型版本ID | Long | BIGINT | 64位 | 否 | 无 | PK | 雪花ID | 已建 |
| MODEL_ID | 所属模型资产 | Long | BIGINT | 64位 | 否 | 无 | LFK;UK_VER首列 | 资产接口上下文 | 已建 |
| VERSION_NO | 业务版本序号 | Integer | INT | 32位 | 否 | 无 | UK_VER次列 | 资产内从1递增 | 已建 |
| SOURCE_OSS_ID | 原文件记录ID | Long | BIGINT | 64位 | 否 | 无 | LFK | 本次成功上传的SYS_OSS记录 | 已建 |
| SOURCE_NAME | 原始文件名快照 | String | VARCHAR | 1024 | 否 | 无 | 无 | 上传文件名,经安全处理 | 已建 |
| SOURCE_FORMAT | 原文件格式 | Enum | VARCHAR | 8 | 否 | 无 | CHECK | 既有RVT/PAK枚举保留;本期验收RVT,PAK支持延期,不因延期修改既有约束或清理记录 | 已建 |
| SOURCE_SIZE | 原文件字节数 | Long | BIGINT | 64位 | 否 | 无 | CHECK非负 | 文件存储实际结果 | 已建 |
| CURRENT_TASK_ID | 当前处理任务 | Long | BIGINT | 64位 | 是 | 无 | LFK | 建立或重新处理时设置 | 已建 |
| ACCEPTED_TASK_ID | 完整解析快照任务 | Long | BIGINT | 64位 | 是 | 无 | LFK | 全量核查通过后设置 | 已建 |
| ENGINE_DATASET_ID | 服务端数据集标识 | String | VARCHAR | 128 | 是 | 无 | UK_DATASET | 黑洞创建结果,保留原值 | 已建 |
| ENGINE_VERSION | 成功转换的引擎版本号 | Integer | INT | 32位 | 是 | 无 | 无 | 黑洞转换成功结果 | 已建 |
| ENGINE_RES_ID | 几何资源标识 | String | VARCHAR | 128 | 是 | 无 | 无 | viewDataSetModel结果 | 已建 |
| VIEW_CONFIG | 资源与坐标描述快照 | Object | CLOB | 大文本 | 是 | 无 | 无 | 适配器白名单字段,不存凭据 | 已建 |
| STABLE_ID_SUPPORT | 引擎稳定标识能力 | Enum | VARCHAR | 16 | 否 | UNKNOWN | CHECK | UNKNOWN/SUPPORTED/UNSUPPORTED | 已建 |
| INSPECTION_CONFIRMED | 发布检查确认 | Boolean | CHAR | 1 | 否 | 0 | CHECK | 发布时写1 | 已建 |
| PUBLISHED_BY | 发布人 | Long | BIGINT | 64位 | 是 | 无 | LFK用户 | 当前登录人员 | 已建 |
| PUBLISHED_AT | 首次发布时间 | DateTime | TIMESTAMP | 6 | 是 | 无 | 无 | 发布事务填充 | 已建 |
| CREATE_DEPT | 创建部门 | Long | BIGINT | 64位 | 是 | 无 | 无 | BaseEntity审计 | 已建 |
| CREATE_BY | 创建人 | Long | BIGINT | 64位 | 否 | 无 | 无 | BaseEntity审计 | 已建 |
| CREATE_TIME | 创建时间 | DateTime | TIMESTAMP | 6 | 否 | 无 | 无 | BaseEntity审计 | 已建 |
| UPDATE_BY | 最后更新人 | Long | BIGINT | 64位 | 否 | 无 | 无 | BaseEntity审计 | 已建 |
| UPDATE_TIME | 最后更新时间 | DateTime | TIMESTAMP | 6 | 否 | 无 | 无 | BaseEntity审计 | 已建 |
VIEW_CONFIG 仅包含受控资源相对定位、场景内容、scale/rotate/translation、坐标系与基点等经适配确认的字段;认证信息及部署服务器地址由运行配置提供。不能存储任意脚本、任意代理目标或管理员凭据。
3.3 BIM_PROCESS_TASK:一次处理尝试
对应 R-BIM-011~015。每次重新处理新建记录;任务计数是完整性核查证据,不另建同步进度表。
| 字段 | 中文含义 | 逻辑类型 | DM8类型 | 长度/精度 | 可空 | 默认 | 键/索引 | 来源/生成规则 | 核验 |
|---|---|---|---|---|---|---|---|---|---|
| TASK_ID | 处理任务ID | Long | BIGINT | 64位 | 否 | 无 | PK | 雪花ID | 已建 |
| VERSION_ID | 所属版本 | Long | BIGINT | 64位 | 否 | 无 | LFK;UK_ATTEMPT首列 | 版本服务 | 已建 |
| ATTEMPT_NO | 版本内尝试序号 | Integer | INT | 32位 | 否 | 无 | UK_ATTEMPT次列 | 从1递增 | 已建 |
| TASK_STATUS | 任务状态 | Enum | VARCHAR | 16 | 否 | PENDING | I_TASK首列;CHECK | PENDING/RUNNING/SUCCEEDED/FAILED | 已建 |
| TASK_PHASE | 当前处理阶段 | Enum | VARCHAR | 16 | 否 | REGISTER | CHECK | REGISTER/UPLOAD/CONVERT/PARSE/CHECK | 已建 |
| ENGINE_STATUS | 引擎转换原始状态 | Integer | INT | 32位 | 是 | 无 | 无 | 转换状态接口原值 | 已建 |
| ENGINE_DATASET_ID | 本次尝试的服务端数据集 | String | VARCHAR | 128 | 是 | 无 | 无 | 上传申请返回或经核实复用版本映射;保留尝试历史 | 已建 |
| ENGINE_VERSION | 本次解析的引擎版本 | Integer | INT | 32位 | 是 | 无 | 无 | 开始解析前固定成功转换版本 | 已建 |
| ENGINE_SOURCE_FILE_ID | 引擎管理端源文件ID | String | VARCHAR | 128 | 是 | 无 | 无 | createInFolder返回fileId;不是hostFileId | 已建 |
| ENGINE_UPLOAD_ID | 引擎上传记录ID | String | VARCHAR | 128 | 是 | 无 | 无 | createInFolder返回fileDataId | 已建 |
| ENGINE_UPLOAD_KEY | 引擎上传处理标识 | String | VARCHAR | 512 | 是 | 无 | 无 | 后台上传路线保存为 fileKey|savePath,仅供服务端映射传输与通知完成使用,不返回前端 | 已建 |
| CHUNK_SIZE | 本次分片大小字节数 | Long | BIGINT | 64位 | 是 | 无 | CHECK正数 | 申请上传前固定 | 已建 |
| CHUNK_COUNT | 本次总分片数 | Integer | INT | 32位 | 是 | 无 | CHECK正数 | 按源文件字节数计算 | 已建 |
| LAST_CONFIRMED_CHUNK | 最后明确成功的分片索引 | Integer | INT | 32位 | 是 | 无 | 无 | 从未成功为空;起点依据已验证协议 | 已建 |
| PROGRESS | 当前阶段百分比 | Decimal | DECIMAL | 5,2 | 是 | 无 | CHECK范围0~100 | 实际进度,未知为空 | 已建 |
| EXPECTED_FILES | 预期内部文件数 | Long | BIGINT | 64位 | 是 | 无 | 无 | 文件枚举完成后统计 | 已建 |
| COMPLETED_FILES | 已完整解析文件数 | Long | BIGINT | 64位 | 否 | 0 | 无 | 完整性核查累计 | 已建 |
| EXPECTED_ELEMENTS | 枚举所得构件总数 | Long | BIGINT | 64位 | 是 | 无 | 无 | 全文件枚举完成后统计 | 已建 |
| COMPLETED_ELEMENTS | 身份与属性读取完成构件数 | Long | BIGINT | 64位 | 否 | 0 | 无 | 包含成功读取空属性的构件 | 已建 |
| PROPERTY_COUNT | 已写入属性条数 | Long | BIGINT | 64位 | 否 | 0 | 无 | 与源响应累计及DB回读核对 | 已建 |
| ERROR_CODE | 失败分类 | String | VARCHAR | 64 | 是 | 无 | 无 | 平台异常分类 | 已建 |
| ERROR_MESSAGE | 脱敏失败说明 | String | VARCHAR | 2000 | 是 | 无 | 无 | 保留阶段和对象定位,不含凭据 | 已建 |
| STARTED_AT | 开始处理时间 | DateTime | TIMESTAMP | 6 | 是 | 无 | 无 | 首次执行时填充 | 已建 |
| FINISHED_AT | 完成或失败时间 | DateTime | TIMESTAMP | 6 | 是 | 无 | 无 | 终态时填充 | 已建 |
| CREATE_DEPT | 创建部门 | Long | BIGINT | 64位 | 是 | 无 | 无 | BaseEntity审计 | 已建 |
| CREATE_BY | 创建人 | Long | BIGINT | 64位 | 否 | 无 | 无 | 原处理发起人 | 已建 |
| CREATE_TIME | 创建时间 | DateTime | TIMESTAMP | 6 | 否 | 无 | I_TASK次列 | BaseEntity审计 | 已建 |
| UPDATE_BY | 最后更新人 | Long | BIGINT | 64位 | 否 | 无 | 无 | 保留任务审计上下文 | 已建 |
| UPDATE_TIME | 最后更新时间 | DateTime | TIMESTAMP | 6 | 否 | 无 | 无 | BaseEntity审计 | 已建 |
上传映射由成功远端响应填充后才推进阶段。ENGINE_UPLOAD_KEY 不进入 VO、普通日志或错误提示;字段存储只对后端服务账号开放。重试若复用已确认的远端文件,复制必要映射到新任务,并校验它属于同一版本。LAST_CONFIRMED_CHUNK 仅证明已确认部分,不证明响应超时的下一片未被接收;恢复须查询远端事实。ENGINE_DATASET_ID/ENGINE_VERSION 是任务历史快照,不能因版本当前映射调整而回写历史任务。
3.4 BIM_MODEL_FILE:解析快照内的文件
同一上传文件转换后可能包含多个内部文件。TASK_ID 固定快照,ENGINE_FILE_ID 只在本次快照内解释。
| 字段 | 中文含义 | 逻辑类型 | DM8类型 | 长度/精度 | 可空 | 默认 | 键/索引 | 来源/生成规则 | 核验 |
|---|---|---|---|---|---|---|---|---|---|
| FILE_ID | 平台内部文件ID | Long | BIGINT | 64位 | 否 | 无 | PK | 雪花ID | 已建 |
| TASK_ID | 所属解析任务快照 | Long | BIGINT | 64位 | 否 | 无 | LFK;UK_FILE首列 | 处理任务 | 已建 |
| ENGINE_FILE_ID | 引擎文件索引原值 | String | VARCHAR | 128 | 否 | 无 | UK_FILE次列 | fileIntId/hostFileId经适配校验 | 已建 |
| SOURCE_UID | 引擎返回的文件唯一标识 | String | VARCHAR | 512 | 是 | 无 | 无 | uniqueId原值,不假设跨版稳定 | 已建 |
| FILE_NAME | 内部文件名称 | String | VARCHAR | 1024 | 否 | 无 | 无 | 内部文件名称(格式如 {源文件名}_V{版本号}.{扩展名}) | 已建 |
| LAZY_LOADING | 目录树逐级读取标志 | Boolean | CHAR | 1 | 否 | 无 | CHECK | enableLazyLoading转换0/1 | 已建 |
| CREATE_DEPT | 创建部门 | Long | BIGINT | 64位 | 是 | 无 | 无 | 任务审计上下文 | 已建 |
| CREATE_BY | 创建人 | Long | BIGINT | 64位 | 否 | 无 | 无 | 任务审计上下文 | 已建 |
| CREATE_TIME | 创建时间 | DateTime | TIMESTAMP | 6 | 否 | 无 | 无 | BaseEntity审计 | 已建 |
| UPDATE_BY | 最后更新人 | Long | BIGINT | 64位 | 否 | 无 | 无 | 任务审计上下文 | 已建 |
| UPDATE_TIME | 最后更新时间 | DateTime | TIMESTAMP | 6 | 否 | 无 | 无 | BaseEntity审计 | 已建 |
3.5 BIM_ELEMENT:全量构件
对应 R-BIM-012、023、033。不会用稳定标识去重;平台主键表示快照构件实例,不表示跨版本实体。
| 字段 | 中文含义 | 逻辑类型 | DM8类型 | 长度/精度 | 可空 | 默认 | 键/索引 | 来源/生成规则 | 核验 |
|---|---|---|---|---|---|---|---|---|---|
| ELEMENT_ID | 平台构件ID | Long | BIGINT | 64位 | 否 | 无 | PK | 雪花ID | 已建 |
| FILE_ID | 所属内部文件 | Long | BIGINT | 64位 | 否 | 无 | LFK;UK_ELEMENT首列 | 文件解析上下文 | 已建 |
| RUNTIME_ELEMENT_ID | 引擎构件运行时标识 | String | VARCHAR | 128 | 否 | 无 | UK_ELEMENT次列 | elementIntId原值字符串化保存 | 已建 |
| STABLE_ID | 候选稳定构件标识 | String | VARCHAR | 512 | 是 | 无 | 无 | elementGuidId等已核实字段原值 | 已建 |
| ELEMENT_NAME | 原始构件名称 | String | VARCHAR | 1024 | 是 | 无 | 无 | 引擎构件信息,不自行生成业务名 | 已建 |
| CREATE_DEPT | 创建部门 | Long | BIGINT | 64位 | 是 | 无 | 无 | 任务审计上下文 | 已建 |
| CREATE_BY | 创建人 | Long | BIGINT | 64位 | 否 | 无 | 无 | 任务审计上下文 | 已建 |
| CREATE_TIME | 创建时间 | DateTime | TIMESTAMP | 6 | 否 | 无 | 无 | BaseEntity审计 | 已建 |
| UPDATE_BY | 最后更新人 | Long | BIGINT | 64位 | 否 | 无 | 无 | 任务审计上下文 | 已建 |
| UPDATE_TIME | 最后更新时间 | DateTime | TIMESTAMP | 6 | 否 | 无 | 无 | BaseEntity审计 | 已建 |
3.6 BIM_ELEMENT_PROPERTY:原始分组属性
属性名称不作为唯一键。GROUP_ORDER、PROPERTY_ORDER 是完整响应中的出现次序,即使名称相同也能保留。保留无名称、无分组或空值原始项;UI 可显示缺失提示,但不将提示文字写回原值。
| 字段 | 中文含义 | 逻辑类型 | DM8类型 | 长度/精度 | 可空 | 默认 | 键/索引 | 来源/生成规则 | 核验 |
|---|---|---|---|---|---|---|---|---|---|
| PROPERTY_ID | 属性记录ID | Long | BIGINT | 64位 | 否 | 无 | PK | 雪花ID | 已建 |
| ELEMENT_ID | 所属平台构件 | Long | BIGINT | 64位 | 否 | 无 | LFK;UK_PROPERTY首列 | 构件解析上下文 | 已建 |
| GROUP_ORDER | 分组出现次序 | Integer | INT | 32位 | 否 | 无 | UK_PROPERTY次列 | 按响应顺序从1编号 | 已建 |
| GROUP_NAME | 原始属性分组 | String | VARCHAR | 512 | 是 | 无 | 无 | paramGroup原值 | 已建 |
| PROPERTY_ORDER | 组内属性次序 | Integer | INT | 32位 | 否 | 无 | UK_PROPERTY末列 | 按响应顺序从1编号 | 已建 |
| PROPERTY_NAME | 原始属性名称 | String | VARCHAR | 512 | 是 | 无 | 无 | paramName原值 | 已建 |
| VALUE_KIND | 原值空值标记 | Enum | VARCHAR | 8 | 否 | 无 | CHECK | NULL或TEXT | 已建 |
| RAW_VALUE | 原始属性值 | String | CLOB | 大文本 | 是 | 无 | 无 | paramValue原值;不转浮点 | 已建 |
| UNIT_TEXT | 原始单位描述 | String | VARCHAR | 512 | 是 | 无 | 无 | 已核实的paramType单位文本 | 已建 |
| CREATE_DEPT | 创建部门 | Long | BIGINT | 64位 | 是 | 无 | 无 | 任务审计上下文 | 已建 |
| CREATE_BY | 创建人 | Long | BIGINT | 64位 | 否 | 无 | 无 | 任务审计上下文 | 已建 |
| CREATE_TIME | 创建时间 | DateTime | TIMESTAMP | 6 | 否 | 无 | 无 | BaseEntity审计 | 已建 |
| UPDATE_BY | 最后更新人 | Long | BIGINT | 64位 | 否 | 无 | 无 | 任务审计上下文 | 已建 |
| UPDATE_TIME | 最后更新时间 | DateTime | TIMESTAMP | 6 | 否 | 无 | 无 | BaseEntity审计 | 已建 |
VALUE_KIND=NULL 表示源值 null;TEXT 表示源字符串,允许空字符串。若数据库把空串折叠为 null,TEXT+RAW_VALUE为空仍回读为空字符串,NULL+RAW_VALUE为空才回读 null。此规则需在目标数据库用真实驱动验证。若引擎返回非字符串值,适配器先确认契约并补充无损类型设计,不静默强制转成某种数值格式。
4. 索引、约束与读取方式
| 目标约束/索引 | 表与列 | 对应读写用途 |
|---|---|---|
| PK | 各表自身ID | 对象定位 |
| I_UNIT | BIM_MODEL(UNIT_PROJECT_ID) | 单位工程模型查询、引用检查及关联工程范围过滤 |
| UK_VER | BIM_MODEL_VERSION(MODEL_ID, VERSION_NO) | 业务版本唯一 |
| UK_DATASET | BIM_MODEL_VERSION(ENGINE_DATASET_ID) | 每业务版本独立数据集;空值不参与业务唯一性判断 |
| UK_ATTEMPT | BIM_PROCESS_TASK(VERSION_ID, ATTEMPT_NO) | 处理尝试唯一及历史查询 |
| I_TASK | BIM_PROCESS_TASK(TASK_STATUS, CREATE_TIME) | 任务设施扫描待处理记录 |
| UK_FILE | BIM_MODEL_FILE(TASK_ID, ENGINE_FILE_ID) | 快照内文件唯一 |
| UK_ELEMENT | BIM_ELEMENT(FILE_ID, RUNTIME_ELEMENT_ID) | 文件内运行时构件唯一 |
| UK_PROPERTY | BIM_ELEMENT_PROPERTY(ELEMENT_ID, GROUP_ORDER, PROPERTY_ORDER) | 保留重复名称属性,按构件读取 |
唯一约束保护的是已确认身份,不是额外并发设计。不建立单位工程模型唯一约束、工点+专业唯一约束或全库稳定构件ID唯一约束。导航和列表关联有效BIZ_UNIT_PROJECT,按同线整线或实际标段工点组合授权过滤,再施加节点范围;不分别对bidId与siteId做OR放行。导航单位工程数与模型数分别去重,不能因版本/构件联接重复累计。属性检索先限定授权模型及版本快照,再用EXISTS匹配属性,构件分页和总数使用同一条件。首期不引入搜索引擎、物化统计表或全局属性倒排索引;实际规模证据显示不足时再定向优化。
单位工程存在模型资产引用即禁止删除,包括标段范围/专业调整和删除标段的间接删除;由工程服务经API契约查询I_UNIT支持的引用事实,在原工程事务中拒绝,不设计数据库级联删除。单位工程名称等合法编辑实时反映在模型归属展示,不变更模型ID。此保护尚待应用实现,不能当作现有数据库约束。
业务约束:版本号和尝试号大于0,任务计数非负,枚举值在明确范围内;发布人、时间、检查确认必须成组有效。被接受的任务必须属于本版本且状态成功;当前发布版本必须属于本资产且已发布。上述跨行关系由同一应用服务事务保证,建表后补充与实际数据库约束一致的记录。
5. 快照、恢复与继承
重新处理未发布版本时,建立新任务并清空该版本 ACCEPTED_TASK_ID;需要重新转换时才清空失效的资源描述。只有解析失败而转换成果仍有效时,复用该数据集及固定引擎版本,从 PARSE 开始建立新快照。失败任务的文件、构件、属性保留,但任何普通查询只沿版本 ACCEPTED_TASK_ID 读取完整快照。已发布版本禁止重新处理,新增文件须建立新版本。
已确认失效的未发布远端上传可重新登记,版本只保留一个当前有效数据集;原失败尝试的远端映射留在任务记录中。禁止复用另一个平台版本的数据集,也禁止因相同原文件名覆盖其他版本。阶段恢复条件见详细设计。
稳定标识继承只预留事实:资产 ID、文件原始身份、候选稳定构件 ID 及引擎能力。首期不建业务关联表、继承结果表或冲突工单表。后续即使能力为 SUPPORTED,也要核对文件身份以及两版标识唯一性;本期没有自动继承业务关联的实际执行结果。
6. 实施变更与环境记录
| 项目 | 当前状态 | 实施与回读结果 |
|---|---|---|
| 六张BIM业务表 | 开发库已建(2026-11-08);生产未建 | 经纳管入口执行 12 条 DDL(6 表 + 6 索引);回读 6 表、27 项约束、8 个命名索引,列数与矩阵一致 |
| 单位工程/工点/专业/文件依赖 | 已核对相关列,未修改共享结构 | 单位工程有效性、工程关联与 OSS 映射按现状复用;应用侧补引用保护(三处删除入口) |
| BIM菜单 | 已更新(2026-11-08) | 启用「BIM底座 → 模型管理」及 bim:model:query/add/upload/publish;删除旧进度任务 4 行与 bim:model:view 1 行;新增 bim:model:edit/submit/download/preview 4 行并绑定超级管理员与既有角色 |
| 开发数据 | 已写入测试资产与版本 | 1 个单位工程下「主体结构」资产及 RVT 首版;任务尝试记录含一次认证失败与转换中状态;DML 影响行数逐条回读 |
| 生产结构与应用发布 | 未访问、未执行 | 获具体发布授权后回读生产现状;不能照搬开发实际差异或清理未知历史 |
本次没有数据库发布包或可恢复备份。后续发布应按“核实目标与备份 → 建立结构 → 部署应用与资源访问配置 → 配置菜单权限 → 真实样本验证”的顺序执行;故障时先停用新入口、保留原文件及已生成数据,不通过删除共享表或覆盖业务数据回退。数据库操作统一遵循环境配置与运行。
2026-11-09 生产菜单对齐
已通过项目 MCP 清除生产旧进度图模关联菜单及 3 个按钮、旧 bim:model:view 按钮,新增 4 个模型操作权限按钮并同步对应角色菜单关联;具体范围及回读见系统设置数据库设计。本次仅处理菜单授权,未核查或部署生产 BIM 应用与业务表;上述历史生产结构状态不能视为本次回读结论。