model_train_dm/系统数据库表结构说明.md
2026-07-27 17:51:49 +08:00

30 KiB
Raw Blame History

系统数据库表结构说明

1. 文档说明

本文档基于以下内容整理:

  • 数据库结构定义:backend/config/settings/table.sql
  • 系统功能说明:系统功能调整改造说明.md
  • 项目现有模型与业务代码中的字段语义和状态枚举

本文档重点说明以下 6 张核心业务表:

  • ai_dataset
  • ai_dataset_sample
  • ai_temp_file
  • ai_annotate_task
  • ai_annotate_task_sample
  • ai_smart_terminal

说明规则如下:

  • 字段名、类型、是否为空、主键等,以 table.sql 为准
  • 中文说明优先采用 SQL 注释,其次结合现有 Django 模型 verbose_name
  • 枚举型字段优先采用项目代码中的现有说明
  • 若某字段在当前代码中尚无正式枚举实现,则明确标记为“当前代码暂无实现,以下为建议值”

2. 表结构总览

表名 中文名称 用途说明
ai_dataset 数据集表 记录用户定义的数据集主信息
ai_dataset_sample 数据集样本表 记录数据集中的样本文件及标注结果
ai_temp_file 临时文件表 记录上传到 MinIO tempfile 桶中的临时文件
ai_annotate_task 标注任务表 记录面向单一数据集的标注任务主信息
ai_annotate_task_sample 标注任务样本表 记录标注任务中被分配的样本及标注审核状态
ai_smart_terminal 智能终端数据表 记录AI边缘计算盒子的站点属性、配置与运维信息

3. ai_dataset 数据集表

3.1 表说明

  • 表名:ai_dataset
  • 中文名称:数据集表
  • 主键:id
  • 用途:记录数据集基本信息、数据集标签、原始文件路径、数据集存储路径、样本数量和状态等
  • 现有代码对应模型:AiDataset
  • 当前代码旧表映射:ai_algorithm_dataset

3.2 字段说明

字段名 类型 非空 主键 中文说明 枚举/代码说明
id varchar(40) 主键ID UUID 字符串
dataset_code varchar(40) 数据集编号 现有代码按算法下顺序生成,如 001002
dataset_name varchar(200) 数据集名称 无枚举
description varchar(2000) 描述 无枚举
dataset_type varchar(2) 类型 代码枚举:01 表格,02 图片,03 视频,04 音频,05 文本
features varchar(200) 特征 自定义分类特征,逗号分割
original_file_path varchar(400) 原始文件目录 原始上传包或原始文件所在目录
original_file_name varchar(8000) 原始文件名称 现有代码支持多个文件名逗号拼接
dataset_path varchar(400) 数据集存储路径 现阶段建议作为 MinIO 逻辑前缀或数据集逻辑目录
dataset_count int4 样本总数 记录该数据集下样本数量
dataset_labels varchar(2000) 数据集标签 现有代码约定为 JSON 字符串,如 [{"label","name","color"}]
status varchar(2) 数据集状态 代码枚举:00 未生成图片,01 初始创建,02 标注完成,09 标记删除
creator varchar(20) 创建人 一般保存用户名
create_time timestamptz 创建时间 记录创建时间
custom1 varchar(200) 备用1 现有代码常用于 images_mask 路径等扩展字段
custom3 varchar(200) 备用3 现有视频数据集场景中用于视频目录等扩展值
custom2 varchar(2000) 备用2 现有代码常用于视频清单等扩展值

3.3 枚举字段说明

dataset_type

含义 代码说明
01 表格 来自模型 AiDataset.dataset_type
02 图片 来自模型 AiDataset.dataset_type
03 视频 来自模型 AiDataset.dataset_type
04 音频 来自模型 AiDataset.dataset_type
05 文本 来自模型 AiDataset.dataset_type

status

含义 代码说明
00 未生成图片 来自模型 AiDataset.status
01 初始创建 来自模型 AiDataset.status
02 标注完成 来自模型 AiDataset.status
09 标记删除 来自模型 AiDataset.status

4. ai_dataset_sample 数据集样本表

