safety-eval-service/docs/sql/database-design.md

994 lines
47 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 巫溪县安全评价在线监管一件事 — 数据库设计文档
> 版本v1.2
> 依据:产品原型 PDF设计文件 112
> 数据库MySQL 8.0+ / InnoDB / utf8mb4_unicode_ci
> ORMMyBatis-Plus通用字段与 `@TableLogic` 对齐)
---
## 1. 文档说明
### 1.1 设计目标
| 业务域 | 原型模块 | 核心表 |
|--------|----------|--------|
| 机构认证 | 认证信息(填写→审核中→通过) | `org_info`、`org_certification_audit` |
| 企业信息管理 | 机构信息、资质、人员、部门岗位、装备 | `org_*`、`staff_*`、`equip_info` |
| 人员异动 | 人员变更、离职申请 | `staff_change_log`、`staff_resignation_apply` |
| 资质备案 | 备案申请4步、变更、已备案 | `filing_*` |
| 系统支撑 | 用户、附件、审核、字典、区划 | `sys_*`、`audit_record` |
> **阅读指引**§2 ER 图与关联矩阵 → **§3 每张表作用与关系(核心)** → §4§8 字段明细 → §11 表清单总览
### 1.2 命名规范
| 项 | 规范 |
|----|------|
| 表名 | 小写 + 下划线;前缀 `sys_` / `org_` / `staff_` / `filing_` / `equip_` |
| 字段 | Java 驼峰 → 数据库下划线,如 `createTime``create_time` |
| 主键 | `id` BIGINT UNSIGNED |
| 外键 | `{实体}_id`,逻辑外键,应用层约束 |
| 日期 | **DATE**:仅年月日(出生日期、证书有效期、签署日期等) |
| 时间 | **DATETIME**:年月日时分秒(创建、提交、审核、登录等) |
| 逻辑删除 | 字段名固定 **`deleted`**(不转下划线),`0` 未删 / `1` 已删 |
### 1.3 通用字段(与 MyBatis-Plus BaseEntity 对齐)
业务表(可增删改)均包含以下 5 个字段:
```java
/** 创建时间 */
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/** 创建人 */
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 更新时间 */
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
/** 更新人 */
@TableField(fill = FieldFill.INSERT_UPDATE)
private String updateBy;
/** 删除标识 0-否 1-是 */
@TableLogic(value = "0", delval = "1")
@TableField(fill = FieldFill.INSERT)
private Integer deleted;
```
对应 DDL
```sql
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
create_by VARCHAR(64) DEFAULT NULL COMMENT '创建人',
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
update_by VARCHAR(64) DEFAULT NULL COMMENT '更新人',
deleted TINYINT NOT NULL DEFAULT 0 COMMENT '删除标识0-否1-是'
```
**例外(只增不改的流水表)** 仅保留 `create_time`、`create_by`(及业务时间字段):
- `audit_record` — 审核流水
- `org_certification_audit` — 认证审核历史
- `staff_change_log` — 人员变更记录
- `filing_change_detail` — 备案变更明细
### 1.4 附件设计
证书图片、材料扫描件、离职报告、单位介绍附件等 **不单独建业务字段存 URL**,统一走 `sys_attachment`
| biz_type | 关联 biz_id | 原型场景 |
|----------|-------------|----------|
| org_intro | filing_application.id / org_info.id | 单位基本情况介绍上传 |
| org_cert | org_qualification_cert.id | 机构资质证书图片 |
| staff_cert | staff_certificate.id | 人员证书附件 |
| filing_material | filing_application_material.id | 申请材料扫描件 |
| filing_commitment_sign | filing_commitment.id | 法人签名 |
| filing_commitment_seal | filing_commitment.id | 单位盖章 |
| resign_report | staff_resignation_apply.id | 离职通知报告 PDF |
| staff_ability_proof | staff_info.id | 申报专业能力证明材料 |
---
## 2. ER 关系总览
> 以下为全局 ER 与关联矩阵;**每张表的业务职责、上游引用、下游被引用** 见 [§3 数据表作用与关系说明](#3-数据表作用与关系说明)。
```mermaid
erDiagram
org_info ||--o{ org_department : "org_id"
org_department ||--o{ org_position : "dept_id"
org_info ||--o{ staff_info : "org_id"
org_department ||--o{ staff_info : "dept_id"
org_position ||--o{ staff_info : "position_id"
staff_info ||--o{ staff_certificate : "staff_id"
org_info ||--o{ org_qualification_cert : "org_id"
org_info ||--o{ org_certification_audit : "org_id"
org_info ||--o{ equip_info : "org_id"
org_info ||--o{ filing_application : "org_id"
filing_application ||--o{ filing_application_material : "application_id"
filing_application ||--o{ filing_application_staff : "application_id"
filing_application_staff ||--o{ filing_application_staff_cert : "application_staff_id"
filing_application ||--o| filing_commitment : "application_id"
filing_application ||--o| filing_record : "application_id"
filing_record ||--o{ filing_change_record : "filing_record_id"
filing_change_record ||--o{ filing_change_detail : "change_record_id"
staff_info ||--o{ staff_change_log : "staff_id"
staff_info ||--o{ staff_resignation_apply : "staff_id"
sys_user ||--o| staff_info : "user_id"
sys_user }o--|| org_info : "org_id"
sys_region ||--o{ filing_record : "filing_region_id"
sys_region ||--o{ org_info : "region_*_id"
```
### 2.1 关联矩阵
| 主表 | 从表 | 关系 | 关联字段 | 说明 |
|------|------|------|----------|------|
| org_info | org_department | 1:N | org_id | 部门树 |
| org_department | org_position | 1:N | dept_id | 部门下岗位 |
| org_info | staff_info | 1:N | org_id | 机构人员 |
| org_department | staff_info | 1:N | dept_id | 人员所属部门 |
| org_position | staff_info | 1:N | position_id | 人员岗位 |
| staff_info | staff_certificate | 1:N | staff_id | 人员证书 |
| staff_info | staff_change_log | 1:N | staff_id | 变更追溯 |
| staff_info | staff_resignation_apply | 1:N | staff_id | 离职申请 |
| org_info | org_qualification_cert | 1:N | org_id | 机构资质 |
| org_info | equip_info | 1:N | org_id | 装备 |
| org_info | filing_application | 1:N | org_id | 备案申请 |
| filing_application | filing_application_material | 1:N | application_id | 步骤2材料 |
| filing_application | filing_application_staff | 1:N | application_id | 步骤3人员 |
| filing_application_staff | filing_application_staff_cert | 1:N | application_staff_id | 步骤3人员证书 |
| filing_application | filing_commitment | 1:1 | application_id | 步骤4承诺书 |
| filing_application | filing_record | 1:1 | application_id | 审核通过后生成 |
| filing_record | filing_change_record | 1:N | filing_record_id | 备案变更 |
| filing_change_record | filing_change_detail | 1:N | change_record_id | 变更明细 |
| filing_change_record | filing_application | N:1 | change_application_id | 变更类申请 |
| sys_user | staff_info | 1:1 | user_id | 可选绑定 |
| sys_attachment | 各业务 | N:1 | biz_type + biz_id | 附件 |
| sys_region | org_info | 1:N | region_county_id 等 | 机构所属区划 |
| sys_region | filing_application / filing_record | 1:N | filing_region_id | 备案属地 |
| sys_dict | sys_dict_item | 1:N | dict_id | 字典项 |
| audit_record | 各审核业务 | N:1 | biz_type + biz_id | 审核流水 |
| org_info | org_certification_audit | 1:N | org_id | 认证审核历史 |
| org_info | sys_user | 1:N | org_id | 机构用户 |
| staff_info | filing_application_staff | 1:N | staff_id | 备案时引用人员(可选) |
| staff_certificate | filing_application_staff_cert | 1:N | staff_cert_id | 备案时引用证书(可选) |
---
## 3. 数据表作用与关系说明
> 本节按业务域列出 **全部 24 张表** 的职责及与其他表的关联,便于开发理解数据流向。
> 箭头含义:`A → B` 表示 A 表通过外键字段引用 B 表(或多对一归属 B
### 3.1 系统支撑域
#### sys_user — 系统用户
| 项 | 说明 |
|----|------|
| **作用** | 存储平台登录账号,支撑机构端、监管端身份认证;人员开通账号、重置密码均操作此表。 |
| **对应原型** | 人员信息管理(账号列、重置密码);认证/备案各模块的操作主体。 |
| **引用(上游)** | `org_info``org_id`,机构用户必填;监管用户为空) |
| **被引用(下游)** | `staff_info.user_id`(人员与账号 1:1 可选绑定) |
| **关联方式** | 机构用户:`sys_user.org_id = org_info.id`;人员账号:`staff_info.user_id = sys_user.id` |
#### sys_region — 行政区划
| 项 | 说明 |
|----|------|
| **作用** | 维护省→市→区县→街道→社区树形区划,供机构地址、备案属地下拉选择与列表展示。 |
| **对应原型** | 机构信息「所属县区/镇街道/村社区」;备案列表「备案属地」。 |
| **引用(上游)** | 自关联 `parent_id → sys_region.id`(树形结构) |
| **被引用(下游)** | `org_info.region_county_id / region_street_id / region_community_id``filing_application.filing_region_id``filing_record.filing_region_id` |
| **关联方式** | 树查询:`parent_id`;机构/备案:`filing_region_id = sys_region.id` |
#### sys_dict — 数据字典
| 项 | 说明 |
|----|------|
| **作用** | 字典类型主表,定义下拉选项分类(备案状态、审核状态、设备状态等)。 |
| **对应原型** | 各页面「请选择」类筛选项、状态标签的后端枚举来源。 |
| **引用(上游)** | 无 |
| **被引用(下游)** | `sys_dict_item.dict_id` |
| **关联方式** | `sys_dict_item.dict_id = sys_dict.id` |
#### sys_dict_item — 字典项
| 项 | 说明 |
|----|------|
| **作用** | 字典具体选项值与展示标签,如「已备案」「未审核」「启用/禁用」。 |
| **对应原型** | 备案状态、离职审核状态、设备状态等下拉框选项。 |
| **引用(上游)** | `sys_dict``dict_id` |
| **被引用(下游)** | 业务表通过 `dict_code + item_value` 逻辑引用,无物理外键 |
| **关联方式** | 查询:`sys_dict.dict_code = 'filing_status'` JOIN `sys_dict_item` |
#### sys_attachment — 通用附件
| 项 | 说明 |
|----|------|
| **作用** | 统一管理各业务上传文件PDF 扫描件、证书图片、签名盖章等),避免各表重复存 URL。 |
| **对应原型** | 资质证书图片、申请材料上传、离职通知报告、承诺书签章、单位介绍附件等。 |
| **引用(上游)** | 无物理 FK通过 `biz_type + biz_id` 逻辑关联各业务主键 |
| **被引用(下游)** | 见 §1.4 `biz_type` 映射表 |
| **关联方式** | `WHERE biz_type = 'org_cert' AND biz_id = org_qualification_cert.id` |
#### audit_record — 审核流水
| 项 | 说明 |
|----|------|
| **作用** | 记录各类业务的提交、通过、驳回、退回操作及意见,用于审计追溯与状态机还原。 |
| **对应原型** | 机构认证审核、备案审核、离职审核、备案变更审核的状态流转历史。 |
| **引用(上游)** | 无;`biz_type + biz_id` 指向具体业务记录 |
| **被引用(下游)** | 无(只增不改的流水表) |
| **关联方式** | `biz_type='filing_application' AND biz_id=filing_application.id` |
---
### 3.2 机构与企业域
#### org_info — 机构基本信息
| 项 | 说明 |
|----|------|
| **作用** | **核心主数据表**。存储安全评价机构主体信息,承载首次「认证信息」填报、日常「机构信息管理」维护,并为备案申请提供基础数据。 |
| **对应原型** | 认证信息(填写→审核中→通过);机构信息管理;备案申请第一步单位信息。 |
| **引用(上游)** | `sys_region`(三区划 ID |
| **被引用(下游)** | `sys_user`、`org_department`、`org_position`、`staff_info`、`org_qualification_cert`、`equip_info`、`filing_application`、`filing_record`、`org_certification_audit`、`staff_change_log`、`staff_resignation_apply`(均含 `org_id` |
| **关联方式** | 机构维度数据隔离:`*.org_id = org_info.id` |
#### org_certification_audit — 机构认证审核记录
| 项 | 说明 |
|----|------|
| **作用** | 每次提交机构认证时生成一条审核记录,保留提交快照与审核结果,支持「认证审核中/通过/驳回」历史查询。 |
| **对应原型** | 认证信息步骤条:填写信息 → 认证审核中 → 认证通过。 |
| **引用(上游)** | `org_info``org_id` |
| **被引用(下游)** | 无;可与 `audit_record``biz_type=org_certification`)并行写入 |
| **关联方式** | `org_certification_audit.org_id = org_info.id` |
#### org_qualification_cert — 机构资质证书
| 项 | 说明 |
|----|------|
| **作用** | 维护机构持有的安全评价等资质证书(等级、编号、有效期、发证机关),证书图片走 `sys_attachment`。 |
| **对应原型** | 企业信息管理 → 资质信息管理(新增/编辑/禁用/删除证书)。 |
| **引用(上游)** | `org_info``org_id`);附件 `sys_attachment``biz_type=org_cert` |
| **被引用(下游)** | 备案变更:资质变更时触发 `filing_change_record``change_type=qualification` |
| **关联方式** | `org_qualification_cert.org_id = org_info.id` |
---
### 3.3 组织与人员域
#### org_department — 部门
| 项 | 说明 |
|----|------|
| **作用** | 机构内部组织架构,支持多级部门树(原型左侧过滤树:第一级别、第二级别…)。 |
| **对应原型** | 企业信息管理 → 部门岗位管理 → 部门列表/新增/编辑。 |
| **引用(上游)** | `org_info``org_id`);自关联 `parent_id` |
| **被引用(下游)** | `org_position.dept_id``staff_info.dept_id` |
| **关联方式** | 树:`parent_id = 0` 为根;人员:`staff_info.dept_id = org_department.id` |
#### org_position — 岗位
| 项 | 说明 |
|----|------|
| **作用** | 定义部门下的岗位及职责,人员录入时选择岗位。 |
| **对应原型** | 部门岗位管理 → 添加岗位/编辑岗位(岗位名称、岗位职责、备注)。 |
| **引用(上游)** | `org_info``org_id``org_department``dept_id` |
| **被引用(下游)** | `staff_info.position_id` |
| **关联方式** | `org_position.dept_id = org_department.id``staff_info.position_id = org_position.id` |
#### staff_info — 人员信息
| 项 | 说明 |
|----|------|
| **作用** | 机构从业人员主数据,含基本信息、学历经历、专业能力;列表展示部门/岗位/证照摘要;变更时写 `staff_change_log`。 |
| **对应原型** | 人员信息管理(列表、新增、查看、编辑);备案向导第三步人员(可引用本表)。 |
| **引用(上游)** | `org_info`、`org_department`、`org_position`、`sys_user`(均可空) |
| **被引用(下游)** | `staff_certificate`、`staff_change_log`、`staff_resignation_apply``filing_application_staff.staff_id`(可选) |
| **关联方式** | `staff_info.org_id = org_info.id`;证书:`staff_certificate.staff_id = staff_info.id` |
#### staff_certificate — 人员证书
| 项 | 说明 |
|----|------|
| **作用** | 人员持有的各类执业/作业证书,含类别、编号、有效期;证书附件走 `sys_attachment`。 |
| **对应原型** | 人员信息管理 → 添加证书/编辑证书/查看证书详情。 |
| **引用(上游)** | `staff_info``staff_id``org_info``org_id` 冗余便于按机构查);`sys_attachment``biz_type=staff_cert` |
| **被引用(下游)** | `filing_application_staff_cert.staff_cert_id`(备案快照可选来源) |
| **关联方式** | `staff_certificate.staff_id = staff_info.id` |
#### staff_change_log — 人员变更记录
| 项 | 说明 |
|----|------|
| **作用** | 人员信息修改时逐字段记录变更前后值,支撑「人员变更管理」列表的变更次数与变更明细查看。 |
| **对应原型** | 人员变更管理(变更事项、变更时间、操作人);变更内容如「法人:张三→李四」。 |
| **引用(上游)** | `staff_info``staff_id``org_info``org_id` |
| **被引用(下游)** | 无;变更可能间接触发 `filing_change_record`(机构已有备案时) |
| **关联方式** | `staff_change_log.staff_id = staff_info.id`;同步更新 `staff_info.change_count` |
#### staff_resignation_apply — 人员离职申请
| 项 | 说明 |
|----|------|
| **作用** | 人员离职申请单,含离职原因、预计离职日期、离职通知报告;机构管理员审核后更新人员就职状态。 |
| **对应原型** | 人员离职申请(新增/查看);人员变更管理 → 离职审核(通过/退回)。 |
| **引用(上游)** | `staff_info``staff_id``org_info``org_id``sys_attachment``biz_type=resign_report` |
| **被引用(下游)** | `audit_record``biz_type=staff_resignation`);审核通过 → 更新 `staff_info.employment_status=2` |
| **关联方式** | `staff_resignation_apply.staff_id = staff_info.id` |
---
### 3.4 装备域
#### equip_info — 装备信息
| 项 | 说明 |
|----|------|
| **作用** | 评价机构检测仪器设备台账,含分类、型号、流量、校准信息及启用/禁用状态。 |
| **对应原型** | 企业信息管理 → 装备信息管理(新增/编辑/查看/启用禁用/删除)。 |
| **引用(上游)** | `org_info``org_id` |
| **被引用(下游)** | 无(独立主数据;二期监控模块可引用) |
| **关联方式** | `equip_info.org_id = org_info.id` |
---
### 3.5 资质备案域
#### filing_application — 备案申请主表
| 项 | 说明 |
|----|------|
| **作用** | 备案业务**流程主表**,驱动 4 步向导(基本→材料→人员→承诺书),管理草稿/提交/审核状态;新备案与变更备案共用,通过后生成 `filing_record`。 |
| **对应原型** | 资质申请管理 → 资质备案申请;备案变更管理中的编辑表单。 |
| **引用(上游)** | `org_info``org_id``sys_region``filing_region_id``filing_record``parent_filing_record_id`,变更备案时) |
| **被引用(下游)** | `filing_application_material`、`filing_application_staff`、`filing_commitment`;审核通过 → `filing_record``filing_change_record.change_application_id` |
| **关联方式** | 子表均 `application_id = filing_application.id`;通过后 `filing_record.application_id = filing_application.id` |
#### filing_application_material — 备案申请材料
| 项 | 说明 |
|----|------|
| **作用** | 备案向导第 2 步「申请材料清单」行数据,每条材料对应扫描件附件。 |
| **对应原型** | 资质备案申请 → 申请材料清单(内容、格式 pdf、注释、上传附件。 |
| **引用(上游)** | `filing_application``application_id``sys_attachment``biz_type=filing_material` |
| **被引用(下游)** | 无 |
| **关联方式** | `filing_application_material.application_id = filing_application.id` |
#### filing_application_staff — 备案申请人员快照
| 项 | 说明 |
|----|------|
| **作用** | 备案向导第 3 步人员列表;申请提交时从 `staff_info` 复制或手工录入,**与主数据隔离**,保证备案历史不受后续人员变更影响。 |
| **对应原型** | 资质备案申请 → 人员信息(姓名、类型、职务、职称、查看证书)。 |
| **引用(上游)** | `filing_application``application_id``staff_info``staff_id`,可选) |
| **被引用(下游)** | `filing_application_staff_cert``application_staff_id` |
| **关联方式** | `filing_application_staff.application_id = filing_application.id` |
#### filing_application_staff_cert — 备案申请人员证书快照
| 项 | 说明 |
|----|------|
| **作用** | 备案人员关联证书的时点快照,字段对齐 `staff_certificate`,支持「查看证书」而不回查已变更的主数据。 |
| **对应原型** | 备案人员信息 → 查看证书(证书类型、作业类别、编号、有效期等)。 |
| **引用(上游)** | `filing_application``application_id``filing_application_staff``application_staff_id``staff_certificate``staff_cert_id`,可选) |
| **被引用(下游)** | `sys_attachment``biz_type=filing_staff_cert` |
| **关联方式** | `application_staff_id = filing_application_staff.id` |
#### filing_commitment — 法定代表人承诺书
| 项 | 说明 |
|----|------|
| **作用** | 备案向导第 4 步,记录法人签署信息;签名、盖章文件存 `sys_attachment`。 |
| **对应原型** | 资质备案申请 → 申请单位法定代表人承诺书(签名、盖章、日期)。 |
| **引用(上游)** | `filing_application``application_id`1:1 |
| **被引用(下游)** | `sys_attachment``filing_commitment_sign` / `filing_commitment_seal` |
| **关联方式** | `filing_commitment.application_id = filing_application.id`(唯一) |
#### filing_record — 已备案资质记录
| 项 | 说明 |
|----|------|
| **作用** | 备案审核通过后的**正式备案台账**,含备案编号、属地、业务范围、状态、变更次数;列表即「已备案资质管理」。 |
| **对应原型** | 已备案资质管理;资质备案/变更列表中的「已备案」状态行。 |
| **引用(上游)** | `org_info``org_id``filing_application``application_id``sys_region``filing_region_id` |
| **被引用(下游)** | `filing_application.filing_record_id``filing_change_record.filing_record_id``filing_application.parent_filing_record_id`(变更备案) |
| **关联方式** | `filing_record.application_id = filing_application.id`;变更:`filing_change_record.filing_record_id = filing_record.id` |
#### filing_change_record — 备案变更记录
| 项 | 说明 |
|----|------|
| **作用** | 已备案机构发生人员/资质/单位信息变更时的变更批次主记录,对应「备案变更管理」与「历史变更记录」。 |
| **对应原型** | 备案变更管理(变更次数、备案状态);说明:人员或资质变更后备案数据进入变更管理。 |
| **引用(上游)** | `filing_record``filing_record_id``org_info``org_id``filing_application``change_application_id`,变更类申请) |
| **被引用(下游)** | `filing_change_detail``change_record_id`);完成后 `filing_record.change_count + 1` |
| **关联方式** | `filing_change_record.filing_record_id = filing_record.id` |
#### filing_change_detail — 备案变更明细
| 项 | 说明 |
|----|------|
| **作用** | 单次备案变更的字段级明细,展示「由 A 变更为 B」如法人、联系电话变更。 |
| **对应原型** | 备案变更查看 → 变更内容由张三变更为李四、由152…变更为187…。 |
| **引用(上游)** | `filing_change_record``change_record_id` |
| **被引用(下游)** | 无(只增不改) |
| **关联方式** | `filing_change_detail.change_record_id = filing_change_record.id` |
---
### 3.6 表关系分层图
```
【租户根】 org_info
├── sys_user 登录账号
├── org_certification_audit 认证审核历史
├── org_qualification_cert ──→ sys_attachment(org_cert)
├── org_department
│ └── org_position
├── staff_info ──→ sys_user
│ ├── staff_certificate ──→ sys_attachment(staff_cert)
│ ├── staff_change_log
│ └── staff_resignation_apply ──→ sys_attachment(resign_report)
├── equip_info
└── filing_application ──→ sys_region(备案属地)
├── sys_attachment(org_intro)
├── filing_application_material ──→ sys_attachment(filing_material)
├── filing_application_staff ──→ staff_info(可选)
│ └── filing_application_staff_cert ──→ staff_certificate(可选)
├── filing_commitment ──→ sys_attachment(sign/seal)
└── [审核通过] filing_record ──→ sys_region
└── filing_change_record ──→ filing_application(变更类)
└── filing_change_detail
【全局】 sys_region / sys_dict / sys_dict_item / sys_attachment / audit_record
```
---
## 4. 系统与基础表(字段明细)
### 4.1 sys_user — 系统用户
> **作用**:平台登录账号,机构用户绑定机构,人员可关联账号。
> **关系**`org_id → org_info`;被 `staff_info.user_id` 引用。
原型:人员列表「账号」、重置密码;机构/监管登录主体。
| 字段 | 类型 | 说明 |
|------|------|------|
| id | BIGINT | PK |
| org_id | BIGINT | 所属机构,监管用户 NULL |
| username | VARCHAR(64) | 登录账号UK(username, deleted) |
| password_hash | VARCHAR(255) | 密码 |
| real_name | VARCHAR(64) | 姓名 |
| phone | VARCHAR(20) | 手机 |
| user_type | TINYINT | 1机构 2监管 3管理员 |
| status | TINYINT | 0禁用 1正常 |
| last_login_time | **DATETIME** | 最后登录 |
| + 通用字段 | | |
### 4.2 sys_region — 行政区划
> **作用**:省市区街道社区树形区划,支撑机构地址与备案属地下拉。
> **关系**:自关联 `parent_id`;被 `org_info`、`filing_application`、`filing_record` 引用。
原型:备案属地列表(省市区)、机构「所属县区/镇街道/村社区」。
| 字段 | 类型 | 说明 |
|------|------|------|
| id | BIGINT | PK |
| parent_id | BIGINT | 父级 |
| region_code | VARCHAR(12) | 国标码 |
| region_name | VARCHAR(64) | 名称 |
| region_level | TINYINT | 1省2市3区县4街道5社区 |
| sort_order | INT | 排序 |
| + 通用字段 | | |
### 4.3 sys_dict / sys_dict_item — 数据字典
> **作用**`sys_dict` 定义字典类型;`sys_dict_item` 存储具体选项值,供各业务状态下拉与展示。
> **关系**`sys_dict_item.dict_id → sys_dict.id`;业务表通过 dict_code 逻辑引用。
| dict_code | 用途 |
|-----------|------|
| filing_status | 未备案 / 已备案 / 驳回 |
| cert_audit_status | 草稿 / 审核中 / 已通过 / 已驳回 |
| org_business_status | 开业 / 停业等 |
| staff_employment_status | 在职 / 离职 |
| resign_audit_status | 未审核 / 已审核 / 已退回 |
| equip_enable_status | 启用 / 禁用 |
| material_format | pdf 等 |
### 4.4 sys_attachment — 通用附件
> **作用**:各业务上传文件的统一存储入口,通过 `biz_type + biz_id` 关联业务记录。
> **关系**:逻辑关联多表,无物理外键;详见 §1.4。
见 §1.4。
### 4.5 audit_record — 审核流水(无 deleted
> **作用**:跨业务审核操作流水,记录提交/通过/驳回/退回及意见。
> **关系**`biz_type + biz_id` 指向 org_certification / filing_application / staff_resignation / filing_change 等业务记录。
| 字段 | 类型 | 说明 |
|------|------|------|
| biz_type | VARCHAR(32) | org_certification / filing_application / staff_resignation / filing_change |
| biz_id | BIGINT | 业务ID |
| action | VARCHAR(16) | submit / approve / reject / return |
| from_status / to_status | VARCHAR(32) | 状态流转 |
| opinion | TEXT | 意见 |
| operate_time | **DATETIME** | 操作时间 |
| create_time | **DATETIME** | |
| create_by | VARCHAR(64) | 操作人 |
---
## 5. 机构与企业信息(字段明细)
### 5.1 org_info — 机构基本信息
> **作用**:机构核心主数据,承载认证填报与日常维护,是多数业务表的租户根。
> **关系**`region_*_id → sys_region`;被 org/staff/filing/equip 等全部 `org_id` 子表引用。详见 §3.2。
原型:认证信息、机构信息管理、备案申请第一步字段。
| 字段 | 类型 | 原型字段 |
|------|------|----------|
| org_name | VARCHAR(200) | 生产经营单位名称 |
| credit_code | VARCHAR(18) | 统一社会信用代码 |
| register_address | VARCHAR(500) | 注册地址 |
| business_address | VARCHAR(500) | 经营地址 / 办公地址 |
| longitude / latitude | DECIMAL | 所在地坐标 |
| region_county_id / region_street_id / region_community_id | BIGINT | 所属县区、镇街道、村社区 |
| safety_industry_category | VARCHAR(100) | 安全生产监管行业类别 |
| ownership_type | VARCHAR(32) | 归属类型 |
| gb_industry_code | VARCHAR(20) | 国民经济行业分类 |
| legal_representative / legal_rep_phone | | 法定代表人及电话 |
| principal / principal_phone | | 主要负责人 |
| safety_dept_head / safety_dept_phone | | 安全管理部门负责人 |
| safety_vp / safety_vp_phone | | 主管安全副总 |
| production_date | **DATE** | 投产日期 |
| business_status | VARCHAR(16) | 企业经营状态 |
| disclosure_url | VARCHAR(500) | 信息公开网址 |
| workplace_area / archive_room_area | DECIMAL | 工作场所/档案室面积 |
| full_time_evaluator_count | INT | 专职安全评价师数量 |
| registered_safety_engineer_count | INT | 注册安全工程师数量 |
| fixed_asset_total | DECIMAL | 固定资产总值(万元) |
| org_intro | TEXT | 单位基本情况介绍 |
| cert_status | TINYINT | 0草稿1审核中2已通过3已驳回 |
| cert_submit_time | **DATETIME** | 认证提交 |
| cert_approve_time | **DATETIME** | 认证通过 |
| + 通用字段 | | |
### 5.2 org_certification_audit — 机构认证审核
> **作用**:记录每次机构认证提交与审核结果,保留提交快照。
> **关系**`org_id → org_info`;可与 `audit_record`biz_type=org_certification并行。
| 字段 | 类型 | 说明 |
|------|------|------|
| org_id | BIGINT | 机构 |
| audit_status | TINYINT | 1审核中2通过3驳回 |
| submit_snapshot | JSON | 提交快照 |
| audit_opinion | TEXT | 意见 |
| audit_by | VARCHAR(64) | 审核人 |
| audit_time | **DATETIME** | 审核时间 |
| create_time / create_by | | 仅创建字段 |
### 5.3 org_qualification_cert — 机构资质证书
> **作用**:机构持有的资质证书台账,变更时可触发备案变更流程。
> **关系**`org_id → org_info`;附件 `sys_attachment(biz_type=org_cert)`。
原型:资质信息管理(证照类型、证书名称、编号、有效期、发证机关、证书图片)。
| 字段 | 类型 | 说明 |
|------|------|------|
| org_id | BIGINT | 机构 |
| cert_type | VARCHAR(64) | 证照类型 |
| cert_name | VARCHAR(128) | 证书名称 |
| cert_no | VARCHAR(64) | 证明编号 |
| issue_org | VARCHAR(128) | 发证机关 |
| issue_date | **DATE** | 发证日期 |
| valid_start_date / valid_end_date | **DATE** | 有效期 |
| remark | VARCHAR(500) | 备注 |
| enable_status | TINYINT | 1正常0禁用原型「禁用」 |
| 附件 | sys_attachment | biz_type=org_cert |
| + 通用字段 | | |
---
## 6. 组织与人员(字段明细)
### 6.1 org_department — 部门
> **作用**:机构组织架构树,支撑部门岗位管理与人员部门归属。
> **关系**`org_id → org_info``parent_id` 自关联;被 `org_position`、`staff_info` 引用。
原型:部门岗位管理,树形筛选(第一级别、第二级别…)。
| 字段 | 类型 | 说明 |
|------|------|------|
| org_id | BIGINT | 机构 |
| parent_id | BIGINT | 父部门0根 |
| dept_name | VARCHAR(64) | 部门名称 |
| dept_level | VARCHAR(32) | 部门级别 |
| leader_name | VARCHAR(64) | 负责人 |
| sort_order | INT | 排序 |
| tree_path | VARCHAR(256) | 物化路径 |
| + 通用字段 | | |
### 6.2 org_position — 岗位
> **作用**:部门下岗位定义,含岗位职责说明。
> **关系**`org_id → org_info``dept_id → org_department`;被 `staff_info.position_id` 引用。
| 字段 | 类型 | 说明 |
|------|------|------|
| org_id / dept_id | BIGINT | 机构、部门 |
| position_name | VARCHAR(64) | 岗位名称 |
| duty_desc | VARCHAR(500) | 岗位职责 |
| remark | VARCHAR(255) | 备注 |
| + 通用字段 | | |
### 6.3 staff_info — 人员信息
> **作用**:机构从业人员主数据,关联部门岗位与账号,是证书/变更/离职的上游。
> **关系**`org_id → org_info``dept_id → org_department``position_id → org_position``user_id → sys_user`;下游见 staff_* / filing_application_staff。
原型:人员列表(用户名称、账号、部门、岗位、证照名称);详情(出生日期、性别、身份证、学历、资质范围、专业能力等)。
| 字段 | 类型 | 原型 |
|------|------|------|
| staff_name | VARCHAR(64) | 姓名 |
| gender | TINYINT | 性别 |
| id_card_no | VARCHAR(18) | 身份证号 |
| birth_date | **DATE** | 出生日期 |
| account | VARCHAR(32) | 账号 |
| dept_id / position_id | BIGINT | 部门、岗位 |
| education / graduate_school / major | | 学历、院校、专业 |
| home_address / office_address | | 现住/办公地址 |
| person_type | VARCHAR(32) | 人员类型 |
| job_title / professional_title | | 职务、职称 |
| qualification_scope | VARCHAR(255) | 资质范围 |
| career_level_cert_no | VARCHAR(64) | 职业等级及证书编号 |
| is_registered_safety_engineer | TINYINT | 是否注册安全工程师 |
| self_declared_ability | TEXT | 自我申报专业能力 |
| work_experience | TEXT | 主要学习工作经历 |
| publications | TEXT | 专著专利论文等 |
| employment_status | TINYINT | 1在职2离职 |
| change_count | INT | 信息变更数(列表冗余) |
| user_id | BIGINT | 关联 sys_user |
| + 通用字段 | | |
### 6.4 staff_certificate — 人员证书
> **作用**:人员执业/作业证书明细,列表「证照名称」数据来源。
> **关系**`staff_id → staff_info``org_id → org_info`;附件 `sys_attachment(staff_cert)`;可被 `filing_application_staff_cert` 快照引用。
原型:证书类型、作业类别、编号、有效期、复核日期、证书图片。
| 字段 | 类型 | 说明 |
|------|------|------|
| staff_id / org_id | BIGINT | 人员、机构 |
| cert_name / cert_category / cert_work_category | | 证照名称、类别、作业类别 |
| cert_no | VARCHAR(64) | 证书编号 |
| issue_org | VARCHAR(128) | 发证机关 |
| valid_start_date / valid_end_date / review_date | **DATE** | 有效期、复核 |
| 附件 | sys_attachment | biz_type=staff_cert |
| + 通用字段 | | |
### 6.5 staff_change_log — 人员变更记录
> **作用**:人员字段变更的审计日志,驱动「信息变更数」统计。
> **关系**`staff_id → staff_info``org_id → org_info`;只增不改,无 deleted。
原型:变更事项、变更时间、操作人;人员变更管理列表「信息变更数」。
| 字段 | 类型 | 说明 |
|------|------|------|
| staff_id / org_id | BIGINT | |
| change_item | VARCHAR(64) | 变更事项 |
| field_name | VARCHAR(64) | 程序字段名 |
| old_value / new_value | VARCHAR(500) | 变更前后 |
| change_time | **DATETIME** | 变更时间 |
| create_time / create_by | | 操作人 |
### 6.6 staff_resignation_apply — 人员离职申请
> **作用**:离职申请与审核,通过后更新 `staff_info.employment_status`。
> **关系**`staff_id → staff_info``org_id → org_info`;附件 `sys_attachment(resign_report)`;可写 `audit_record`。
原型:申请人、申请时间、离职原因、备注、预计离职日期、离职通知报告;审核状态、退回原因。
| 字段 | 类型 | 说明 |
|------|------|------|
| staff_id / org_id | BIGINT | |
| applicant_name | VARCHAR(64) | 申请人 |
| apply_time | **DATETIME** | 申请时间 |
| expected_leave_date | **DATE** | 预计离职日期 |
| leave_reason / remark | TEXT | 离职原因、备注 |
| audit_status | TINYINT | 0未审核1已审核2已退回 |
| reject_reason | TEXT | 退回原因 |
| audit_by / audit_time | | 审核人、审核时间 |
| 附件 | sys_attachment | biz_type=resign_report |
| + 通用字段 | | |
---
## 7. 装备管理(字段明细)
### 7.1 equip_info — 装备信息
> **作用**:评价机构仪器设备台账,独立主数据。
> **关系**`org_id → org_info`;无下游业务表(二期监控可引用)。
原型:仪器分类、设备类型、设备名称、型号、流量、厂家、校准单位/初值、现场校验类型、是否双路、启用/禁用。
| 字段 | 类型 | 说明 |
|------|------|------|
| instrument_category / instrument_type / device_type | VARCHAR | 分类 |
| device_name / model | | 名称、型号 |
| flow_desc / min_flow / max_flow | | 流量说明 |
| manufacturer | VARCHAR(128) | 厂家 |
| calibration_unit / calibration_initial_value | | 校准 |
| on_site_calibration_type | VARCHAR(64) | 现场校验类型 |
| is_dual_channel | TINYINT | 是否双路 |
| enable_status | TINYINT | 1启用0禁用 |
| purchase_date | **DATE** | 登记日期 |
| + 通用字段 | | |
---
## 8. 资质备案(字段明细)
### 8.1 filing_application — 备案申请主表
> **作用**:备案 4 步向导流程主表,串联材料/人员/承诺书子表,审核通过后生成 `filing_record`。
> **关系**`org_id → org_info``filing_region_id → sys_region`;子表 `application_id`;详见 §3.5。
原型4 步向导 + 备案变更编辑;列表筛选项(备案编号、备案属地、备案状态、备案单位)。
| 字段 | 类型 | 步骤/说明 |
|------|------|-----------|
| application_no | VARCHAR(32) | 申请编号 |
| application_type | TINYINT | 1新备案2变更备案 |
| filing_region_id | BIGINT | 备案属地 |
| filing_unit_name / filing_unit_type | | 备案单位、类型 |
| register_address / office_address | | 注册/办公地址 |
| credit_code / qualification_cert_no | | 信用代码、资质证书编号 |
| legal_rep_and_phone / contact_and_phone | | 法人及电话、联系人及电话 |
| disclosure_url | | 信息公开网址 |
| fixed_asset_total / archive_room_area | | 固定资产、档案室面积 |
| full_time_evaluator_count / registered_safety_engineer_count | | 评价师、注安师数量 |
| workplace_area / org_intro | | 建筑面积、单位介绍 |
| business_scope | VARCHAR(500) | 备案安全评价业务范围 |
| current_step | TINYINT | 1基本2材料3人员4承诺书 |
| apply_status | TINYINT | 0草稿1提交2审核中3通过4驳回 |
| filing_record_id | BIGINT | 通过后关联 |
| parent_filing_record_id | BIGINT | 变更备案原记录 |
| submit_time / approve_time | **DATETIME** | 提交、通过时间 |
| 附件 | sys_attachment | biz_type=org_intro |
| + 通用字段 | | |
### 8.2 filing_application_material — 申请材料步骤2
> **作用**:备案向导第 2 步材料清单行。
> **关系**`application_id → filing_application`;附件 `sys_attachment(filing_material)`。
| 字段 | 类型 | 原型 |
|------|------|------|
| material_content | VARCHAR(255) | 申请材料目录 |
| material_type | VARCHAR(32) | 纸质版扫描件 |
| file_format | VARCHAR(16) | pdf |
| remark | VARCHAR(500) | 注释 |
| sort_order | INT | 内容序号 |
| 附件 | sys_attachment | biz_type=filing_material |
| + 通用字段 | | |
### 8.3 filing_application_staff — 备案人员快照步骤3
> **作用**:备案时点人员快照,与 `staff_info` 隔离。
> **关系**`application_id → filing_application``staff_id → staff_info`(可选);下游 `filing_application_staff_cert`。
| 字段 | 类型 | 原型 |
|------|------|------|
| staff_id | BIGINT | 可选,来自 staff_info |
| staff_name | VARCHAR(64) | 人员姓名 |
| person_type / job_title / professional_title | | 类型、职务、职称 |
| sort_order | INT | 序号 |
| + 通用字段 | | |
### 8.4 filing_application_staff_cert — 备案人员证书快照
> **作用**:备案人员证书时点快照,支持「查看证书」。
> **关系**`application_staff_id → filing_application_staff``staff_cert_id → staff_certificate`(可选)。
原型:人员信息步骤「查看证书」— 与 `staff_certificate` 字段对齐,申请时独立快照。
| 字段 | 类型 | 说明 |
|------|------|------|
| application_id | BIGINT | 备案申请 |
| application_staff_id | BIGINT | 备案人员 |
| staff_cert_id | BIGINT | 来源证书,可空 |
| cert_name / cert_category / cert_work_category / cert_no | | 同 staff_certificate |
| valid_start_date / valid_end_date / review_date | **DATE** | |
| 附件 | sys_attachment | biz_type=filing_staff_cert |
| + 通用字段 | | |
### 8.5 filing_commitment — 法定代表人承诺书步骤4
> **作用**:备案第 4 步法人承诺签署记录。
> **关系**`application_id → filing_application`1:1签章附件走 `sys_attachment`。
| 字段 | 类型 | 说明 |
|------|------|------|
| application_id | BIGINT | 1:1 |
| legal_rep_name | VARCHAR(64) | 法定代表人 |
| sign_date | **DATE** | 签署日期 |
| content_version | VARCHAR(16) | 模板版本 |
| 签名/盖章 | sys_attachment | filing_commitment_sign / seal |
| + 通用字段 | | |
### 8.6 filing_record — 已备案资质
> **作用**:备案通过后正式台账,「已备案资质管理」列表数据源。
> **关系**`org_id → org_info``application_id → filing_application``filing_region_id → sys_region`;下游 `filing_change_record`。
原型列表:备案属地、备案单位、备案编号、备案业务范围、备案状态、变更次数。
| 字段 | 类型 | 说明 |
|------|------|------|
| org_id | BIGINT | 机构 |
| application_id | BIGINT | 来源申请 |
| filing_no | VARCHAR(32) | 备案编号 |
| filing_region_id | BIGINT | 备案属地 |
| filing_unit_name | VARCHAR(200) | 备案单位 |
| business_scope | VARCHAR(500) | 备案业务范围 |
| filing_status | VARCHAR(16) | 未备案/已备案/驳回 |
| change_count | INT | 变更次数 |
| filing_time | **DATETIME** | 备案时间 |
| snapshot_json | JSON | 通过时全量快照 |
| + 通用字段 | | |
### 8.7 filing_change_record — 备案变更
> **作用**:已备案机构变更批次主记录,含变更次数统计。
> **关系**`filing_record_id → filing_record``change_application_id → filing_application`;下游 `filing_change_detail`。
原型:备案变更管理;人员/资质变更后进入;历史变更记录。
| 字段 | 类型 | 说明 |
|------|------|------|
| filing_record_id / org_id | BIGINT | |
| change_application_id | BIGINT | 变更类 filing_application |
| change_type | VARCHAR(32) | personnel / qualification / org_info / mixed |
| change_summary | VARCHAR(500) | 摘要 |
| change_status | TINYINT | 0进行中1完成2驳回 |
| change_time | **DATETIME** | 完成时间 |
| + 通用字段 | | |
### 8.8 filing_change_detail — 备案变更明细
> **作用**:备案变更字段级前后值对比明细。
> **关系**`change_record_id → filing_change_record`;只增不改。
原型「由张三变更为李四」「由152…变更为187…」。
| 字段 | 类型 | 说明 |
|------|------|------|
| change_record_id | BIGINT | 变更记录 |
| change_field / change_field_label | | 字段、展示名 |
| old_value / new_value | VARCHAR(500) | 变更前后 |
| create_time / create_by | | 仅创建 |
---
## 9. 业务流程与状态
### 9.1 机构认证org_info.cert_status
```
0草稿 --暂存/提交--> 1审核中 --通过--> 2已通过
└──驳回--> 3已驳回 --再提交--> 1审核中
```
### 9.2 备案申请向导
| current_step | 页面 | 表 |
|:--:|------|-----|
| 1 | 基本信息 + 上传附件 | filing_application + sys_attachment(org_intro) |
| 2 | 申请材料清单 | filing_application_material + sys_attachment |
| 3 | 人员信息 + 证书 | filing_application_staff + filing_application_staff_cert |
| 4 | 法定代表人承诺书 | filing_commitment + sys_attachment |
提交后 `apply_status` → 1/2监管审核通过 → 写入 `filing_record``filing_application.filing_record_id` 回写。
### 9.3 备案变更触发
机构存在有效 `filing_record` 时,以下变更应生成 `filing_change_record` + `filing_change_detail`,并 `change_count + 1`
- `staff_info` / `staff_certificate` 增删改
- `org_qualification_cert` 变更
- `org_info` 法人、联系方式等关键字段变更
### 9.4 人员离职
```
staff_resignation_apply.audit_status:
0未审核 --通过--> 1已审核 → staff_info.employment_status = 2
└──退回--> 2已退回
```
---
## 10. 索引与查询建议
1. 列表:`org_id + deleted + 状态字段 + create_time DESC`
2. 唯一键与逻辑删除:业务唯一键使用 `(code, deleted)` 组合,避免软删后无法重建
3. MyBatis-Plus 全局:`@TableLogic` 自动追加 `deleted = 0`
4. 流水表不加 `deleted`,不做更新
5. 大 JSONsnapshot_json可按年归档
---
## 11. 表清单总览(共 24 张)
| # | 表名 | 作用 | 主要关联 | 通用字段 |
|---|------|------|----------|----------|
| 1 | sys_user | 登录账号与权限主体 | org_info ← org_id→ staff_info | 完整 |
| 2 | sys_region | 行政区划树 | 自关联 parent_id→ org_info / filing_* | 完整 |
| 3 | sys_dict | 字典类型 | → sys_dict_item | 完整 |
| 4 | sys_dict_item | 字典选项值 | sys_dict ← dict_id | 完整 |
| 5 | sys_attachment | 统一文件存储 | 逻辑关联各业务 biz_type+biz_id | 完整 |
| 6 | audit_record | 跨业务审核流水 | 逻辑关联各审核业务 | 仅 create |
| 7 | org_info | **机构租户根**、认证与主数据 | → 几乎全部 org_id 子表 | 完整 |
| 8 | org_certification_audit | 机构认证审核历史 | org_info ← org_id | 仅 create |
| 9 | org_qualification_cert | 机构资质证书 | org_info ← org_id→ sys_attachment | 完整 |
| 10 | org_department | 部门组织树 | org_info ← org_id→ org_position / staff_info | 完整 |
| 11 | org_position | 部门岗位 | org_department ← dept_id→ staff_info | 完整 |
| 12 | staff_info | 人员主数据 | org_info / dept / position / sys_user→ staff_* | 完整 |
| 13 | staff_certificate | 人员证书 | staff_info ← staff_id→ filing_staff_cert 快照 | 完整 |
| 14 | staff_change_log | 人员变更审计 | staff_info ← staff_id | 仅 create |
| 15 | staff_resignation_apply | 离职申请与审核 | staff_info ← staff_id→ sys_attachment | 完整 |
| 16 | equip_info | 仪器设备台账 | org_info ← org_id | 完整 |
| 17 | filing_application | **备案流程主表** | org_info / sys_region→ filing_* 子表 / filing_record | 完整 |
| 18 | filing_application_material | 备案材料步骤2 | filing_application ← application_id | 完整 |
| 19 | filing_application_staff | 备案人员快照步骤3 | filing_application ← application_id→ staff_cert 快照 | 完整 |
| 20 | filing_application_staff_cert | 备案人员证书快照 | filing_application_staff ← application_staff_id | 完整 |
| 21 | filing_commitment | 法人承诺书步骤4 | filing_application ← application_id1:1 | 完整 |
| 22 | filing_record | **已备案正式台账** | filing_application ← application_id→ filing_change_record | 完整 |
| 23 | filing_change_record | 备案变更批次 | filing_record ← filing_record_id→ change_detail | 完整 |
| 24 | filing_change_detail | 备案变更字段明细 | filing_change_record ← change_record_id | 仅 create |
> 各表详细说明见 **§3 数据表作用与关系说明**;字段定义见 **§4§8**。
---
## 12. DDL 脚本
完整建表见 [`database-schema.sql`](./database-schema.sql)。
---
## 13. 修订记录
| 版本 | 日期 | 说明 |
|------|------|------|
| v1.0 | 2026-06-17 | 初版 |
| v1.1 | 2026-06-17 | 对齐 MyBatis-Plus 通用字段DATE/DATETIME 区分;新增 filing_application_staff_cert附件统一 sys_attachment |
| v1.2 | 2026-06-17 | 补充每张表作用与关系说明§3、表清单关联列§11、字段节引用块 |