zcloud_gbs_safetyDutyList/docs/安全责任清单应用数据库设计文档.md

632 lines
33 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.

# 安全责任清单应用数据库设计文档
## 1. 概述
本文档描述了安全责任清单应用的数据库设计。该系统用于管理企业安全责任清单的全流程,包括清单模板管理、任务模板管理、清单下发、任务执行、执行反馈、反馈异常检测等功能。系统采用模板与实例分离的设计,清单与任务作为模板可下发给多个公司,支持多租户、多组织、数据权限控制,涵盖清单创建、下发、执行、反馈、评分、异常检测等核心业务。
### 1.1 核心设计思路
- **模板与实例分离**`task_list`(清单模板)与 `task_list_issue`(下发记录)分离,`task_detail`(任务模板)与 `task_execution`(执行记录)分离
- **一对多关系**:一个清单模板可下发给多个公司,生成多条下发记录;一个任务模板对应多条执行记录
- **反馈周期机制**:根据反馈周期类型(月/季/半年/年)自动生成周期标识,用于分组统计和异常检测
- **异常自动检测**定时任务每月1日0时检测上一周期是否有反馈无反馈则记录异常
### 1.2 表关系概览
```
task_list (清单模板)
├── task_detail (任务模板,一对多)
└── task_list_issue (下发记录,一对多)
├── task_execution (执行记录,一对多)
├── feedback (反馈记录,一对多)
└── feedback_exception (反馈异常,一对多)
```
---
## 2. 数据库表设计
### 2.1 safety_accountability_task_list任务清单表
任务清单表用于存储安全责任清单的模板信息,包括清单名称、任务级别、责任岗位、开关状态等。作为模板,可被多次下发给不同公司。
#### 2.1.1 表结构
| 字段名 | 类型 | 长度 | 允许空 | 说明 | 备注 |
|--------|------|------|--------|------|------|
| id | BIGINT | - | 否 | 主键 ID | 自增 |
| task_list_id | VARCHAR | 64 | 否 | 清单 UUID | 业务主键UUID 生成 |
| task_list_name | VARCHAR | 255 | 否 | 清单名称 | |
| task_level | TINYINT | - | 否 | 任务级别 | 1-企业级 2-部门级 3-班组级 |
| responsibility_post | VARCHAR | 255 | 否 | 责任岗位 | |
| switch_flag | TINYINT | 1 | 否 | 开启/关闭 | 0-关 1-开默认1 |
| create_corp_id | BIGINT | - | 是 | 创建公司 ID | 外键 |
| create_department_id | BIGINT | - | 是 | 创建部门 ID | 外键 |
| create_user_id | BIGINT | - | 是 | 创建人 ID | 外键 |
| status | TINYINT | - | 否 | 状态 | 1-进行中 2-已完成 3-已关闭默认1 |
| delete_enum | VARCHAR | 32 | 是 | 删除标识 | TRUE-已删除FALSE-未删除 |
| remarks | VARCHAR | 500 | 是 | 备注 | |
| create_name | VARCHAR | 50 | 是 | 创建人姓名 | 冗余字段 |
| update_name | VARCHAR | 50 | 是 | 更新人姓名 | 冗余字段 |
| tenant_id | BIGINT | - | 是 | 租户 ID | 多租户字段 |
| org_id | BIGINT | - | 是 | 组织 ID | 组织字段 |
| version | INT | - | 是 | 版本号 | 乐观锁版本号默认0 |
| create_time | DATETIME | - | 是 | 创建时间 | 默认当前时间 |
| update_time | DATETIME | - | 是 | 更新时间 | 自动更新 |
| create_id | BIGINT | - | 是 | 创建人 ID | 外键 |
| update_id | BIGINT | - | 是 | 更新人 ID | 外键 |
| env | VARCHAR | 50 | 是 | 环境标识 | |
#### 2.1.2 建表语句
```sql
CREATE TABLE `safety_accountability_task_list` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`task_list_id` varchar(64) NOT NULL COMMENT '清单UUID业务主键',
`task_list_name` varchar(255) NOT NULL COMMENT '清单名称',
`task_level` tinyint NOT NULL COMMENT '任务级别1-企业级 2-部门级 3-班组级',
`responsibility_post` varchar(255) NOT NULL COMMENT '责任岗位',
`switch_flag` tinyint(1) NOT NULL DEFAULT '1' COMMENT '开启/关闭0-关 1-开',
`create_corp_id` bigint DEFAULT NULL COMMENT '创建公司ID',
`create_department_id` bigint DEFAULT NULL COMMENT '创建部门ID',
`create_user_id` bigint DEFAULT NULL COMMENT '创建人ID',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态1-进行中 2-已完成 3-已关闭',
`delete_enum` varchar(32) DEFAULT 'FALSE' COMMENT '删除标识TRUE/FALSE',
`remarks` varchar(500) DEFAULT NULL COMMENT '备注',
`create_name` varchar(50) DEFAULT NULL COMMENT '创建人姓名',
`update_name` varchar(50) DEFAULT NULL COMMENT '更新人姓名',
`tenant_id` bigint DEFAULT NULL COMMENT '租户ID',
`org_id` bigint DEFAULT NULL COMMENT '单位ID',
`version` int DEFAULT '0' COMMENT '版本',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
`create_id` bigint DEFAULT NULL COMMENT '创建人ID',
`update_id` bigint DEFAULT NULL COMMENT '修改人ID',
`env` varchar(50) DEFAULT NULL COMMENT '环境标识',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_task_list_id` (`task_list_id`),
KEY `idx_create_corp_id` (`create_corp_id`),
KEY `idx_status_task_list_id` (`task_list_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='任务清单表';
```
#### 2.1.3 索引设计
| 索引名 | 索引类型 | 字段 | 说明 |
|--------|----------|------|------|
| PRIMARY | 主键索引 | id | 主键 |
| uk_task_list_id | 唯一索引 | task_list_id | 清单业务主键唯一 |
| idx_create_corp_id | 普通索引 | create_corp_id | 按创建公司查询 |
| idx_status_task_list_id | 普通索引 | task_list_id | 按状态和清单ID查询 |
---
### 2.2 safety_accountability_task_detail任务清单详细表
任务清单详细表用于存储清单下的任务模板信息,包括执行内容、反馈周期类型、任务分值等。每个清单可包含多个任务模板。
#### 2.2.1 表结构
| 字段名 | 类型 | 长度 | 允许空 | 说明 | 备注 |
|--------|------|------|--------|------|------|
| id | BIGINT | - | 否 | 主键 ID | 自增 |
| task_detail_id | VARCHAR | 64 | 否 | 任务详情 UUID | 业务主键UUID 生成 |
| task_list_id | VARCHAR | 64 | 否 | 任务清单主键 | 外键,关联 task_list 表 |
| execute_content | TEXT | - | 是 | 执行内容 | |
| feedback_cycle_type | TINYINT | - | 否 | 反馈周期类型 | 1-每月 2-季度 3-半年 4-年 |
| task_score | DECIMAL | 5,2 | 是 | 任务分值 | |
| task_status | TINYINT | - | 否 | 任务状态 | 1-进行中 2-已完成 3-已关闭默认1 |
| delete_enum | VARCHAR | 32 | 是 | 删除标识 | TRUE-已删除FALSE-未删除 |
| remarks | VARCHAR | 500 | 是 | 备注 | |
| create_name | VARCHAR | 50 | 是 | 创建人姓名 | 冗余字段 |
| update_name | VARCHAR | 50 | 是 | 更新人姓名 | 冗余字段 |
| tenant_id | BIGINT | - | 是 | 租户 ID | 多租户字段 |
| org_id | BIGINT | - | 是 | 组织 ID | 组织字段 |
| version | INT | - | 是 | 版本号 | 乐观锁版本号默认0 |
| create_time | DATETIME | - | 是 | 创建时间 | 默认当前时间 |
| update_time | DATETIME | - | 是 | 更新时间 | 自动更新 |
| create_id | BIGINT | - | 是 | 创建人 ID | 外键 |
| update_id | BIGINT | - | 是 | 更新人 ID | 外键 |
| env | VARCHAR | 50 | 是 | 环境标识 | |
#### 2.2.2 建表语句
```sql
CREATE TABLE `safety_accountability_task_detail` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`task_detail_id` varchar(64) NOT NULL COMMENT '任务详情UUID业务主键',
`task_list_id` varchar(64) NOT NULL COMMENT '任务清单主键(关联任务清单表)',
`execute_content` text COMMENT '执行内容',
`feedback_cycle_type` tinyint NOT NULL COMMENT '反馈周期类型1-每月 2-季度 3-半年 4-年',
`task_score` decimal(5,2) DEFAULT NULL COMMENT '任务分值',
`task_status` tinyint NOT NULL DEFAULT '1' COMMENT '任务状态1-进行中 2-已完成 3-已关闭',
`delete_enum` varchar(32) DEFAULT 'FALSE' COMMENT '删除标识TRUE/FALSE',
`remarks` varchar(500) DEFAULT NULL COMMENT '备注',
`create_name` varchar(50) DEFAULT NULL COMMENT '创建人姓名',
`update_name` varchar(50) DEFAULT NULL COMMENT '更新人姓名',
`tenant_id` bigint DEFAULT NULL COMMENT '租户ID',
`org_id` bigint DEFAULT NULL COMMENT '单位ID',
`version` int DEFAULT '0' COMMENT '版本',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
`create_id` bigint DEFAULT NULL COMMENT '创建人ID',
`update_id` bigint DEFAULT NULL COMMENT '修改人ID',
`env` varchar(50) DEFAULT NULL COMMENT '环境标识',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_task_detail_id` (`task_detail_id`),
KEY `idx_task_list_id` (`task_list_id`),
KEY `idx_task_list_status` (`task_list_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='任务清单详细表';
```
#### 2.2.3 索引设计
| 索引名 | 索引类型 | 字段 | 说明 |
|--------|----------|------|------|
| PRIMARY | 主键索引 | id | 主键 |
| uk_task_detail_id | 唯一索引 | task_detail_id | 任务详情业务主键唯一 |
| idx_task_list_id | 普通索引 | task_list_id | 按清单ID查询任务 |
| idx_task_list_status | 普通索引 | task_list_id | 按清单ID和状态查询 |
---
### 2.3 safety_accountability_task_list_issue清单下发记录表
清单下发记录表用于存储清单下发给具体公司/部门/人员的记录信息,包括执行周期、下发状态、评分等。一个清单模板可下发给多个公司,每条下发记录对应一组任务执行记录。
#### 2.3.1 表结构
| 字段名 | 类型 | 长度 | 允许空 | 说明 | 备注 |
|--------|------|------|--------|------|------|
| id | BIGINT | - | 否 | 主键 ID | 自增 |
| task_issue_id | VARCHAR | 64 | 否 | 下发记录 UUID | 业务主键UUID 生成 |
| task_list_id | VARCHAR | 64 | 否 | 清单 UUID | 外键,关联 task_list 表 |
| execute_corp_id | BIGINT | - | 是 | 执行公司 ID | 外键 |
| execute_department_id | BIGINT | - | 是 | 执行部门 ID | 外键 |
| execute_user_id | BIGINT | - | 是 | 执行人员 ID | 外键 |
| issue_status | TINYINT | - | 是 | 下发状态 | 0-未下发 1-已下发默认0 |
| issue_time | DATETIME | - | 是 | 下发时间 | |
| issue_corp_id | BIGINT | - | 是 | 下发公司 ID | 外键 |
| issue_department_id | BIGINT | - | 是 | 下发部门 ID | 外键 |
| issue_user_id | BIGINT | - | 是 | 下发人员 ID | 外键 |
| period_start_time | DATETIME | - | 是 | 执行周期开始时间 | |
| period_end_time | DATETIME | - | 是 | 执行周期结束时间 | |
| status | TINYINT | - | 否 | 状态 | 1-进行中 2-已完成 3-已关闭默认1 |
| close_time | DATETIME | - | 是 | 关闭时间 | |
| rating_score | DECIMAL | 5,2 | 是 | 评分数 | 汇总所有任务执行评分 |
| rating_user_id | BIGINT | - | 是 | 评分人 ID | 外键 |
| rating_department_id | BIGINT | - | 是 | 评分部门 ID | 外键 |
| delete_enum | VARCHAR | 32 | 是 | 删除标识 | TRUE-已删除FALSE-未删除 |
| remarks | VARCHAR | 500 | 是 | 备注 | |
| create_name | VARCHAR | 50 | 是 | 创建人姓名 | 冗余字段 |
| update_name | VARCHAR | 50 | 是 | 更新人姓名 | 冗余字段 |
| tenant_id | BIGINT | - | 是 | 租户 ID | 多租户字段 |
| org_id | BIGINT | - | 是 | 组织 ID | 组织字段 |
| version | INT | - | 是 | 版本号 | 乐观锁版本号默认0 |
| create_time | DATETIME | - | 是 | 创建时间 | 默认当前时间 |
| update_time | DATETIME | - | 是 | 更新时间 | 自动更新 |
| create_id | BIGINT | - | 是 | 创建人 ID | 外键 |
| update_id | BIGINT | - | 是 | 更新人 ID | 外键 |
| env | VARCHAR | 50 | 是 | 环境标识 | |
#### 2.3.2 建表语句
```sql
CREATE TABLE `safety_accountability_task_list_issue` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`task_issue_id` varchar(64) NOT NULL COMMENT '下发记录UUID业务主键',
`task_list_id` varchar(64) NOT NULL COMMENT '清单UUID关联清单模板表',
`execute_corp_id` bigint DEFAULT NULL COMMENT '执行公司ID',
`execute_department_id` bigint DEFAULT NULL COMMENT '执行部门ID',
`execute_user_id` bigint DEFAULT NULL COMMENT '执行人员ID',
`issue_status` tinyint DEFAULT '0' COMMENT '下发状态0-未下发 1-已下发',
`issue_time` datetime DEFAULT NULL COMMENT '下发时间',
`issue_corp_id` bigint DEFAULT NULL COMMENT '下发公司ID',
`issue_department_id` bigint DEFAULT NULL COMMENT '下发部门ID',
`issue_user_id` bigint DEFAULT NULL COMMENT '下发人员ID',
`period_start_time` datetime DEFAULT NULL COMMENT '执行周期开始时间',
`period_end_time` datetime DEFAULT NULL COMMENT '执行周期结束时间',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态1-进行中 2-已完成 3-已关闭',
`close_time` datetime DEFAULT NULL COMMENT '关闭时间',
`rating_score` decimal(5,2) DEFAULT NULL COMMENT '评分数(汇总所有任务执行评分)',
`rating_user_id` bigint DEFAULT NULL COMMENT '评分人ID',
`rating_department_id` bigint DEFAULT NULL COMMENT '评分部门ID',
`delete_enum` varchar(32) DEFAULT 'FALSE' COMMENT '删除标识TRUE/FALSE',
`remarks` varchar(500) DEFAULT NULL COMMENT '备注',
`create_name` varchar(50) DEFAULT NULL COMMENT '创建人姓名',
`update_name` varchar(50) DEFAULT NULL COMMENT '更新人姓名',
`tenant_id` bigint DEFAULT NULL COMMENT '租户ID',
`org_id` bigint DEFAULT NULL COMMENT '单位ID',
`version` int DEFAULT '0' COMMENT '版本',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
`create_id` bigint DEFAULT NULL COMMENT '创建人ID',
`update_id` bigint DEFAULT NULL COMMENT '修改人ID',
`env` varchar(50) DEFAULT NULL COMMENT '环境标识',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_task_issue_id` (`task_issue_id`),
KEY `idx_tenant_org_status` (`tenant_id`,`org_id`,`status`),
KEY `idx_task_list_id` (`task_list_id`),
KEY `idx_execute_corp_dept_user` (`execute_corp_id`, `execute_department_id`, `execute_user_id`),
KEY `idx_period_start` (`period_start_time`),
KEY `idx_issue_time` (`issue_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='清单下发记录表';
```
#### 2.3.3 索引设计
| 索引名 | 索引类型 | 字段 | 说明 |
|--------|----------|------|------|
| PRIMARY | 主键索引 | id | 主键 |
| uk_task_issue_id | 唯一索引 | task_issue_id | 下发记录业务主键唯一 |
| idx_tenant_org_status | 联合索引 | tenant_id, org_id, status | 按租户组织状态查询 |
| idx_task_list_id | 普通索引 | task_list_id | 按清单ID查询下发记录 |
| idx_execute_corp_dept_user | 联合索引 | execute_corp_id, execute_department_id, execute_user_id | 重复下发校验 |
| idx_period_start | 普通索引 | period_start_time | 按执行周期查询 |
| idx_issue_time | 普通索引 | issue_time | 按下发时间查询 |
---
### 2.4 safety_accountability_task_execution任务执行记录表
任务执行记录表用于存储任务模板下发给具体公司后的执行实例记录,包括任务状态、反馈状态、评分等。每条下发记录中的每个任务模板对应一条执行记录。
#### 2.4.1 表结构
| 字段名 | 类型 | 长度 | 允许空 | 说明 | 备注 |
|--------|------|------|--------|------|------|
| id | BIGINT | - | 否 | 主键 ID | 自增 |
| task_execution_id | VARCHAR | 64 | 否 | 任务执行 UUID | 业务主键UUID 生成 |
| task_issue_id | VARCHAR | 64 | 否 | 清单下发记录 UUID | 外键,关联 task_list_issue 表 |
| task_detail_id | VARCHAR | 64 | 否 | 任务模板 UUID | 外键,关联 task_detail 表 |
| task_list_id | VARCHAR | 64 | 否 | 清单 UUID | 冗余字段,便于查询 |
| task_status | TINYINT | - | 否 | 任务状态 | 1-进行中 2-已完成 3-已关闭默认1 |
| feedback_status | TINYINT | - | 是 | 反馈状态 | 1-正常 2-异常默认1 |
| task_rating | DECIMAL | 5,2 | 是 | 任务评分 | |
| rating_time | DATETIME | - | 是 | 评分时间 | |
| rating_department_id | BIGINT | - | 是 | 评分部门 ID | 外键 |
| rating_user_id | BIGINT | - | 是 | 评分人 ID | 外键 |
| delete_enum | VARCHAR | 32 | 是 | 删除标识 | TRUE-已删除FALSE-未删除 |
| remarks | VARCHAR | 500 | 是 | 备注 | |
| create_name | VARCHAR | 50 | 是 | 创建人姓名 | 冗余字段 |
| update_name | VARCHAR | 50 | 是 | 更新人姓名 | 冗余字段 |
| tenant_id | BIGINT | - | 是 | 租户 ID | 多租户字段 |
| org_id | BIGINT | - | 是 | 组织 ID | 组织字段 |
| version | INT | - | 是 | 版本号 | 乐观锁版本号默认0 |
| create_time | DATETIME | - | 是 | 创建时间 | 默认当前时间 |
| update_time | DATETIME | - | 是 | 更新时间 | 自动更新 |
| create_id | BIGINT | - | 是 | 创建人 ID | 外键 |
| update_id | BIGINT | - | 是 | 更新人 ID | 外键 |
| env | VARCHAR | 50 | 是 | 环境标识 | |
#### 2.4.2 建表语句
```sql
CREATE TABLE `safety_accountability_task_execution` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`task_execution_id` varchar(64) NOT NULL COMMENT '任务执行UUID业务主键',
`task_issue_id` varchar(64) NOT NULL COMMENT '清单下发记录UUID关联下发记录表',
`task_detail_id` varchar(64) NOT NULL COMMENT '任务模板UUID关联任务详情模板表',
`task_list_id` varchar(64) NOT NULL COMMENT '清单UUID冗余便于查询',
`task_status` tinyint NOT NULL DEFAULT '1' COMMENT '任务状态1-进行中 2-已完成 3-已关闭',
`feedback_status` tinyint DEFAULT '1' COMMENT '反馈状态1-正常 2-异常',
`task_rating` decimal(5,2) DEFAULT NULL COMMENT '任务评分',
`rating_time` datetime DEFAULT NULL COMMENT '评分时间',
`rating_department_id` bigint DEFAULT NULL COMMENT '评分部门ID',
`rating_user_id` bigint DEFAULT NULL COMMENT '评分人ID',
`delete_enum` varchar(32) DEFAULT 'FALSE' COMMENT '删除标识TRUE/FALSE',
`remarks` varchar(500) DEFAULT NULL COMMENT '备注',
`create_name` varchar(50) DEFAULT NULL COMMENT '创建人姓名',
`update_name` varchar(50) DEFAULT NULL COMMENT '更新人姓名',
`tenant_id` bigint DEFAULT NULL COMMENT '租户ID',
`org_id` bigint DEFAULT NULL COMMENT '单位ID',
`version` int DEFAULT '0' COMMENT '版本',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
`create_id` bigint DEFAULT NULL COMMENT '创建人ID',
`update_id` bigint DEFAULT NULL COMMENT '修改人ID',
`env` varchar(50) DEFAULT NULL COMMENT '环境标识',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_task_execution_id` (`task_execution_id`),
KEY `idx_tenant_org_task` (`tenant_id`,`org_id`,`task_status`),
KEY `idx_task_issue_id` (`task_issue_id`),
KEY `idx_task_detail_id` (`task_detail_id`),
KEY `idx_task_list_id` (`task_list_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='任务执行记录表';
```
#### 2.4.3 索引设计
| 索引名 | 索引类型 | 字段 | 说明 |
|--------|----------|------|------|
| PRIMARY | 主键索引 | id | 主键 |
| uk_task_execution_id | 唯一索引 | task_execution_id | 执行记录业务主键唯一 |
| idx_tenant_org_task | 联合索引 | tenant_id, org_id, task_status | 按租户组织任务状态查询 |
| idx_task_issue_id | 普通索引 | task_issue_id | 按下发记录ID查询执行记录 |
| idx_task_detail_id | 普通索引 | task_detail_id | 按任务模板ID查询执行记录 |
| idx_task_list_id | 普通索引 | task_list_id | 按清单ID查询执行记录 |
---
### 2.5 safety_accountability_feedback执行反馈表
执行反馈表用于存储任务执行的反馈信息,包括反馈内容、反馈时间、反馈周期标识等。通过周期标识可按月/季/半年/年分组统计反馈记录。
#### 2.5.1 表结构
| 字段名 | 类型 | 长度 | 允许空 | 说明 | 备注 |
|--------|------|------|--------|------|------|
| id | BIGINT | - | 否 | 主键 ID | 自增 |
| feedback_id | VARCHAR | 64 | 否 | 反馈 UUID | 业务主键UUID 生成 |
| task_detail_id | VARCHAR | 64 | 否 | 任务详情 UUID | 外键,关联 task_detail 表 |
| task_execution_id | VARCHAR | 64 | 是 | 任务执行 UUID | 外键,关联 task_execution 表 |
| task_list_id | VARCHAR | 64 | 否 | 任务清单 UUID | 冗余字段,便于查询 |
| task_issue_id | VARCHAR | 64 | 是 | 清单下发记录 UUID | 冗余字段 |
| feedback_time | DATETIME | - | 否 | 反馈时间 | |
| feedback_period_start_time | DATETIME | - | 否 | 反馈周期开始时间 | 用于回显 |
| feedback_period_end_time | DATETIME | - | 否 | 反馈周期结束时间 | 用于回显 |
| feedback_period_flag | VARCHAR | 20 | 否 | 反馈周期标识 | 格式2026-05月、2026-Q1季、2026-H1半年、2026年 |
| feedback_content | TEXT | - | 是 | 反馈内容 | |
| feedback_corp_id | BIGINT | - | 是 | 反馈人公司 ID | 外键 |
| feedback_department_id | BIGINT | - | 是 | 反馈人部门 ID | 外键 |
| feedback_user_id | BIGINT | - | 是 | 反馈人 ID | 外键 |
| delete_enum | VARCHAR | 32 | 是 | 删除标识 | TRUE-已删除FALSE-未删除 |
| remarks | VARCHAR | 500 | 是 | 备注 | |
| create_name | VARCHAR | 50 | 是 | 创建人姓名 | 冗余字段 |
| update_name | VARCHAR | 50 | 是 | 更新人姓名 | 冗余字段 |
| tenant_id | BIGINT | - | 是 | 租户 ID | 多租户字段 |
| org_id | BIGINT | - | 是 | 组织 ID | 组织字段 |
| version | INT | - | 是 | 版本号 | 乐观锁版本号默认0 |
| create_time | DATETIME | - | 是 | 创建时间 | 默认当前时间 |
| update_time | DATETIME | - | 是 | 更新时间 | 自动更新 |
| create_id | BIGINT | - | 是 | 创建人 ID | 外键 |
| update_id | BIGINT | - | 是 | 更新人 ID | 外键 |
| env | VARCHAR | 50 | 是 | 环境标识 | |
#### 2.5.2 建表语句
```sql
CREATE TABLE `safety_accountability_feedback` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`feedback_id` varchar(64) NOT NULL COMMENT '反馈UUID业务主键',
`task_detail_id` varchar(64) NOT NULL COMMENT '任务详情UUID关联任务清单详细表',
`task_execution_id` varchar(64) DEFAULT NULL COMMENT '任务执行UUID关联任务执行表',
`task_list_id` varchar(64) NOT NULL COMMENT '任务清单UUID冗余字段便于查询',
`task_issue_id` varchar(64) DEFAULT NULL COMMENT '清单下发记录UUID冗余',
`feedback_time` datetime NOT NULL COMMENT '反馈时间',
`feedback_period_start_time` datetime NOT NULL COMMENT '反馈周期开始时间(用于回显)',
`feedback_period_end_time` datetime NOT NULL COMMENT '反馈周期结束时间(用于回显)',
`feedback_period_flag` varchar(20) NOT NULL COMMENT '反馈周期标识格式2026-05表示月2026-Q1表示季度2026-H1表示半年2026表示年',
`feedback_content` text COMMENT '反馈内容',
`feedback_corp_id` bigint DEFAULT NULL COMMENT '反馈人公司ID',
`feedback_department_id` bigint DEFAULT NULL COMMENT '反馈人部门ID',
`feedback_user_id` bigint DEFAULT NULL COMMENT '反馈人ID',
`delete_enum` varchar(32) DEFAULT 'FALSE' COMMENT '删除标识TRUE/FALSE',
`remarks` varchar(500) DEFAULT NULL COMMENT '备注',
`create_name` varchar(50) DEFAULT NULL COMMENT '创建人姓名',
`update_name` varchar(50) DEFAULT NULL COMMENT '更新人姓名',
`tenant_id` bigint DEFAULT NULL COMMENT '租户ID',
`org_id` bigint DEFAULT NULL COMMENT '单位ID',
`version` int DEFAULT '0' COMMENT '版本',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
`create_id` bigint DEFAULT NULL COMMENT '创建人ID',
`update_id` bigint DEFAULT NULL COMMENT '修改人ID',
`env` varchar(50) DEFAULT NULL COMMENT '环境标识',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_feedback_id` (`feedback_id`),
KEY `idx_task_detail_id` (`task_detail_id`),
KEY `idx_task_list_id` (`task_list_id`),
KEY `idx_feedback_time` (`feedback_time`),
KEY `idx_feedback_user_id` (`feedback_user_id`),
KEY `idx_taskdetail_period` (`task_detail_id`,`feedback_period_flag`),
KEY `idx_task_execution_id` (`task_execution_id`),
KEY `idx_task_issue_id` (`task_issue_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='执行反馈表';
```
#### 2.5.3 索引设计
| 索引名 | 索引类型 | 字段 | 说明 |
|--------|----------|------|------|
| PRIMARY | 主键索引 | id | 主键 |
| uk_feedback_id | 唯一索引 | feedback_id | 反馈业务主键唯一 |
| idx_task_detail_id | 普通索引 | task_detail_id | 按任务详情ID查询反馈 |
| idx_task_list_id | 普通索引 | task_list_id | 按清单ID查询反馈 |
| idx_feedback_time | 普通索引 | feedback_time | 按反馈时间查询 |
| idx_feedback_user_id | 普通索引 | feedback_user_id | 按反馈人查询 |
| idx_taskdetail_period | 联合索引 | task_detail_id, feedback_period_flag | 按任务和周期标识查询 |
| idx_task_execution_id | 普通索引 | task_execution_id | 按执行记录ID查询反馈 |
| idx_task_issue_id | 普通索引 | task_issue_id | 按下发记录ID查询反馈 |
---
### 2.6 safety_accountability_feedback_exception反馈异常信息表
反馈异常信息表用于存储反馈异常记录由定时任务每月1日0时自动检测生成。检测逻辑根据任务的反馈周期类型判断上一阶段是否有反馈记录无记录则判定为异常并写入此表。
#### 2.6.1 表结构
| 字段名 | 类型 | 长度 | 允许空 | 说明 | 备注 |
|--------|------|------|--------|------|------|
| id | BIGINT | - | 否 | 主键 ID | 自增 |
| feedback_exception_id | VARCHAR | 64 | 否 | 反馈异常 UUID | 业务主键UUID 生成 |
| task_detail_id | VARCHAR | 64 | 否 | 任务详情主键 | 外键,关联 task_detail 表 |
| task_execution_id | VARCHAR | 64 | 是 | 任务执行 UUID | 外键,关联 task_execution 表 |
| task_list_id | VARCHAR | 64 | 是 | 任务清单主键 | 冗余字段 |
| task_issue_id | VARCHAR | 64 | 是 | 清单下发记录 UUID | 冗余字段 |
| exception_period_flag | VARCHAR | 20 | 否 | 异常周期标识 | 同 feedback_period_flag 格式 |
| exception_period_start_time | DATETIME | - | 是 | 反馈周期开始时间 | 用于回显 |
| exception_period_end_time | DATETIME | - | 是 | 反馈周期结束时间 | 用于回显 |
| exception_type | TINYINT | - | 是 | 异常类型 | 1-未按时反馈 2-反馈内容异常 3-其他默认1 |
| exception_content | TEXT | - | 是 | 反馈异常信息 | |
| exception_time | DATETIME | - | 是 | 异常时间 | |
| delete_enum | VARCHAR | 32 | 是 | 删除标识 | TRUE-已删除FALSE-未删除 |
| remarks | VARCHAR | 500 | 是 | 备注 | |
| create_name | VARCHAR | 50 | 是 | 创建人姓名 | 冗余字段 |
| update_name | VARCHAR | 50 | 是 | 更新人姓名 | 冗余字段 |
| tenant_id | BIGINT | - | 是 | 租户 ID | 多租户字段 |
| org_id | BIGINT | - | 是 | 组织 ID | 组织字段 |
| version | INT | - | 是 | 版本号 | 乐观锁版本号默认0 |
| create_time | DATETIME | - | 是 | 创建时间 | 默认当前时间 |
| update_time | DATETIME | - | 是 | 更新时间 | 自动更新 |
| create_id | BIGINT | - | 是 | 创建人 ID | 外键 |
| update_id | BIGINT | - | 是 | 更新人 ID | 外键 |
| env | VARCHAR | 50 | 是 | 环境标识 | |
#### 2.6.2 建表语句
```sql
CREATE TABLE `safety_accountability_feedback_exception` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`feedback_exception_id` varchar(64) NOT NULL COMMENT '反馈异常UUID业务主键',
`task_detail_id` varchar(64) NOT NULL COMMENT '任务详情主键(关联任务清单详细表)',
`task_execution_id` varchar(64) DEFAULT NULL COMMENT '任务执行UUID关联任务执行表',
`task_list_id` varchar(64) DEFAULT NULL COMMENT '任务清单主键(冗余字段)',
`task_issue_id` varchar(64) DEFAULT NULL COMMENT '清单下发记录UUID冗余',
`exception_period_flag` varchar(20) NOT NULL COMMENT '异常周期标识',
`exception_period_start_time` datetime DEFAULT NULL COMMENT '反馈周期开始时间(用于回显)',
`exception_period_end_time` datetime DEFAULT NULL COMMENT '反馈周期结束时间(用于回显)',
`exception_type` tinyint DEFAULT '1' COMMENT '异常类型1-未按时反馈 2-反馈内容异常 3-其他',
`exception_content` text COMMENT '反馈异常信息',
`exception_time` datetime DEFAULT NULL COMMENT '异常时间',
`delete_enum` varchar(32) DEFAULT 'FALSE' COMMENT '删除标识TRUE/FALSE',
`remarks` varchar(500) DEFAULT NULL COMMENT '备注',
`create_name` varchar(50) DEFAULT NULL COMMENT '创建人姓名',
`update_name` varchar(50) DEFAULT NULL COMMENT '更新人姓名',
`tenant_id` bigint DEFAULT NULL COMMENT '租户ID',
`org_id` bigint DEFAULT NULL COMMENT '单位ID',
`version` int DEFAULT '0' COMMENT '版本',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
`create_id` bigint DEFAULT NULL COMMENT '创建人ID',
`update_id` bigint DEFAULT NULL COMMENT '修改人ID',
`env` varchar(50) DEFAULT NULL COMMENT '环境标识',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_feedback_exception_id` (`feedback_exception_id`),
KEY `idx_task_detail_id` (`task_detail_id`),
KEY `idx_task_list_id` (`task_list_id`),
KEY `idx_taskdetail_ex_period` (`task_detail_id`,`exception_period_flag`),
KEY `idx_taskdetail_ex_type` (`task_detail_id`,`exception_type`),
KEY `idx_task_execution_id` (`task_execution_id`),
KEY `idx_task_issue_id` (`task_issue_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='反馈异常信息表';
```
#### 2.6.3 索引设计
| 索引名 | 索引类型 | 字段 | 说明 |
|--------|----------|------|------|
| PRIMARY | 主键索引 | id | 主键 |
| uk_feedback_exception_id | 唯一索引 | feedback_exception_id | 异常记录业务主键唯一 |
| idx_task_detail_id | 普通索引 | task_detail_id | 按任务详情ID查询异常 |
| idx_task_list_id | 普通索引 | task_list_id | 按清单ID查询异常 |
| idx_taskdetail_ex_period | 联合索引 | task_detail_id, exception_period_flag | 按任务和周期标识查询异常 |
| idx_taskdetail_ex_type | 联合索引 | task_detail_id, exception_type | 按任务和异常类型查询 |
| idx_task_execution_id | 普通索引 | task_execution_id | 按执行记录ID查询异常 |
| idx_task_issue_id | 普通索引 | task_issue_id | 按下发记录ID查询异常 |
---
## 3. 视图设计
### 3.1 corp_info公司信息视图
公司信息视图,跨库引用基础信息服务中的公司信息表,过滤已删除数据。
### 3.2 department部门信息视图
部门信息视图,跨库引用基础信息服务中的部门信息表,过滤已删除数据。
### 3.3 user用户信息视图
用户信息视图,跨库引用基础信息服务中的用户信息表,过滤已删除数据。
> 以上三个视图均为只读视图,数据来源于 `jjb-saas-zcloud-basic-info` 库,本系统仅做联表查询使用,不对其进行增删改操作。
---
## 4. 枚举值说明
### 4.1 任务级别task_level
| 值 | 说明 |
|----|------|
| 1 | 企业级 |
| 2 | 部门级 |
| 3 | 班组级 |
### 4.2 开启/关闭switch_flag
| 值 | 说明 |
|----|------|
| 0 | 关闭 |
| 1 | 开启 |
### 4.3 状态status
| 值 | 说明 |
|----|------|
| 1 | 进行中 |
| 2 | 已完成 |
| 3 | 已关闭 |
### 4.4 反馈周期类型feedback_cycle_type
| 值 | 说明 | 周期标识格式 | 示例 |
|----|------|-------------|------|
| 1 | 每月 | yyyy-MM | 2026-05 |
| 2 | 每季度 | yyyy-QN | 2026-Q1 |
| 3 | 每半年 | yyyy-HN | 2026-H1 |
| 4 | 每年 | yyyy | 2026 |
### 4.5 反馈状态feedback_status
| 值 | 说明 |
|----|------|
| 1 | 正常 |
| 2 | 异常 |
### 4.6 下发状态issue_status
| 值 | 说明 |
|----|------|
| 0 | 未下发 |
| 1 | 已下发 |
### 4.7 异常类型exception_type
| 值 | 说明 |
|----|------|
| 1 | 未按时反馈 |
| 2 | 反馈内容异常 |
| 3 | 其他 |
### 4.8 删除标识delete_enum
| 值 | 说明 |
|----|------|
| FALSE | 未删除 |
| TRUE | 已删除 |
---
## 5. 公共字段说明
所有业务表均包含以下公共字段,用于多租户隔离、数据审计和乐观锁控制:
| 字段名 | 类型 | 说明 |
|--------|------|------|
| delete_enum | VARCHAR(32) | 逻辑删除标识TRUE-已删除FALSE-未删除 |
| remarks | VARCHAR(500) | 备注 |
| create_name | VARCHAR(50) | 创建人姓名(冗余) |
| update_name | VARCHAR(50) | 更新人姓名(冗余) |
| tenant_id | BIGINT | 租户ID用于多租户数据隔离 |
| org_id | BIGINT | 组织ID用于组织级数据权限 |
| version | INT | 乐观锁版本号 |
| create_time | DATETIME | 创建时间,默认当前时间 |
| update_time | DATETIME | 更新时间,自动更新 |
| create_id | BIGINT | 创建人ID |
| update_id | BIGINT | 更新人ID |
| env | VARCHAR(50) | 环境标识 |