4.1 表说明

  • 表名:ai_dataset_sample
  • 中文名称:数据集样本表
  • 主键:id
  • 用途:记录数据集中的单个样本文件、文件路径、标注结果和状态
  • 现有代码对应模型:AiDatasetSample
  • 现有代码旧字段:annotation_content
  • 新表结构改为:rectanglepolygon

4.2 字段说明

字段名 类型 非空 主键 中文说明 枚举/代码说明
id varchar(40) 主键ID UUID 字符串
dataset_id varchar(40) 关联数据集ID 对应 ai_dataset.id
saved_path varchar(600) 存储路径 现有代码语义为样本存储目录;改造后建议存 MinIO 逻辑路径
original_filename varchar(200) 原始文件名称 现有代码支持图片、声音、视频等样本原始名称
saved_filename varchar(200) 保存后文件名 现有代码常见格式如 00000001.jpg 或带数据集编号前缀
saved_filesize varchar(10) 保存文件大小 现有代码旧模型字段说明存在差异,需按新表结构控制长度
rectangle varchar(2000) 矩形框标注内容 新表结构字段,用于目标检测类标注
polygon text 多边形标注内容 新表结构字段,用于分割、多边形标注
status varchar(2) 样本状态 代码枚举:00 初始创建,01 已分配,02 已标注
create_time timestamptz 创建时间 样本创建时间
custom1 varchar(200) 备用1 现有代码常用于记录图像尺寸,如 1024x768
custom3 varchar(200) 备用3 备用扩展字段
custom2 varchar(1000) 备用2 备用扩展字段

4.3 枚举字段说明

status

含义 代码说明
00 初始创建 来自模型 AiDatasetSample.status
01 已分配 来自模型 AiDatasetSample.status
02 已标注 来自模型 AiDatasetSample.status

4.4 标注字段说明

字段 中文含义 当前代码情况
rectangle 矩形框标注内容 当前项目旧代码主要使用 annotation_content 存储目标检测标注,后续需映射到该字段
polygon 多边形标注内容 当前项目旧代码主要通过 annotation_content 或外部 JSON 文件承载分割结果,后续需映射到该字段

5. ai_temp_file 临时文件表

5.1 表说明

  • 表名:ai_temp_file
  • 中文名称:临时文件表
  • 主键:id
  • 用途:记录上传到 MinIO tempfile 桶中的 ZIP、视频、图片、音频等临时文件
  • 当前代码实现状态:暂无正式模型、序列化器和业务接口

5.2 字段说明

字段名 类型 非空 主键 中文说明 枚举/代码说明
id varchar(40) 主键ID UUID 字符串
original_path varchar(600) 原始文件路径 原始上传路径或逻辑来源路径
original_name varchar(200) 原始文件名称 上传文件原名称
original_type varchar(20) 原始文件类型 当前代码暂无正式枚举实现,见下方建议值
bucket_name varchar(200) MinIO 桶名称 目标设计为 tempfile
object_name varchar(200) 对象名称 MinIO 对象名
object_size int8 对象大小 文件字节数
content_type varchar(100) 对象类型 MIME Type例如 image/jpegvideo/mp4
status varchar(2) 状态 当前代码暂无正式枚举实现,见下方建议值
create_time timestamptz 创建时间 上传记录创建时间
custom1 varchar(200) 备用1 扩展字段
custom3 varchar(200) 备用3 扩展字段
custom2 varchar(1000) 备用2 扩展字段

5.3 枚举字段说明

original_type

说明:当前项目代码中暂无正式实现,以下为《系统功能调整改造说明.md》中的建议枚举。

含义 说明
01 图片 建议值
02 视频 建议值
03 音频 建议值
04 ZIP 压缩包 建议值
05 文本 建议值
99 其他 建议值

status

说明:当前项目代码中暂无正式实现,以下为《系统功能调整改造说明.md》中的建议枚举。

含义 说明
01 已上传 建议值
02 已导入数据集 建议值
03 已失效 建议值
09 已删除 建议值

6. ai_annotate_task 标注任务表

