主题
规划管理 · 数据库设计文档
字段中文含义参考 2026-11-02 开发库、生产库只读回读的字段注释及原有业务资料;历史物理结构、核验日期和设计差异仍以各表原记录为准。
文档版本:1.00 | 最近核对日期:2026-09-20
本文记录规划管理模块 13 张
biz_planning_*表的实际字段矩阵。所有字段、类型、长度、可空性与默认值来自项目 MCPdcp-dm8-dev对开发库的只读回读(2026-09-20),并与当前实体代码逐项比对一致;设计草案中尚未落地的预留内容单列于第 5 节,未核对内容按"待核对"标注,不以设计稿猜测补齐。
1. 设计范围与核验状态
| 项目 | 内容 |
|---|---|
| 模块名称 | 规划管理(5 个业务模块 + 专题类型目录 + 办理页族) |
| 设计数据库 | 逻辑类型:可迁移;物理类型:按当前开发库(DM8)回读记录 |
| 数据库交付基线 | 13 张业务表由本轮开发通过项目 MCP dcp-dm8-dev 建立在开发库 DIGITAL_CONSTRUCTION 模式;本模块不新增平台级持久化表,不修改既有平台表 |
| 实体/Mapper 来源 | digital-construction-modules/digital-construction-business/src/main/java/com/bokun/business/planning/domain/(13 个实体)与 …/planning/mapper/(14 个业务 Mapper + PlanningWorkflowQueryMapper) |
| MCP 结构核验 | 2026-09-20 由文档 Agent 只读回读:USER_TABLES(13 张)、USER_TAB_COLUMNS(逐表列清单)、USER_CONSTRAINTS/USER_CONS_COLUMNS(约束)、USER_INDEXES/USER_IND_COLUMNS(索引)、SYS_DICT_DATA(规划管理字典)、FLOW_DEFINITION(规划管理流程定义) |
| 数据库核验状态 | 已按实际库核对(13 张表、237 个列、13 个主键约束、2 个唯一约束、12 个具名普通索引) |
| 本次未执行的数据库动作 | 本次核对为只读;本轮 DDL 已在开发库执行(时间与内容见第 6 节),本次未执行任何 DDL/DML |
| 目标数据库兼容 | 当前 DM8 只是运行环境;人大金仓、openGauss 等目标库的兼容风险见第 6 节,DM8 专属写法的实际范围已逐项标注 |
回读口径说明:
- 本矩阵的"长度/精度"对
VARCHAR为字符长度;BIGINT/INT/CHAR/DATE/TIMESTAMP由 MCP 返回的DATA_LENGTH是存储字节宽度(分别为 8/4/1/3/8),不是业务精度,因此这三类字段的长度列记为"—",精度差异见第 6 节。 - "可空"与"默认值"完全以开发库实际结构为证据;业务上提交时必填的字段与数据库
NOT NULL是两件事,本模块多数业务字段在数据库层可空、由服务端校验保证(见第 5 节)。 - 13 张表均为本轮新建,回读覆盖全部列,无"待核对"列;设计与实际的差异集中在约束、预留字段与可空性,见第 5 节。
2. 实体关系
text
biz_planning_task 1 ── N biz_planning_task_project (任务 → 关联项目/线路,多选)
biz_planning_task 1 ── N biz_planning_task_topic (任务 → 关联专题类型,多选)
biz_planning_task 1 ── 1 biz_planning_stage_record (每条任务 1 条阶段记录,SEQ_NO 恒为 1)
biz_planning_task 1 ── N biz_planning_process_instance (任务 → 流程实例登记,含重启后的多实例)
biz_planning_stage_record 1 ── 1 biz_planning_result_version (阶段记录 → 成果版本,VERSION_NO 从 1 起)
biz_planning_result_version 1 ── N biz_planning_result_item (成果版本 → 成果明细行)
biz_planning_task 1 ── N biz_planning_attachment_ref (业务附件引用,按 BIZ_TYPE/BIZ_ID 归属)
biz_planning_result_item 1 ── N biz_planning_attachment_ref (明细行附件,按 ITEM_ID 归属)
biz_planning_task 1 ── N biz_planning_consultation_batch (意见征求批次,一轮一条)
biz_planning_consultation_batch 1 ── N biz_planning_consultation_task (批次 → 单个部门意见)
biz_planning_task 1 ── N biz_planning_approval_record (审批记录,逐节点一条)
biz_planning_topic_type 1 ── N biz_planning_topic_project (专题类型 → 关联项目)关联约定与删除策略:
- 全部为逻辑外键,数据库不建立外键约束:13 张表只有主键约束与 2 个唯一约束,无
FOREIGN KEY。跨表一致性由服务端在事务内保证,避免跨版本迁移被外键阻断,与平台既有业务表做法一致。 - 逻辑删除:
DEL_FLAG CHAR(1)默认'0',全部表均由 MyBatis-Plus@TableLogic生效;不物理删除业务记录,允许保留指向已逻辑删除记录的关联行(孤儿记录在列表中按主表过滤,不影响统计)。 - 阶段记录与成果版本按任务唯一:
biz_planning_stage_record每条任务 1 条(SEQ_NO恒为 1),biz_planning_result_version每条阶段记录 1 条由数据库唯一约束UK_BIZ_PLANNING_VERSION(STAGE_RECORD_ID, VERSION_NO)保证;需要新阶段时新建阶段任务,不在同一任务内追加阶段记录或版本。 - 流程实例唯一性:
UK_BIZ_PLANNING_INSTANCE_BUSINESS(BUSINESS_ID)保证实例业务标识{阶段记录ID}#{实例序号}唯一;"同一阶段记录只有一条IS_CURRENT='1'"由服务端在事务内保证(数据库侧只有(TASK_ID, IS_CURRENT)普通索引,未建条件唯一约束,见第 5 节)。 - 状态跟踪引用不建副本表:自动引用记录仍是
biz_planning_task的一行(SOURCE_TYPE = CONSTRUCTION_PLAN | FEASIBILITY_STUDY),不创建阶段记录、不创建成果版本、不启动流程;项目台账按biz_planning_task_project实时聚合,不复制业务数据。 - 成果与附件五层:业务任务 → 阶段记录 → 成果版本 → 成果明细 → 附件引用;附件只保存文件服务对象标识(
OSS_ID),不复制实体文件。
3. 全量字段矩阵
以下 13 张表覆盖数据库中实际存在的每一个列,包含页面不展示的公共审计列、逻辑删除、并发版本与预留字段。列名在数据库中为 DM8 默认的大写形式,实体属性名为对应驼峰形式。
3.1 biz_planning_task(业务任务主实体,5 个业务模块共用)
数据库 35 个列。建设规划与工可研究的编制/报审/批复各为一条独立任务。
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型 | 长度/精度 | 可空 | 默认值 | 主键/外键/唯一/索引 | 来源或生成规则 | 核心 | 核验状态/证据 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ID | 主键 | BIGINT | BIGINT | — | 否 | — | PK PK_BIZ_PLANNING_TASK | 雪花算法(idType: ASSIGN_ID) | 是 | 已按实际库核对(MCP 2026-09-20) |
| 2 | MODULE_TYPE | 业务模块类型 | VARCHAR | VARCHAR | 32 | 否 | — | — | 服务端按控制器资源写入 RESERVE/STATUS_TRACKING/NETWORK_PLAN/CONSTRUCTION_PLAN/FEASIBILITY_STUDY;字典 planning_module_type | 是 | 已按实际库核对 |
| 3 | TASK_NAME | 任务名称 | VARCHAR | VARCHAR | 300 | 否 | — | — | 表单输入;提交时服务端校验非空 | 是 | 已按实际库核对 |
| 4 | WORK_STAGE | 工作阶段 | VARCHAR | VARCHAR | 32 | 可 | NULL | — | COMPILATION/SUBMISSION/APPROVAL;单阶段模块(储备清单/状态跟踪/线网规划)与自动引用记录为空;字典 planning_work_stage | 是 | 已按实际库核对 |
| 5 | TOPIC_TYPE_ID | 首个专题类型 ID(兼容字段) | BIGINT | BIGINT | — | 可 | NULL | — | 专题类型改为多选后由关系表承载,本列保留首个专题的 ID 供旧筛选复用 | 否 | 已按实际库核对 |
| 6 | TOPIC_TYPE_NAME | 专题类型名称快照(顿号拼接) | VARCHAR | VARCHAR | 200 | 可 | NULL | — | 保存本次选中专题名称的顿号拼接快照,列表展示用 | 是 | 已按实际库核对 |
| 7 | SOURCE_TYPE | 来源模块编码 | VARCHAR | VARCHAR | 32 | 可 | NULL | — | 自动引用取来源模块编码 CONSTRUCTION_PLAN/FEASIBILITY_STUDY,手工新增为 MANUAL;非引用记录为空 | 是 | 已按实际库核对 |
| 8 | SOURCE_TASK_ID | 来源任务 ID | BIGINT | BIGINT | — | 可 | NULL | — | 自动引用时指向来源任务 | 否 | 已按实际库核对 |
| 9 | SOURCE_STAGE_RECORD_ID | 来源阶段记录 ID | BIGINT | BIGINT | — | 可 | NULL | — | 自动引用时指向来源阶段记录,并作为引用幂等判重键 | 是 | 已按实际库核对 |
| 10 | INITIATOR_TYPE | 发起方式 | VARCHAR | VARCHAR | 32 | 否 | — | — | SECONDARY_UNIT(二级单位)/GROUP(开投集团);由服务端按权限与用户部门归属复核后写入,前端参数不可信;字典 planning_initiator_type | 是 | 已按实际库核对 |
| 11 | INITIATOR_ORG_ID | 发起单位 ID | BIGINT | BIGINT | — | 可 | NULL | — | 由 PlanningInitiatorResolver 按用户部门归属解析 | 是 | 已按实际库核对 |
| 12 | INITIATOR_ORG_NAME | 发起单位名称快照 | VARCHAR | VARCHAR | 200 | 可 | NULL | — | 解析发起单位时保存名称快照 | 是 | 已按实际库核对 |
| 13 | INITIATOR_DEPT_ID | 发起部门 ID | BIGINT | BIGINT | — | 可 | NULL | — | 发起人部门 | 否 | 已按实际库核对 |
| 14 | INITIATOR_DEPT_NAME | 发起部门名称快照 | VARCHAR | VARCHAR | 200 | 可 | NULL | — | 发起时快照 | 否 | 已按实际库核对 |
| 15 | INITIATOR_USER_ID | 发起人用户 ID | BIGINT | BIGINT | — | 可 | NULL | — | 登录人 | 是 | 已按实际库核对 |
| 16 | INITIATOR_USER_NAME | 发起人姓名快照 | VARCHAR | VARCHAR | 100 | 可 | NULL | — | 发起时快照 | 否 | 已按实际库核对 |
| 17 | FILL_ORG_ID | 填报单位 ID | BIGINT | BIGINT | — | 可 | NULL | — | 表单必填;开投集团发起时为集团部门所属单位 | 是 | 已按实际库核对 |
| 18 | FILL_ORG_NAME | 填报单位名称快照 | VARCHAR | VARCHAR | 200 | 可 | NULL | — | 表单输入并保存快照,列表"填报单位"列展示 | 是 | 已按实际库核对 |
| 19 | FILL_USER_ID | 填报人用户 ID | BIGINT | BIGINT | — | 可 | NULL | — | 表单"填报人"选择写入 | 是 | 已按实际库核对 |
| 20 | FILL_USER_NAME | 填报人姓名快照 | VARCHAR | VARCHAR | 100 | 可 | NULL | — | 表单选择时快照 | 是 | 已按实际库核对 |
| 21 | FILL_TIME | 填报时间 | DATE | DATE | — | 可 | NULL | — | 表单"填报时间"填写,仅年月日语义 | 是 | 已按实际库核对 |
| 22 | BUSINESS_STATUS | 业务状态 | VARCHAR | VARCHAR | 32 | 否 | 'draft' | — | 复用平台 BusinessStatusEnum 稳定编码 draft/waiting/back/finish,由流程事件与服务端流转回写;字典 planning_business_status | 是 | 已按实际库核对 |
| 23 | INSTANCE_ID | 当前流程实例 ID | BIGINT | BIGINT | — | 可 | NULL | — | 提交或重启后由服务端回写;实例明细以 biz_planning_process_instance 为准 | 是 | 已按实际库核对 |
| 24 | CURRENT_NODE_CODE | 当前节点编码 | VARCHAR | VARCHAR | 64 | 可 | NULL | — | 流程事件携带的新节点编码回写 | 是 | 已按实际库核对 |
| 25 | CURRENT_NODE_NAME | 当前节点名称 | VARCHAR | VARCHAR | 200 | 可 | NULL | — | 与当前节点编码同时回写,列表"操作"与办理入口展示 | 否 | 已按实际库核对 |
| 26 | CURRENT_HANDLER_IDS | 当前办理人 ID 集合 | VARCHAR | VARCHAR | 500 | 可 | NULL | — | 逗号分隔;会签节点为本次选中部门接收人集合 | 否 | 已按实际库核对 |
| 27 | CURRENT_HANDLER_NAMES | 当前办理人姓名集合 | VARCHAR | VARCHAR | 500 | 可 | NULL | — | 与上一列同时回写,列表展示 | 否 | 已按实际库核对 |
| 28 | REMARK | 备注 | VARCHAR | VARCHAR | 1000 | 可 | NULL | — | 表单备注(原型未列出、本轮按既有实现保留) | 否 | 已按实际库核对 |
| 29 | VERSION | 并发版本 | INT | INT | — | 可 | 0 | — | 平台乐观锁字段 | 否 | 已按实际库核对 |
| 30 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | — | 可 | NULL | — | BaseEntity + InjectionMetaObjectHandler 自动填充 | 否 | 已按实际库核对 |
| 31 | CREATE_BY | 创建人 | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 32 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 33 | UPDATE_BY | 更新人 | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 34 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 35 | DEL_FLAG | 逻辑删除 | CHAR | CHAR | 1 | 可 | '0' | — | @TableLogic;数据库层可空(见第 5 节差异 1) | 否 | 已按实际库核对 |
性能提示:本表只有主键索引,列表查询条件 MODULE_TYPE/BUSINESS_STATUS/INITIATOR_TYPE 及排序字段均无索引。当前数据量(回读时点 31 行)无影响,列为遗留优化项(见第 5 节遗留问题)。
3.2 biz_planning_task_project(任务 ↔ 项目/线路,M:N)
数据库 12 个列。一份任务可关联多条线路/项目,不拆任务、不复制流程实例。
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型 | 长度/精度 | 可空 | 默认值 | 主键/外键/唯一/索引 | 来源或生成规则 | 核心 | 核验状态/证据 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ID | 主键 | BIGINT | BIGINT | — | 否 | — | PK PK_BIZ_PLANNING_TASK_PROJECT | 雪花算法 | 是 | 已按实际库核对 |
| 2 | TASK_ID | 任务 ID | BIGINT | BIGINT | — | 否 | — | IDX IDX_BIZ_PLANNING_TASK_PROJECT;逻辑外键 → biz_planning_task.ID | 任务创建/编辑时写入 | 是 | 已按实际库核对 |
| 3 | PROJECT_ID | 项目 ID | BIGINT | BIGINT | — | 否 | — | IDX IDX_BIZ_PLANNING_TASK_PROJECT_PROJ;逻辑外键 → biz_project.ID | 项目/线路选择器(已解耦的业务项目口径) | 是 | 已按实际库核对 |
| 4 | PROJECT_NAME | 项目名称快照 | VARCHAR | VARCHAR | 400 | 可 | NULL | — | 选择时保存名称快照,历史单据不随主数据改名 | 是 | 已按实际库核对 |
| 5 | PROJECT_CODE | 项目编码快照 | VARCHAR | VARCHAR | 64 | 可 | NULL | — | 选择时保存编码快照 | 否 | 已按实际库核对 |
| 6 | SORT_NO | 排序号 | INT | INT | — | 可 | 0 | — | 按表单选择顺序写入,用于顿号拼接展示 | 否 | 已按实际库核对 |
| 7 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | — | 可 | NULL | — | BaseEntity 自动填充 | 否 | 已按实际库核对 |
| 8 | CREATE_BY | 创建人 | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 9 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 10 | UPDATE_BY | 更新人 | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 11 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 12 | DEL_FLAG | 逻辑删除 | CHAR | CHAR | 1 | 可 | '0' | — | @TableLogic;编辑时按任务重建关联行 | 否 | 已按实际库核对 |
(TASK_ID, PROJECT_ID) 无唯一约束(仅两个普通索引),设计草案要求的唯一约束未落地,见第 5 节差异 2。
3.3 biz_planning_task_topic(任务 ↔ 专题类型,M:N,承载专题类型多选)
数据库 11 个列。本轮由单选改为多选后新增的关系表;2026-10-09 支持自定义专题后 TOPIC_TYPE_ID 放开非空(模板引用可空,名称快照 TOPIC_NAME 必填)。
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型 | 长度/精度 | 可空 | 默认值 | 主键/外键/唯一/索引 | 来源或生成规则 | 核心 | 核验状态/证据 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ID | 主键 | BIGINT | BIGINT | — | 否 | — | PK PK_BIZ_PLANNING_TASK_TOPIC | 雪花算法 | 是 | 已按实际库核对 |
| 2 | TASK_ID | 任务 ID | BIGINT | BIGINT | — | 否 | — | IDX IDX_BIZ_PLANNING_TASK_TOPIC;逻辑外键 → biz_planning_task.ID | 任务创建/编辑时写入 | 是 | 已按实际库核对 |
| 3 | TOPIC_TYPE_ID | 专题类型 ID | BIGINT | BIGINT | — | 可 | NULL | IDX IDX_BIZ_PLANNING_TASK_TOPIC_TYPE;逻辑外键 → biz_planning_topic_type.ID | 模板专题选择器;自定义专题无模板时留空,名称由 TOPIC_NAME 承载(2026-10-09 放开非空约束) | 是 | 已按实际库核对(2026-10-09 MCP 回读:NULLABLE=Y) |
| 4 | TOPIC_NAME | 专题类型名称快照 | VARCHAR | VARCHAR | 400 | 可 | NULL | — | 选择时保存名称快照 | 是 | 已按实际库核对 |
| 5 | SORT_NO | 排序号 | INT | INT | — | 可 | 0 | — | 按选择顺序写入 | 否 | 已按实际库核对 |
| 6 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | — | 可 | NULL | — | BaseEntity 自动填充 | 否 | 已按实际库核对 |
| 7 | CREATE_BY | 创建人 | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 8 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 9 | UPDATE_BY | 更新人 | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 10 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 11 | DEL_FLAG | 逻辑删除 | CHAR | CHAR | 1 | 可 | '0' | — | @TableLogic;编辑时按任务重建关联行 | 否 | 已按实际库核对 |
(TASK_ID, TOPIC_TYPE_ID) 无唯一约束(仅两个普通索引),见第 5 节差异 2。
3.4 biz_planning_stage_record(阶段记录,每条任务 1 条)
数据库 23 个列。每条任务恰好 1 条阶段记录,SEQ_NO 恒为 1;单阶段模块的 WORK_STAGE 为空。
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型 | 长度/精度 | 可空 | 默认值 | 主键/外键/唯一/索引 | 来源或生成规则 | 核心 | 核验状态/证据 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ID | 主键 | BIGINT | BIGINT | — | 否 | — | PK PK_BIZ_PLANNING_STAGE_RECORD | 雪花算法 | 是 | 已按实际库核对 |
| 2 | TASK_ID | 任务 ID | BIGINT | BIGINT | — | 否 | — | IDX IDX_BIZ_PLANNING_STAGE_TASK;逻辑外键 → biz_planning_task.ID | 与任务同时创建 | 是 | 已按实际库核对 |
| 3 | MODULE_TYPE | 业务模块类型 | VARCHAR | VARCHAR | 32 | 否 | — | — | 冗余任务模块类型,便于台账聚合 | 是 | 已按实际库核对 |
| 4 | WORK_STAGE | 工作阶段 | VARCHAR | VARCHAR | 32 | 可 | NULL | — | 与任务一致;单阶段模块为空 | 是 | 已按实际库核对 |
| 5 | SEQ_NO | 阶段序号 | INT | INT | — | 可 | 1 | — | 恒为 1(阶段任务化口径:需要新阶段时新建任务) | 是 | 已按实际库核对 |
| 6 | BUSINESS_STATUS | 业务状态 | VARCHAR | VARCHAR | 32 | 可 | 'draft' | — | 与任务同步回写 | 是 | 已按实际库核对 |
| 7 | INSTANCE_ID | 流程实例 ID | BIGINT | BIGINT | — | 可 | NULL | — | 启动流程后回写 | 是 | 已按实际库核对 |
| 8 | CURRENT_NODE_CODE | 当前节点编码 | VARCHAR | VARCHAR | 64 | 可 | NULL | — | 流程事件回写 | 否 | 已按实际库核对 |
| 9 | CURRENT_NODE_NAME | 当前节点名称 | VARCHAR | VARCHAR | 200 | 可 | NULL | — | 与节点编码同时回写 | 否 | 已按实际库核对 |
| 10 | CURRENT_HANDLER_IDS | 当前办理人 ID 集合 | VARCHAR | VARCHAR | 500 | 可 | NULL | — | 逗号分隔 | 否 | 已按实际库核对 |
| 11 | CURRENT_HANDLER_NAMES | 当前办理人姓名集合 | VARCHAR | VARCHAR | 500 | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 12 | NEED_CONSULTATION | 是否需要意见征求 | CHAR | CHAR | 1 | 可 | NULL | — | 部门负责人节点在办理弹窗选择"是/否"后回写;仅储备清单与建设规划/工可研究编制阶段会取值 | 是 | 已按实际库核对 |
| 13 | SUBMIT_USER_ID | 提交人用户 ID | BIGINT | BIGINT | — | 可 | NULL | — | 提交时写入 | 否 | 已按实际库核对 |
| 14 | SUBMIT_USER_NAME | 提交人姓名快照 | VARCHAR | VARCHAR | 100 | 可 | NULL | — | 提交时快照 | 否 | 已按实际库核对 |
| 15 | SUBMIT_TIME | 提交时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 提交时写入 | 否 | 已按实际库核对 |
| 16 | APPROVE_TIME | 审批通过时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 流程结束时写入 | 否 | 已按实际库核对 |
| 17 | VERSION | 并发版本 | INT | INT | — | 可 | 0 | — | 平台乐观锁字段 | 否 | 已按实际库核对 |
| 18 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | — | 可 | NULL | — | BaseEntity 自动填充 | 否 | 已按实际库核对 |
| 19 | CREATE_BY | 创建人 | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 20 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 21 | UPDATE_BY | 更新人 | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 22 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 23 | DEL_FLAG | 逻辑删除 | CHAR | CHAR | 1 | 可 | '0' | — | @TableLogic | 否 | 已按实际库核对 |
"每条任务只有 1 条阶段记录"由服务端保证,未建 (TASK_ID, SEQ_NO) 唯一约束,见第 5 节差异 3。
3.5 biz_planning_result_version(成果版本)
数据库 17 个列。随任务创建生成 VERSION_NO = 1;退回重提、重启实例复用同一条版本,不新增版本行。
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型 | 长度/精度 | 可空 | 默认值 | 主键/外键/唯一/索引 | 来源或生成规则 | 核心 | 核验状态/证据 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ID | 主键 | BIGINT | BIGINT | — | 否 | — | PK PK_BIZ_PLANNING_RESULT_VERSION | 雪花算法 | 是 | 已按实际库核对 |
| 2 | TASK_ID | 任务 ID | BIGINT | BIGINT | — | 否 | — | 逻辑外键 → biz_planning_task.ID | 与任务同时创建 | 是 | 已按实际库核对 |
| 3 | STAGE_RECORD_ID | 阶段记录 ID | BIGINT | BIGINT | — | 否 | — | UK UK_BIZ_PLANNING_VERSION(第 1 列);逻辑外键 → biz_planning_stage_record.ID | 与阶段记录同时创建 | 是 | 已按实际库核对 |
| 4 | VERSION_NO | 版本号 | INT | INT | — | 否 | — | UK UK_BIZ_PLANNING_VERSION(第 2 列) | 每条阶段记录从 1 起 | 是 | 已按实际库核对 |
| 5 | SUBMIT_USER_ID | 提交人用户 ID | BIGINT | BIGINT | — | 可 | NULL | — | 提交时写入 | 否 | 已按实际库核对 |
| 6 | SUBMIT_USER_NAME | 提交人姓名快照 | VARCHAR | VARCHAR | 100 | 可 | NULL | — | 提交时快照 | 否 | 已按实际库核对 |
| 7 | SUBMIT_TIME | 提交时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 提交时写入;退回重提时更新为该轮提交时间 | 否 | 已按实际库核对 |
| 8 | INSTANCE_ID | 流程实例 ID | BIGINT | BIGINT | — | 可 | NULL | — | 提交或重启后回写 | 否 | 已按实际库核对 |
| 9 | APPROVAL_RESULT | 审批结果 | VARCHAR | VARCHAR | 32 | 可 | NULL | — | 流程结束时按办理结果写入(通过/退回) | 是 | 已按实际库核对 |
| 10 | REMARK | 备注 | VARCHAR | VARCHAR | 1000 | 可 | NULL | — | 业务流程携带的备注快照 | 否 | 已按实际库核对 |
| 11 | VERSION | 并发版本 | INT | INT | — | 可 | 0 | — | 平台乐观锁字段 | 否 | 已按实际库核对 |
| 12 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | — | 可 | NULL | — | BaseEntity 自动填充 | 否 | 已按实际库核对 |
| 13 | CREATE_BY | 创建人 | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 14 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 15 | UPDATE_BY | 更新人 | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 16 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 17 | DEL_FLAG | 逻辑删除 | CHAR | CHAR | 1 | 可 | '0' | — | @TableLogic | 否 | 已按实际库核对 |
本表的 UK_BIZ_PLANNING_VERSION 是 13 张表中仅有的两个唯一约束之一,与设计草案一致。
3.6 biz_planning_result_item(成果明细行)
数据库 12 个列。每个工作阶段一套明细,列名语义按模块与阶段不同(如"前期储备研究成果文件""建设规划报审成果文件"),落库为统一结构。
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型 | 长度/精度 | 可空 | 默认值 | 主键/外键/唯一/索引 | 来源或生成规则 | 核心 | 核验状态/证据 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ID | 主键 | BIGINT | BIGINT | — | 否 | — | PK PK_BIZ_PLANNING_RESULT_ITEM | 雪花算法 | 是 | 已按实际库核对 |
| 2 | TASK_ID | 任务 ID | BIGINT | BIGINT | — | 否 | — | 逻辑外键 → biz_planning_task.ID | 与版本同时写入 | 是 | 已按实际库核对 |
| 3 | STAGE_RECORD_ID | 阶段记录 ID | BIGINT | BIGINT | — | 否 | — | 逻辑外键 → biz_planning_stage_record.ID | 同上 | 是 | 已按实际库核对 |
| 4 | VERSION_ID | 成果版本 ID | BIGINT | BIGINT | — | 否 | — | IDX IDX_BIZ_PLANNING_ITEM_VERSION;逻辑外键 → biz_planning_result_version.ID | 明细行挂在版本下 | 是 | 已按实际库核对 |
| 5 | SORT_NO | 排序号 | INT | INT | — | 可 | 0 | — | 前端明细行顺序 | 否 | 已按实际库核对 |
| 6 | MAIN_CONTENT | 主要内容 | VARCHAR | VARCHAR | 2000 | 可 | NULL | — | 明细表"主要内容"输入;提交时服务端校验非空(附件非必填) | 是 | 已按实际库核对 |
| 7 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | — | 可 | NULL | — | BaseEntity 自动填充 | 否 | 已按实际库核对 |
| 8 | CREATE_BY | 创建人 | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 9 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 10 | UPDATE_BY | 更新人 | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 11 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 12 | DEL_FLAG | 逻辑删除 | CHAR | CHAR | 1 | 可 | '0' | — | @TableLogic;编辑时按版本重建明细行 | 否 | 已按实际库核对 |
3.7 biz_planning_attachment_ref(附件引用)
数据库 20 个列。只保存文件服务对象引用,不复制实体文件。
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型 | 长度/精度 | 可空 | 默认值 | 主键/外键/唯一/索引 | 来源或生成规则 | 核心 | 核验状态/证据 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ID | 主键 | BIGINT | BIGINT | — | 否 | — | PK PK_BIZ_PLANNING_ATTACHMENT_REF | 雪花算法 | 是 | 已按实际库核对 |
| 2 | BIZ_TYPE | 业务类型 | VARCHAR | VARCHAR | 32 | 否 | — | IDX IDX_BIZ_PLANNING_ATTACH_BIZ(第 1 列) | 取值 TASK/RESULT_ITEM/CONSULTATION/APPROVAL,标识附件归属层级 | 是 | 已按实际库核对(取值域来自实体与服务层约定) |
| 3 | BIZ_ID | 业务主键 | BIGINT | BIGINT | — | 否 | — | IDX IDX_BIZ_PLANNING_ATTACH_BIZ(第 2 列) | 与 BIZ_TYPE 组合定位归属记录 | 是 | 已按实际库核对 |
| 4 | ITEM_ID | 明细行 ID | BIGINT | BIGINT | — | 可 | NULL | — | 明细行附件时指向 biz_planning_result_item.ID | 否 | 已按实际库核对 |
| 5 | OSS_ID | 文件服务对象 ID | BIGINT | BIGINT | — | 否 | — | — | 逻辑外键 → sys_oss.OSS_ID;由 /resource/oss/upload 返回 | 是 | 已按实际库核对 |
| 6 | FILE_NAME | 文件名称 | VARCHAR | VARCHAR | 500 | 可 | NULL | — | 上传时保存,页面"直接显示附件的名称" | 是 | 已按实际库核对 |
| 7 | FILE_SIZE | 文件大小(字节) | BIGINT | BIGINT | — | 可 | NULL | — | 上传时保存 | 否 | 已按实际库核对 |
| 8 | FILE_TYPE | 文件类型 | VARCHAR | VARCHAR | 64 | 可 | NULL | — | 上传时保存扩展名/类型 | 否 | 已按实际库核对 |
| 9 | SOURCE_TYPE | 附件来源 | VARCHAR | VARCHAR | 32 | 可 | 'UPLOAD' | — | 当前实际写入 UPLOAD(直接上传);FILE_CATALOG 为"信息管理/文件目录配置"对接预留,见第 5 节差异 4 | 是 | 已按实际库核对 |
| 10 | CATALOG_ID | 文件目录 ID(预留) | BIGINT | BIGINT | — | 可 | NULL | — | 预留字段,用于保存"信息管理/文件目录配置"的目录标识;本轮未落地使用 | 否 | 已按实际库核对(字段存在;无实际写入证据) |
| 11 | UPLOADER_ID | 上传人用户 ID | BIGINT | BIGINT | — | 可 | NULL | — | 上传时写入 | 否 | 已按实际库核对 |
| 12 | UPLOADER_NAME | 上传人姓名快照 | VARCHAR | VARCHAR | 100 | 可 | NULL | — | 上传时快照 | 否 | 已按实际库核对 |
| 13 | UPLOAD_TIME | 上传时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 上传时写入 | 否 | 已按实际库核对 |
| 14 | SORT_NO | 排序号 | INT | INT | — | 可 | 0 | — | 同一归属下的展示顺序 | 否 | 已按实际库核对 |
| 15 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | — | 可 | NULL | — | BaseEntity 自动填充 | 否 | 已按实际库核对 |
| 16 | CREATE_BY | 创建人 | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 17 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 18 | UPDATE_BY | 更新人 | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 19 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 20 | DEL_FLAG | 逻辑删除 | CHAR | CHAR | 1 | 可 | '0' | — | @TableLogic | 否 | 已按实际库核对 |
回读时点本表 0 行:本轮端到端验证的附件随办理提交写入流程历史 ext(见测试与验证报告),本表尚未产生业务数据。
3.8 biz_planning_topic_type(专题类型目录,可配置主数据)
数据库 13 个列。"规划阶段/工可阶段"是专题所属业务分类,与工作阶段(编制/报审/批复)是两个维度。
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型 | 长度/精度 | 可空 | 默认值 | 主键/外键/唯一/索引 | 来源或生成规则 | 核心 | 核验状态/证据 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ID | 主键 | BIGINT | BIGINT | — | 否 | — | PK PK_BIZ_PLANNING_TOPIC_TYPE | 雪花算法 | 是 | 已按实际库核对 |
| 2 | PLAN_BIZ_STAGE | 规划报建阶段(专题业务分类) | VARCHAR | VARCHAR | 32 | 否 | — | — | PLAN_STAGE(规划阶段)/STUDY_STAGE(工可阶段);字典 planning_topic_biz_stage | 是 | 已按实际库核对 |
| 3 | TOPIC_NAME | 专题类型名称 | VARCHAR | VARCHAR | 200 | 否 | — | — | 目录维护页输入;服务端校验非空与同阶段下重名 | 是 | 已按实际库核对 |
| 4 | TOPIC_CODE | 专题类型编码 | VARCHAR | VARCHAR | 64 | 可 | NULL | — | 目录维护页可选输入 | 否 | 已按实际库核对 |
| 5 | ENABLED | 启用标记 | CHAR | CHAR | 1 | 否 | '1' | — | 1 启用 / 其他停用;被任务或关联引用后不可物理删除,只能停用 | 是 | 已按实际库核对 |
| 6 | SORT_NO | 排序号 | INT | INT | — | 可 | 0 | — | 目录维护页排序 | 否 | 已按实际库核对 |
| 7 | REMARK | 备注 | VARCHAR | VARCHAR | 500 | 可 | NULL | — | 目录维护页输入 | 否 | 已按实际库核对 |
| 8 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | — | 可 | NULL | — | BaseEntity 自动填充 | 否 | 已按实际库核对 |
| 9 | CREATE_BY | 创建人 | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 10 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 11 | UPDATE_BY | 更新人 | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 12 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 13 | DEL_FLAG | 逻辑删除 | CHAR | CHAR | 1 | 可 | '0' | — | @TableLogic | 否 | 已按实际库核对 |
3.9 biz_planning_topic_project(专题类型 ↔ 项目,M:N)
数据库 12 个列。"关联项目"支持多选。
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型 | 长度/精度 | 可空 | 默认值 | 主键/外键/唯一/索引 | 来源或生成规则 | 核心 | 核验状态/证据 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ID | 主键 | BIGINT | BIGINT | — | 否 | — | PK PK_BIZ_PLANNING_TOPIC_PROJECT | 雪花算法 | 是 | 已按实际库核对 |
| 2 | TOPIC_TYPE_ID | 专题类型 ID | BIGINT | BIGINT | — | 否 | — | IDX IDX_BIZ_PLANNING_TOPIC_PROJECT;逻辑外键 → biz_planning_topic_type.ID | 关联项目时写入 | 是 | 已按实际库核对 |
| 3 | PROJECT_ID | 项目 ID | BIGINT | BIGINT | — | 否 | — | 逻辑外键 → biz_project.ID | 关联项目选择器 | 是 | 已按实际库核对 |
| 4 | PROJECT_NAME | 项目名称快照 | VARCHAR | VARCHAR | 400 | 可 | NULL | — | 选择时快照 | 是 | 已按实际库核对 |
| 5 | PROJECT_CODE | 项目编码快照 | VARCHAR | VARCHAR | 64 | 可 | NULL | — | 选择时快照 | 否 | 已按实际库核对 |
| 6 | SORT_NO | 排序号 | INT | INT | — | 可 | 0 | — | 按选择顺序写入 | 否 | 已按实际库核对 |
| 7 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | — | 可 | NULL | — | BaseEntity 自动填充 | 否 | 已按实际库核对 |
| 8 | CREATE_BY | 创建人 | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 9 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 10 | UPDATE_BY | 更新人 | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 11 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 12 | DEL_FLAG | 逻辑删除 | CHAR | CHAR | 1 | 可 | '0' | — | @TableLogic;重新关联时按专题类型重建 | 否 | 已按实际库核对 |
(TOPIC_TYPE_ID, PROJECT_ID) 无唯一约束(仅专题类型一个普通索引),见第 5 节差异 2。
3.10 biz_planning_consultation_batch(意见征求批次,一轮一条)
数据库 13 个列。
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型 | 长度/精度 | 可空 | 默认值 | 主键/外键/唯一/索引 | 来源或生成规则 | 核心 | 核验状态/证据 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ID | 主键 | BIGINT | BIGINT | — | 否 | — | PK PK_BIZ_PLANNING_CONSULTATION_BATCH | 雪花算法 | 是 | 已按实际库核对 |
| 2 | TASK_ID | 任务 ID | BIGINT | BIGINT | — | 否 | — | IDX IDX_BIZ_PLANNING_CONSULT_BATCH;逻辑外键 → biz_planning_task.ID | 决定节点选择"需要意见征求"时创建 | 是 | 已按实际库核对 |
| 3 | STAGE_RECORD_ID | 阶段记录 ID | BIGINT | BIGINT | — | 可 | NULL | — | 单阶段模块可能为空 | 是 | 已按实际库核对 |
| 4 | INSTANCE_ID | 流程实例 ID | BIGINT | BIGINT | — | 可 | NULL | — | 创建批次时的实例 | 否 | 已按实际库核对 |
| 5 | ROUND_NO | 轮次 | INT | INT | — | 可 | 1 | — | 同一任务多轮意见征求时递增 | 是 | 已按实际库核对 |
| 6 | STATUS | 批次状态 | VARCHAR | VARCHAR | 32 | 可 | NULL | — | IN_PROGRESS(进行中)/FINISHED(全部完成)/REJECTED(任一部门退回,本轮未通过) | 是 | 已按实际库核对 |
| 7 | FINISH_TIME | 完成时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 批次结束(完成或退回)时写入 | 否 | 已按实际库核对 |
| 8 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | — | 可 | NULL | — | BaseEntity 自动填充 | 否 | 已按实际库核对 |
| 9 | CREATE_BY | 创建人 | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 10 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 11 | UPDATE_BY | 更新人 | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 12 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 13 | DEL_FLAG | 逻辑删除 | CHAR | CHAR | 1 | 可 | '0' | — | @TableLogic | 否 | 已按实际库核对 |
3.11 biz_planning_consultation_task(单个部门意见,并行会签明细)
数据库 20 个列。每位部门接收人各自回写本人一条明细,不依赖最后一名办理人触发的事件。
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型 | 长度/精度 | 可空 | 默认值 | 主键/外键/唯一/索引 | 来源或生成规则 | 核心 | 核验状态/证据 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ID | 主键 | BIGINT | BIGINT | — | 否 | — | PK PK_BIZ_PLANNING_CONSULTATION_TASK | 雪花算法 | 是 | 已按实际库核对 |
| 2 | BATCH_ID | 意见征求批次 ID | BIGINT | BIGINT | — | 否 | — | IDX IDX_BIZ_PLANNING_CONSULT_TASK;逻辑外键 → biz_planning_consultation_batch.ID | 批次创建时按选中的部门逐条生成 | 是 | 已按实际库核对 |
| 3 | TASK_ID | 任务 ID | BIGINT | BIGINT | — | 否 | — | 逻辑外键 → biz_planning_task.ID | 同上 | 是 | 已按实际库核对 |
| 4 | STAGE_RECORD_ID | 阶段记录 ID | BIGINT | BIGINT | — | 可 | NULL | — | 单阶段模块可能为空 | 是 | 已按实际库核对 |
| 5 | DEPT_TYPE | 部门类别 | VARCHAR | VARCHAR | 32 | 可 | NULL | — | OPERATION(运营管理部)/ASSET(资产管理部)/CONSTRUCTION(建设管理部)/OTHER(其他部门);字典 planning_consultation_dept_type | 是 | 已按实际库核对 |
| 6 | DEPT_ID | 部门 ID | BIGINT | BIGINT | — | 可 | NULL | — | 决定节点选择接收人时带出的部门 | 是 | 已按实际库核对 |
| 7 | DEPT_NAME | 部门名称快照 | VARCHAR | VARCHAR | 200 | 可 | NULL | — | 选择时快照 | 是 | 已按实际库核对 |
| 8 | HANDLER_USER_ID | 部门接收人用户 ID | BIGINT | BIGINT | — | 可 | NULL | — | 决定节点选择的接收人 | 是 | 已按实际库核对 |
| 9 | HANDLER_USER_NAME | 部门接收人姓名快照 | VARCHAR | VARCHAR | 100 | 可 | NULL | — | 选择时快照 | 否 | 已按实际库核对 |
| 10 | NODE_CODE | 部门意见节点编码 | VARCHAR | VARCHAR | 64 | 可 | NULL | — | 会签节点编码,用于定位办理入口 | 否 | 已按实际库核对 |
| 11 | OPINION | 部门意见 | VARCHAR | VARCHAR | 2000 | 可 | NULL | — | 接收人提交意见时回写本人明细 | 是 | 已按实际库核对 |
| 12 | RESULT | 部门意见结果 | VARCHAR | VARCHAR | 32 | 可 | NULL | — | AGREE(同意)/REJECT(退回);任一部门退回即本轮未通过 | 是 | 已按实际库核对 |
| 13 | STATUS | 明细状态 | VARCHAR | VARCHAR | 32 | 可 | NULL | — | PENDING(待办理)等;提交入口按登录人回写本人 PENDING 明细 | 是 | 已按实际库核对 |
| 14 | FINISH_TIME | 办理完成时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 本人明细提交时写入 | 否 | 已按实际库核对 |
| 15 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | — | 可 | NULL | — | BaseEntity 自动填充 | 否 | 已按实际库核对 |
| 16 | CREATE_BY | 创建人 | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 17 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 18 | UPDATE_BY | 更新人 | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 19 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 20 | DEL_FLAG | 逻辑删除 | CHAR | CHAR | 1 | 可 | '0' | — | @TableLogic | 否 | 已按实际库核对 |
3.12 biz_planning_approval_record(审批记录快照,只追加)
数据库 26 个列。每个节点办理后写入一条,按引擎办理记录幂等;含发起单位与办理人归属,满足"审批记录需要区分发起单位"的原型批注。
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型 | 长度/精度 | 可空 | 默认值 | 主键/外键/唯一/索引 | 来源或生成规则 | 核心 | 核验状态/证据 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ID | 主键 | BIGINT | BIGINT | — | 否 | — | PK PK_BIZ_PLANNING_APPROVAL_RECORD | 雪花算法 | 是 | 已按实际库核对 |
| 2 | TASK_ID | 任务 ID | BIGINT | BIGINT | — | 否 | — | IDX IDX_BIZ_PLANNING_APPROVAL_TASK;逻辑外键 → biz_planning_task.ID | 流程事件回写 | 是 | 已按实际库核对 |
| 3 | STAGE_RECORD_ID | 阶段记录 ID | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 是 | 已按实际库核对 |
| 4 | INSTANCE_ID | 流程实例 ID | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 是 | 已按实际库核对 |
| 5 | FLOW_CODE | 流程编码 | VARCHAR | VARCHAR | 160 | 可 | NULL | — | 9 条规划管理流程之一 | 是 | 已按实际库核对 |
| 6 | FLOW_VERSION | 流程版本 | VARCHAR | VARCHAR | 32 | 可 | NULL | — | 由引擎实例带回 | 否 | 已按实际库核对 |
| 7 | NODE_CODE | 节点编码 | VARCHAR | VARCHAR | 64 | 可 | NULL | — | 取该实例最近一条已办理历史的来源节点 | 是 | 已按实际库核对 |
| 8 | NODE_NAME | 节点名称 | VARCHAR | VARCHAR | 200 | 可 | NULL | — | 与节点编码同时写入,时间线卡片标题 | 是 | 已按实际库核对 |
| 9 | ENGINE_TASK_ID | 引擎办理任务 ID | BIGINT | BIGINT | — | 可 | NULL | — | 幂等键:同一引擎办理记录只写一条 | 是 | 已按实际库核对 |
| 10 | HANDLER_USER_ID | 办理人用户 ID | BIGINT | BIGINT | — | 可 | NULL | — | 引擎历史任务办理人 | 是 | 已按实际库核对 |
| 11 | HANDLER_USER_NAME | 办理人姓名快照 | VARCHAR | VARCHAR | 100 | 可 | NULL | — | 同上 | 是 | 已按实际库核对 |
| 12 | HANDLER_DEPT_ID | 办理人部门 ID | BIGINT | BIGINT | — | 可 | NULL | — | 办理人部门 | 是 | 已按实际库核对 |
| 13 | HANDLER_DEPT_NAME | 办理人部门名称快照 | VARCHAR | VARCHAR | 200 | 可 | NULL | — | 办理时快照 | 是 | 已按实际库核对 |
| 14 | HANDLER_ORG_ID | 办理人所属单位 ID | BIGINT | BIGINT | — | 可 | NULL | — | 按办理人部门归属解析 | 否 | 已按实际库核对 |
| 15 | HANDLER_ORG_NAME | 办理人所属单位名称快照 | VARCHAR | VARCHAR | 200 | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 16 | INITIATOR_TYPE | 发起方式 | VARCHAR | VARCHAR | 32 | 可 | NULL | — | 从任务带出,用于时间线区分发起单位 | 是 | 已按实际库核对 |
| 17 | INITIATOR_ORG_NAME | 发起单位名称快照 | VARCHAR | VARCHAR | 200 | 可 | NULL | — | 从任务带出 | 是 | 已按实际库核对 |
| 18 | OPINION | 审批意见 | VARCHAR | VARCHAR | 2000 | 可 | NULL | — | 办理时填写;快捷意见为文本模板可继续修改 | 是 | 已按实际库核对 |
| 19 | RESULT | 审批结果 | VARCHAR | VARCHAR | 32 | 可 | NULL | — | 通过/退回等办理结果 | 是 | 已按实际库核对 |
| 20 | HANDLE_TIME | 办理时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 引擎历史任务时间 | 是 | 已按实际库核对 |
| 21 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | — | 可 | NULL | — | BaseEntity 自动填充 | 否 | 已按实际库核对 |
| 22 | CREATE_BY | 创建人 | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 23 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 24 | UPDATE_BY | 更新人 | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 25 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 26 | DEL_FLAG | 逻辑删除 | CHAR | CHAR | 1 | 可 | '0' | — | @TableLogic;审批记录不修改、不覆盖,退回重提新增记录 | 否 | 已按实际库核对 |
3.13 biz_planning_process_instance(流程实例登记,支持历史多实例与重启)
数据库 23 个列。业务标识 BUSINESS_ID = {阶段记录ID}#{实例序号},避免平台按业务标识取单条实例时的多实例歧义。
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型 | 长度/精度 | 可空 | 默认值 | 主键/外键/唯一/索引 | 来源或生成规则 | 核心 | 核验状态/证据 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ID | 主键 | BIGINT | BIGINT | — | 否 | — | PK PK_BIZ_PLANNING_PROCESS_INSTANCE | 雪花算法 | 是 | 已按实际库核对 |
| 2 | TASK_ID | 任务 ID | BIGINT | BIGINT | — | 否 | — | IDX IDX_BIZ_PLANNING_INSTANCE_TASK(第 1 列);逻辑外键 → biz_planning_task.ID | 启动流程时写入 | 是 | 已按实际库核对 |
| 3 | STAGE_RECORD_ID | 阶段记录 ID | BIGINT | BIGINT | — | 否 | — | 逻辑外键 → biz_planning_stage_record.ID | 同上 | 是 | 已按实际库核对 |
| 4 | INSTANCE_ID | 引擎流程实例 ID | BIGINT | BIGINT | — | 可 | NULL | — | 引擎返回 | 是 | 已按实际库核对 |
| 5 | BUSINESS_ID | 流程业务标识 | VARCHAR | VARCHAR | 128 | 否 | — | UK UK_BIZ_PLANNING_INSTANCE_BUSINESS | {阶段记录ID}#{实例序号};含 #,前端查询流程历史的路径段必须 URL 编码 | 是 | 已按实际库核对 |
| 6 | FLOW_CODE | 流程编码 | VARCHAR | VARCHAR | 160 | 可 | NULL | — | 由 PlanningFlowConstant.flowCodeOf(moduleType, workStage) 选择 | 是 | 已按实际库核对 |
| 7 | DEFINITION_ID | 流程定义 ID | BIGINT | BIGINT | — | 可 | NULL | — | 逻辑外键 → flow_definition.ID | 否 | 已按实际库核对 |
| 8 | FLOW_VERSION | 流程版本 | VARCHAR | VARCHAR | 32 | 可 | NULL | — | 由引擎带回 | 否 | 已按实际库核对 |
| 9 | INSTANCE_SEQ | 实例序号 | INT | INT | — | 可 | 1 | — | 首次启动为 1;重启实例递增 | 是 | 已按实际库核对 |
| 10 | IS_CURRENT | 是否当前实例 | CHAR | CHAR | 1 | 可 | '1' | IDX IDX_BIZ_PLANNING_INSTANCE_TASK(第 2 列) | 重启时旧实例置 0、新实例置 1;服务端保证同一阶段记录只有一条 1 | 是 | 已按实际库核对 |
| 11 | ORIGINAL_INSTANCE_ID | 原流程实例 ID | BIGINT | BIGINT | — | 可 | NULL | — | 重启实例时记录被取代的原实例 | 是 | 已按实际库核对 |
| 12 | STATUS | 实例状态 | VARCHAR | VARCHAR | 32 | 可 | NULL | — | RUNNING/FINISHED/BACK/TERMINATED/SUPERSEDED(重启后被取代) | 是 | 已按实际库核对 |
| 13 | START_USER_ID | 启动人用户 ID | BIGINT | BIGINT | — | 可 | NULL | — | 提交或重启时写入 | 否 | 已按实际库核对 |
| 14 | START_USER_NAME | 启动人姓名快照 | VARCHAR | VARCHAR | 100 | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 15 | START_TIME | 启动时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 16 | END_TIME | 结束时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 实例结束或被取代时写入 | 否 | 已按实际库核对 |
| 17 | RESTART_REASON | 重启原因 | VARCHAR | VARCHAR | 500 | 可 | NULL | — | 重启实例弹窗填写 | 是 | 已按实际库核对 |
| 18 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | — | 可 | NULL | — | BaseEntity 自动填充 | 否 | 已按实际库核对 |
| 19 | CREATE_BY | 创建人 | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 20 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 21 | UPDATE_BY | 更新人 | BIGINT | BIGINT | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 22 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | — | 可 | NULL | — | 同上 | 否 | 已按实际库核对 |
| 23 | DEL_FLAG | 逻辑删除 | CHAR | CHAR | 1 | 可 | '0' | — | @TableLogic;重启保留原实例记录 | 否 | 已按实际库核对 |
4. 约束、索引与字典
4.1 约束与索引
| 类型 | 名称/表达式 | 作用 | 设计/物理差异 | 核验状态 |
|---|---|---|---|---|
| PK | 13 个,PK_BIZ_PLANNING_*(各表均为主键 ID 单列) | 各表唯一标识 | 与设计一致 | 已按实际库核对(USER_CONSTRAINTS 2026-09-20) |
| UK | UK_BIZ_PLANNING_VERSION(STAGE_RECORD_ID, VERSION_NO) | 每条阶段记录只有一条成果版本 | 与设计一致 | 已按实际库核对 |
| UK | UK_BIZ_PLANNING_INSTANCE_BUSINESS(BUSINESS_ID) | 流程业务标识唯一,避免多实例歧义 | 与设计一致 | 已按实际库核对 |
| 普通索引 | 12 个具名非唯一索引(IDX_BIZ_PLANNING_*),覆盖任务↔项目/专题/阶段记录/明细/附件/意见征求/审批记录/实例登记/专题项目各关联方向 | 关联检索与台账聚合 | 设计草案要求 biz_planning_task_project 建唯一约束,实际为普通索引且无 REF_TYPE/LINE_NODE_ID 列 | 已按实际库核对(差异 2) |
| 普通索引 | IDX_BIZ_PLANNING_TASK_TOPIC(TASK_ID)、IDX_BIZ_PLANNING_TASK_TOPIC_TYPE(TOPIC_TYPE_ID) | 专题类型多选双向检索 | 设计草案未明确唯一约束,实际无唯一约束 | 已按实际库核对(差异 2) |
| 普通索引 | IDX_BIZ_PLANNING_STAGE_TASK(TASK_ID) | 任务 → 阶段记录 | 与设计一致 | 已按实际库核对 |
| 普通索引 | IDX_BIZ_PLANNING_ITEM_VERSION(VERSION_ID) | 版本 → 成果明细 | 与设计一致 | 已按实际库核对 |
| 普通索引 | IDX_BIZ_PLANNING_ATTACH_BIZ(BIZ_TYPE, BIZ_ID) | 附件按归属检索 | 与设计一致 | 已按实际库核对 |
| 普通索引 | IDX_BIZ_PLANNING_CONSULT_BATCH(TASK_ID) | 任务 → 意见征求批次 | 与设计一致 | 已按实际库核对 |
| 普通索引 | IDX_BIZ_PLANNING_CONSULT_TASK(BATCH_ID) | 批次 → 部门意见明细 | 与设计一致 | 已按实际库核对 |
| 普通索引 | IDX_BIZ_PLANNING_APPROVAL_TASK(TASK_ID) | 任务 → 审批记录 | 与设计一致 | 已按实际库核对 |
| 普通索引 | IDX_BIZ_PLANNING_INSTANCE_TASK(TASK_ID, IS_CURRENT) | 任务 → 当前实例 | 设计草案表述为 (STAGE_RECORD_ID, IS_CURRENT='1') 业务层唯一,实际索引列为 (TASK_ID, IS_CURRENT) 且非唯一 | 已按实际库核对(差异 3) |
| 普通索引 | IDX_BIZ_PLANNING_TOPIC_PROJECT(TOPIC_TYPE_ID) | 专题类型 → 关联项目 | 与设计一致 | 已按实际库核对 |
| FK | 无 | 13 张表均不建外键约束,跨表一致性由服务端事务保证 | 与设计一致 | 已按实际库核对(USER_CONSTRAINTS 中无 R 类型约束) |
| CHECK | 无 | 值域由服务端枚举与字典约束,未使用数据库 CHECK | 与设计一致 | 已按实际库核对 |
biz_planning_task、biz_planning_result_version、biz_planning_topic_type 三张表除主键/唯一约束外无其他索引(biz_planning_result_version 的 UK 兼作 STAGE_RECORD_ID 前缀检索)。
4.2 字典
6 个字典类型,共 20 条字典值(SYS_DICT_DATA 回读,2026-09-20):
| 字典类型 | 字典值 | 展示文案 | 核验状态 |
|---|---|---|---|
planning_business_status | draft / waiting / back / finish | 草稿 / 进行中 / 退回 / 已通过 | 已按实际库核对(4 条) |
planning_module_type | RESERVE / STATUS_TRACKING / NETWORK_PLAN / CONSTRUCTION_PLAN / FEASIBILITY_STUDY | 储备清单 / 状态跟踪 / 线网规划 / 建设规划 / 工可研究 | 已按实际库核对(5 条) |
planning_work_stage | COMPILATION / SUBMISSION / APPROVAL | 编制阶段 / 报审阶段 / 批复阶段 | 已按实际库核对(3 条) |
planning_topic_biz_stage | PLAN_STAGE / STUDY_STAGE | 规划阶段 / 工可阶段 | 已按实际库核对(2 条) |
planning_initiator_type | SECONDARY_UNIT / GROUP | 二级单位发起 / 开投集团发起 | 已按实际库核对(2 条) |
planning_consultation_dept_type | OPERATION / ASSET / CONSTRUCTION / OTHER | 运营管理部 / 资产管理部 / 建设管理部 / 其他部门 | 已按实际库核对(4 条) |
4.3 关联的平台对象(不属于本模块所有)
| 对象 | 关系 | 核验状态 |
|---|---|---|
flow_definition / flow_node / flow_skip | 9 条规划管理流程定义(planning_reserve、planning_status_tracking、planning_network_plan、planning_construction_compilation/_submission/_approval、planning_feasibility_compilation/_submission/_approval),VERSION=1、IS_PUBLISH=1、ACTIVITY_STATUS=1,均无 REJECT 连线(退回由引擎按实例历史动态计算) | 已按实际库核对(FLOW_DEFINITION 2026-09-20,9 条) |
sys_oss | 附件实体文件,biz_planning_attachment_ref.OSS_ID 逻辑引用 | 已按代码与回读核对(本模块不建表) |
biz_project | 项目主数据,两个关系表的 PROJECT_ID 逻辑引用 | 已按代码与回读核对 |
sys_dept / sys_user | 发起单位归属解析、办理人与部门快照来源 | 已按代码核对 |
sys_dict_type / sys_dict_data | 6 个规划管理字典类型 | 已按实际库核对 |
5. 设计字段与实际字段差异
| 表 | 差异字段 | 差异类型 | 设计值 | 实际值 | 处理方式 | 状态 |
|---|---|---|---|---|---|---|
| 13 张表(全部) | DEL_FLAG、CREATE_DEPT、CREATE_BY、CREATE_TIME、UPDATE_BY、UPDATE_TIME | 约束不一致(可空性) | 设计草案按平台惯例示意逻辑删除为"否/默认 0" | 开发库实测 DEL_FLAG 与 5 个审计列均为可空(NULLABLE='Y'),DEL_FLAG 默认 '0' | 保留现状:MyBatis-Plus 逻辑删除与自动填充在应用侧保证取值,数据库不强制非空;不改 DDL,不因可空性差异阻断查询 | 已核对(保留兼容,非缺陷) |
| 业务字段可空性 | 各表业务必填字段(TASK_NAME、MODULE_TYPE、INITIATOR_TYPE、BUSINESS_STATUS、OSS_ID、BIZ_TYPE、BIZ_ID、TASK_ID、PROJECT_ID、VERSION_NO、MAIN_CONTENT 之外的多数业务列) | 约束不一致(业务必填 vs 数据库可空) | 设计稿按"提交时必填"描述 | 除上述 12 类列外,其余业务列在数据库中可空;必填由服务端提交校验保证(暂存允许为空) | 保留现状:草稿允许不完整,提交时服务端校验非空;这正是暂存/提交分离所需 | 已核对(有意设计) |
biz_planning_task_project | REF_TYPE、LINE_NODE_ID | 缺失(设计草案字段未落地) | 设计要点 6 表述为对 (TASK_ID, REF_TYPE, PROJECT_ID/LINE_NODE_ID) 建唯一约束 | 实际无 REF_TYPE、无 LINE_NODE_ID 列;项目/线路统一按已解耦的业务项目 PROJECT_ID 关联 | 以实际为准:用户已确认"按已解耦的业务项目关联,不看工程树线路节点",REF_TYPE/LINE_NODE_ID 不再落地;早期草案该处表述作废 | 已核对 |
biz_planning_task_project、biz_planning_task_topic、biz_planning_topic_project | (TASK_ID, PROJECT_ID)、(TASK_ID, TOPIC_TYPE_ID)、(TOPIC_TYPE_ID, PROJECT_ID) | 约束不一致(缺唯一约束) | 设计草案要求关系表建唯一约束,防重复关联 | 实际只有普通索引,无唯一约束;重复关联由服务端在编辑时按任务/专题重建关联行规避 | 保留现状并登记为待办:若确认需要数据库层幂等,需另行授权对三张表补唯一约束(属共享对象结构变更,不在本次只读范围) | 待处理(待核对是否需要补约束) |
biz_planning_stage_record | (TASK_ID, SEQ_NO) | 约束不一致(缺唯一约束) | 设计口径"每条任务 1 条阶段记录(SEQ_NO 恒为 1)" | 实际无唯一约束,仅 TASK_ID 普通索引 | 由服务端保证;SEQ_NO 默认 1 但不构成数据库约束。若需强约束需另议 | 待处理(待核对) |
biz_planning_process_instance | (STAGE_RECORD_ID, IS_CURRENT) | 约束不一致 | 设计要点 6 表述为 (INSTANCE_ID) 唯一 + (STAGE_RECORD_ID, IS_CURRENT='1') 业务层校验唯一 | 实际唯一约束落在 BUSINESS_ID(而非 INSTANCE_ID 单列),且无 IS_CURRENT 条件唯一约束;索引为 (TASK_ID, IS_CURRENT) | 以实际为准:BUSINESS_ID 已含阶段记录与实例序号,等价实现设计意图(防止同一业务标识重复登记);IS_CURRENT 唯一性由服务端事务保证 | 已核对(设计稿表述待同步) |
biz_planning_attachment_ref | SOURCE_TYPE、CATALOG_ID | 预留未落地 | 设计稿要求"预留 catalog_id 与 FILE_CATALOG 来源,本期实现直接上传兼容实现" | 两列已在库中存在(SOURCE_TYPE 默认 'UPLOAD'),但 FileReferenceAdapter 接口未实现,"信息管理/文件目录配置"模块不存在;回读时点本表 0 行,无 FILE_CATALOG 取值证据 | 保留预留字段不删除;对接实现列为模块范围外待立项项。字段存在不等于能力已实现 | 已核对(预留,未落地) |
biz_planning_task | TOPIC_TYPE_ID、TOPIC_TYPE_NAME | 兼容字段保留 | 设计稿明确"本表保留首个专题 ID 与顿号拼接名称快照,兼容旧筛选与展示" | 实际存在并保留,专题多选由 biz_planning_task_topic 承载 | 与设计一致,保留 | 已核对 |
biz_planning_task、biz_planning_task_project、biz_planning_stage_record、biz_planning_result_version | VERSION | 存在差异(字段覆盖范围) | 设计统一约定"审计列 + 逻辑删除 + 并发 VERSION" | VERSION 只存在于任务、阶段记录、成果版本三张表;关系表、附件、意见征求、审批记录、实例登记表无 VERSION 列 | 以实际为准:并发控制只作用于可变业务主表;只追加/关系表不需要乐观锁。设计统一表述应收窄为"可变业务表带 VERSION" | 已核对(设计稿表述待同步) |
| 全部 13 张表 | 无 TENANT_ID/ORG_ID 数据隔离列 | 设计口径一致(无隔离) | 用户已确认"默认不做单位隔离",保留发起单位字段用于展示 | 实际无租户/组织隔离列,仅有发起单位与填报单位快照字段 | 与设计一致 | 已核对 |
未发现"类型不一致"或"长度不一致"差异:13 张表的 237 个列与实体代码声明逐项一致,无实体多出列或缺列的情况。
6. 迁移与兼容说明
6.1 本轮 DDL 与建表口径
- 13 张
biz_planning_*表由本轮开发通过项目 MCPdcp-dm8-dev建在开发库DIGITAL_CONSTRUCTION模式,包含任务与专题类型关系表biz_planning_task_topic;2026-09-20 的结构回读范围、字段和约束核对结果见本文件第 1、3、4 节。本模块不修改任何既有平台表或既有业务模块表。 - 全部 13 张表均为新建,不涉及存量数据迁移、字段删除、字段重命名、长度缩短、可空性变更或默认值变更,因此无存量数据处理与回滚策略需要说明。
- 本次核对为只读回读,未执行任何 DDL/DML;写入前核对环境与对象、写入后回读的要求按根
AGENTS.md由后续变更执行。 - DM8 专属写法范围:本模块使用的类型均为通用类型(
BIGINT/INT/VARCHAR/CHAR/DATE/TIMESTAMP);主键由应用侧雪花算法生成,不依赖 DM8 的自增/IDENTITY能力;未使用CLOB、未使用数据库函数默认值、未使用触发器、未使用同义词、未使用分区。数据库对象命名(PK_/UK_/IDX_前缀)为项目统一约定,不属厂商特性。 - 唯一需要说明的厂商相关点:DM8 在
USER_TAB_COLUMNS中为TIMESTAMP返回的DATA_LENGTH是存储字节宽度(8),不表示小数秒精度;本模块TIMESTAMP列均使用数据库默认精度,未显式指定TIMESTAMP(n)。目标库如需显式精度,须在迁移脚本中统一指定。
6.2 兼容风险(DM8 → 人大金仓 / openGauss / MySQL 类目标库)
| 项目 | 当前 DM8 实际 | 目标库风险 | 建议 |
|---|---|---|---|
| 字符类型 | VARCHAR(n) 按字符长度;CHAR(1) 用于逻辑删除与布尔式标记 | 语义一致,CHAR(1) 在多数目标库会补空格比较,需注意比较语义 | 业务查询统一用 = 与常量('0'/'1'),不使用 LIKE;迁移时保持 CHAR(1) 或统一转 VARCHAR(1) |
| 时间类型 | DATE 仅年月日(FILL_TIME)、TIMESTAMP 带时分秒 | 部分目标库 DATE 也含时间部分;TIMESTAMP 精度默认值不同 | 迁移时把 FILL_TIME 明确为纯日期类型;TIMESTAMP 统一显式精度 |
| 大整数 | BIGINT(8 字节);雪花 ID 超出 JS 安全整数范围 | 语义一致 | 前端保持原值(string 或 number 均可)、后端按项目 JSON 映射使用 BigNumberSerializer,与数据库无关 |
| 无外键约束 | 13 张表只有 PK/UK,无 FOREIGN KEY | 目标库同样不建外键即可,行为一致 | 迁移脚本不得"顺手"补外键,否则会阻断跨版本迁移与逻辑删除 |
无 CHECK 约束 | 值域由服务端枚举与字典约束 | 目标库同样不建 CHECK | 保持一致 |
| 索引命名与数量 | 13 个主键约束、2 个唯一约束(表现为唯一索引)、8 个普通索引;命名 PK_/UK_/IDX_ 前缀 | 命名规则一致,长度上限不同(长表名 + 前缀可能触及上限) | 迁移脚本保留命名规则,超出长度上限时按项目约定缩写并记录映射 |
| 无自增/序列 | 主键全由应用生成 | 目标库若有自增列,不得启用 | 迁移脚本不创建自增/序列 |
| 可空与默认值 | 审计列与 DEL_FLAG 可空、DEL_FLAG 默认 '0';多数业务列可空 | 目标库默认值语法(如 '0'::char(1))不同 | 迁移脚本显式写出默认值与可空性,保持与本矩阵一致 |
6.3 遗留问题
| 编号 | 问题 | 影响 | 处理建议 | 状态 |
|---|---|---|---|---|
| DB-PL-001 | 关系表缺唯一约束(biz_planning_task_project、biz_planning_task_topic、biz_planning_topic_project) | 数据库层不能阻止重复关联;重复行只能靠服务端"按任务/专题重建"规避 | 确认业务是否需要数据库层幂等后再决定补约束;补约束前须先核对是否存在重复行 | 待核对 |
| DB-PL-002 | biz_planning_task 无 MODULE_TYPE/BUSINESS_STATUS/INITIATOR_TYPE 索引 | 台账与列表按模块、状态筛选在全表扫描下随数据量增长变慢 | 数据量上升到影响体验时评估补联合索引;当前回读时点 31 行,无实际影响 | 待核对(当前无影响) |
| DB-PL-003 | biz_planning_stage_record 缺 (TASK_ID, SEQ_NO) 唯一约束 | "每条任务 1 条阶段记录"仅由服务端保证 | 同 DB-PL-001 一并评估 | 待核对 |
| DB-PL-004 | biz_planning_attachment_ref 的 SOURCE_TYPE='FILE_CATALOG' 与 CATALOG_ID 为预留,无实现 | 文件目录引用能力未落地,成果文件实际只能直接上传 | 待"信息管理/文件目录配置"模块立项后实现适配并补写入证据 | 范围外待立项 |
| DB-PL-005 | 早期设计草案的 REF_TYPE/LINE_NODE_ID、INSTANCE_ID 唯一约束、(STAGE_RECORD_ID, IS_CURRENT) 条件唯一、统一 VERSION 表述与实际不一致 | 早期设计不能作为实际结构或已实现能力的依据 | 已在本文件第 5 节固化实际口径;早期草案已移除,不再并行维护 | 已记录 |