6.1 表说明

  • 表名:ai_annotate_task
  • 中文名称:标注任务表
  • 主键:id
  • 用途:记录面向单一数据集的标注任务主信息
  • 现有代码对应模型:AiDatasetTask
  • 当前代码旧表映射:ai_dataset_task

6.2 字段说明

字段名 类型 非空 主键 中文说明 枚举/代码说明
id varchar(40) 主键ID UUID 字符串
algorithm_id varchar(40) 算法ID 关联算法或算法定义
task_name varchar(200) 任务名称 标注任务名称
annotate_type varchar(2) 标注类型 代码枚举见下文
description varchar(2000) 对本次标注任务的描述 无枚举
dataset_id varchar(40) 数据集ID 单数据集标注任务关联字段
task_count int4 需要标注的样本记录总数 任务样本总量
task_range varchar(100) 任务数据起止范围 样本范围描述
task_type varchar(2) 自动标注类型 代码枚举见下文
region_type varchar(2) 标签类型 代码枚举见下文
labels varchar(2000) 标签定义 现有代码约定为 JSON 字符串
work_type varchar(2) 工作方式 代码枚举见下文
task_team varchar(40) 任务团队 团队标注时使用
task_leader varchar(40) 任务负责人 团队负责人
status varchar(2) 任务状态 代码枚举见下文
creator varchar(20) 任务创建人 用户名
create_time timestamptz 任务创建时间 创建时间
custom1 varchar(200) 备用1 扩展字段
custom2 varchar(200) 备用2 扩展字段
custom3 varchar(200) 备用3 扩展字段

6.3 枚举字段说明

annotate_type

含义 代码说明
01 图像分类 来自模型 AiDatasetTask.annotate_type
02 物体检测 来自模型 AiDatasetTask.annotate_type
03 语义分割 来自模型 AiDatasetTask.annotate_type
05 声音分类 来自模型 AiDatasetTask.annotate_type
10 文本分类 来自模型 AiDatasetTask.annotate_type

补充说明:

  • 在当前代码 dataset_task.py 中,当 task_type=1region_type=1 时,会自动将 annotate_type 置为 03
  • task_type=1region_type=0 时,会自动将 annotate_type 置为 01

work_type

含义 代码说明
01 单人标注 缺省为任务创建者
02 团队标注 需要 task_teamtask_leader 等信息

task_type

含义 代码说明
0 手动标注 来自模型 AiDatasetTask.task_type
1 自动标注 来自模型 AiDatasetTask.task_type

region_type

含义 代码说明
0 矩形 来自模型 AiDatasetTask.region_type
1 多边形 来自模型 AiDatasetTask.region_type

status

含义 代码说明
01 初始创建 来自模型 AiDatasetTask.status
02 任务分配 来自模型 AiDatasetTask.status
03 任务完成 来自模型 AiDatasetTask.status
09 标记删除 来自模型 AiDatasetTask.status

7. ai_annotate_task_sample 标注任务样本表

7.1 表说明

  • 表名:ai_annotate_task_sample
  • 中文名称:标注任务样本表
  • 主键:id
  • 用途:记录标注任务中分配给执行人的样本、标注内容和审核流转状态
  • 现有代码对应模型:AiDatasetTaskSample
  • 当前代码旧表映射:ai_dataset_task_sample

7.2 字段说明

字段名 类型 非空 主键 中文说明 枚举/代码说明
id varchar(40) 主键ID UUID 字符串
task_id varchar(40) 关联任务ID 对应 ai_annotate_task.id
executor varchar(100) 任务执行人 执行标注的账号
sample_id varchar(40) 样本ID 对应 ai_dataset_sample.id
sample_path varchar(600) 样本存储路径 分配样本时带入
sample_name varchar(200) 样本名称 分配样本时带入
hard varchar(2) 是否难例 代码枚举见下文
annotation_content text 标注内容 当前代码主要以 JSON 形式存储
class_label varchar(200) 分类标签 分类场景使用
annotation_time timestamptz 标注时间 提交标注时间
status varchar(2) 样本状态 代码枚举见下文
auditor varchar(20) 审核人 审核人账号
feedback varchar(400) 驳回意见 审核驳回意见
custom1 varchar(200) 备用1 扩展字段
custom2 varchar(200) 备用2 扩展字段
custom3 varchar(200) 备用3 扩展字段

7.3 枚举字段说明

hard

含义 代码说明
0 来自模型 AiDatasetTaskSample.hard
1 来自模型 AiDatasetTaskSample.hard

status

含义 代码说明
01 初始分配 来自模型 AiDatasetTaskSample.status
02 标注完成 来自模型 AiDatasetTaskSample.status
03 提交审核 来自模型 AiDatasetTaskSample.status
04 审核已阅 来自模型 AiDatasetTaskSample.status
05 审核驳回 来自模型 AiDatasetTaskSample.status
06 审核后入库 来自模型 AiDatasetTaskSample.status,表示加入主标签中

7.4 标注内容说明

字段 中文含义 代码说明
annotation_content 标注内容 当前代码中一般为 JSON 字符串,目标检测保存框信息,分割保存多边形信息
class_label 分类标签 图像分类、声音分类、文本分类等场景使用

8. ai_smart_terminal 智能终端数据表

8.1 表说明

  • 表名:ai_smart_terminal
  • 中文名称:智能终端数据表(云端孪生镜像)
  • 主键:id
  • 用途:作为边缘端实体设备在云端的孪生镜像,记录设备基本信息、位置坐标、监测配置,以及云端模型发布版本和边缘端同步状态。模型训练完成后发布到该云端孪生设备;边缘端实体设备定期轮询检测云端孪生设备上的模型版本,当检测到新版本时自动下载更新,实现边缘端算法模型的动态更新。
  • 来源Oracle SD_AIBOX_B_HAI边缘计算盒子基本属性表
  • 当前代码实现状态:暂无正式模型、序列化器和业务接口

8.2 业务场景

┌─────────────────────────────────────────────────────────────┐
│                      云端孪生镜像                            │
│  ai_smart_terminal                                          │
│  ┌──────────────────────────────────────────────────────┐  │
│  │  基本信息:终端编码(stcd)、名称(stnm)、分类(sttp)      │  │
│  │  位置信息:经纬度、高程、电站/基地/流域归属            │  │
│  │  设备配置AI盒子配置、IP、SIM、联系人                 │  │
│  │  监测配置:监测指标、采集频次、监测方式                 │  │
│  │                                                        │  │
│  │  模型发布 ─────────────────────────────┐               │  │
│  │  model_id / model_version              │               │  │
│  │  model_path / model_publish_time       │               │  │
│  │                                        ▼               │  │
│  │  边缘同步状态 ◄──── 边缘端定期轮询(sync_check_interval) │  │
│  │  edge_model_version / edge_update_time                 │  │
│  │  last_heartbeat_time / online_status   │               │  │
│  └────────────────────────────────────────│──────────────┘  │
│                                           │                  │
└───────────────────────────────────────────│──────────────────┘
                                            │
                    ┌───────────────────────▼──────────────────┐
                    │          边缘端实体设备                    │
                    │  定期检测 model_version ≠ edge_model_ver   │
                    │  → 下载 model_path 指向的模型文件          │
                    │  → 更新本地模型 → 上报 edge_model_version  │
                    └──────────────────────────────────────────┘

8.3 字段说明

字段名 类型 非空 主键 中文说明 枚举/代码说明
id varchar(40) 主键ID UUID 字符串
基本信息
stcd varchar(40) 终端编码 与边缘实体设备一一对应的唯一编码
stnm varchar(255) 终端名称 终端名称
sttp varchar(2) 终端分类 01 鱼类识别AI盒子02 鸟类识别AI盒子03 野生动物识别AI盒子04 鱼类分拣装置
order_index int4 排序 列表展示排序号
位置信息
lgtd numeric(10,6) 经度(单位:°) 终端经度坐标
lttd numeric(10,6) 纬度(单位:°) 终端纬度坐标
elev numeric(10,6) 高程单位m 终端海拔高程
rstcd varchar(64) 所属电站编码 关联电站编码
base_id varchar(64) 所属水电基地编码 关联水电基地编码
hbrvcd varchar(64) 所属水电基地流域编码 关联水电基地流域编码
rvcd varchar(64) 所属流域编码 关联流域编码
设备配置
aipz varchar(1000) AI盒子配置 AI边缘计算盒子硬件/软件配置信息
ipaddr varchar(512) IP地址 设备IP地址
siminfo varchar(512) SIM卡信息 SIM卡相关信息
lxr varchar(512) 联系人及联系电话 站点联系人信息
purpose varchar(512) 用途 站点用途说明
监测配置
stindx varchar(1000) 监测指标 该终端监测的指标列表
dtfrqcy int4 数据采集频次单位min 数据采集间隔(分钟)
mway int2 监测方式 0 人工监测,1 自动监测,2 混合监测
启用与接入状态
usfl int2 是否启用 0 否,1
dtin int2 数据是否接入 0 未接入,1 已接入
dtin_tm timestamptz 数据接入时间 数据首次接入系统的时间
云端孪生 — 模型发布
model_id varchar(40) 已部署模型ID 关联训练产出的模型记录
model_name varchar(200) 已部署模型名称 关联训练产出的模型记录
model_version varchar(64) 已部署模型版本号 云端孪生设备上当前发布的模型版本,如 v1.2.3
model_path varchar(600) 模型文件存储路径 MinIO 中模型文件的对象路径,边缘端从此路径下载
model_publish_time timestamptz 模型发布时间 模型发布到云端孪生设备的时间
model_publish_user varchar(36) 模型发布人 执行模型发布操作的用户
边缘端 — 同步状态
edge_model_version varchar(64) 边缘端模型版本 边缘实体设备当前实际运行的模型版本
edge_update_time timestamptz 边缘端更新时间 边缘设备最后一次完成模型更新的时间
last_heartbeat_time timestamptz 最后心跳时间 边缘端最后一次向云端上报心跳的时间
online_status int2 在线状态 0 离线,1 在线
sync_check_interval int4 同步检测间隔min 边缘端轮询检测云端孪生设备模型版本的间隔(分钟)
运维记录
remark varchar(512) 备注 备注信息
record_user varchar(36) 创建人 创建记录的用户
record_time timestamptz 创建时间 记录创建时间,默认 now()
is_deleted int2 是否已删除 0 未删除,1 已删除,默认 0

8.4 核心业务逻辑

模型发布流程(云端操作):

  1. 模型训练完成后,管理员将评估合格的训练模型模型文件上传至 MinIO记录 model_path;
  2. 管理员发布训练后新的算法模型版本并更新记录ai_algorithm_models 中
  3. 管理员发布更新云端孪生设备的 model_idmodel_versionmodel_publish_timemodel_publish_user

边缘同步流程(边缘端自动):

  1. 边缘设备按 sync_check_interval 间隔轮询查询云端孪生设备
  2. 比较 model_version(云端)与 edge_model_version(边缘端)
  3. 若不一致,从 model_path 下载新模型文件
  4. 更新本地模型,上报 edge_model_versionedge_update_time

心跳上报(边缘端自动):

  • 边缘设备定期更新 last_heartbeat_timeonline_status
  • 云端可通过心跳时间判断设备是否在线

8.5 枚举字段说明

sttp — 终端分类

含义 说明
01 鱼类识别AI盒子 用于鱼类识别监测的边缘AI计算设备
02 鸟类识别AI盒子 用于鸟类识别监测的边缘AI计算设备
03 野生动物识别AI盒子 用于野生动物识别监测的边缘AI计算设备
04 鱼类分拣装置 用于鱼类分拣的边缘智能设备

usfl — 是否启用

含义 说明
0 未启用
1 已启用

dtin — 数据是否接入

含义 说明
0 未接入 数据未接入系统
1 已接入 数据已接入系统

mway — 监测方式

含义 说明
0 人工监测 人工巡检方式
1 自动监测 AI自动识别监测
2 混合监测 人工+自动混合模式

online_status — 在线状态

含义 说明
0 离线 边缘设备未在线或心跳超时
1 在线 边缘设备在线,心跳正常

is_deleted — 是否已删除

含义 说明
0 未删除 默认值
1 已删除 逻辑删除标记

9. 枚举字段汇总

9.1 数据集类

表名 字段 枚举说明
ai_dataset dataset_type 01 表格,02 图片,03 视频,04 音频,05 文本
ai_dataset status 00 未生成图片,01 初始创建,02 标注完成,09 标记删除
ai_dataset_sample status 00 初始创建,01 已分配,02 已标注

9.2 临时文件类

表名 字段 枚举说明
ai_temp_file original_type 当前代码暂无实现,建议值:图片/视频/音频/ZIP/文本/其他
ai_temp_file status 当前代码暂无实现,建议值:已上传/已导入/已失效/已删除

9.3 标注任务类

表名 字段 枚举说明
ai_annotate_task annotate_type 01 图像分类,02 物体检测,03 语义分割,05 声音分类,10 文本分类
ai_annotate_task work_type 01 单人标注,02 团队标注
ai_annotate_task task_type 0 手动标注,1 自动标注
ai_annotate_task region_type 0 矩形,1 多边形
ai_annotate_task status 01 初始创建,02 任务分配,03 任务完成,09 标记删除
ai_annotate_task_sample hard 0 否,1
ai_annotate_task_sample status 01 初始分配,02 标注完成,03 提交审核,04 审核已阅,05 审核驳回,06 审核后入库

9.4 智能终端类

表名 字段 枚举说明
ai_smart_terminal sttp 01 鱼类识别AI盒子02 鸟类识别AI盒子03 野生动物识别AI盒子04 鱼类分拣装置
ai_smart_terminal usfl 0 否,1
ai_smart_terminal dtin 0 未接入,1 已接入
ai_smart_terminal mway 0 人工监测,1 自动监测,2 混合监测
ai_smart_terminal online_status 0 离线,1 在线
ai_smart_terminal is_deleted 0 未删除,1 已删除

10. 设计与实现说明

10.1 当前代码与新表的映射差异

新表名 当前代码模型 当前旧表名
ai_dataset AiDataset ai_algorithm_dataset
ai_dataset_sample AiDatasetSample ai_dataset_sample
ai_temp_file 暂无 暂无
ai_annotate_task AiDatasetTask ai_dataset_task
ai_annotate_task_sample AiDatasetTaskSample ai_dataset_task_sample
ai_smart_terminal 暂无 暂无

10.2 当前最主要的结构改造点

  • ai_dataset:需要去掉旧模型中与算法强绑定的旧表映射差异
  • ai_dataset_sample:需要从旧字段 annotation_contentrectangle/polygon 过渡
  • ai_temp_file需要补齐模型、接口、MinIO 业务落库逻辑
  • ai_annotate_task:需要将旧标注任务模型切换到新表名
  • ai_annotate_task_sample:需要将旧标注任务样本模型切换到新表名
  • ai_smart_terminal:需要补齐 Django 模型、序列化器、CRUD 接口及前端管理页面;实现模型发布到云端孪生设备、边缘端心跳上报与版本同步接口

10.3 与 MinIO 的关系

表名 建议 MinIO 桶 说明
ai_temp_file tempfile 临时上传文件统一存放
ai_dataset_sample dataset 正式数据集样本文件统一存放

11. 结论

本次数据库结构说明对应的是“数据集 + 临时文件 + 标注任务 + 智能终端”主业务链路。

其中:

  • ai_dataset 负责数据集主记录
  • ai_dataset_sample 负责正式样本记录
  • ai_temp_file 负责临时上传文件记录
  • ai_annotate_task 负责单数据集标注任务
  • ai_annotate_task_sample 负责标注任务样本流转
  • ai_smart_terminal 负责边缘设备云端孪生镜像、模型发布与边缘同步状态记录

建议后续开发严格以本说明和 table.sql 为基准统一模型定义、接口设计与枚举含义避免再次出现“SQL 已更新、代码仍沿用旧表旧字段”的偏差。