-- 数据标注服务数据库初始化脚本 -- 适用于 datamate 数据库 -- 基于 Label Studio 模板体系设计 USE datamate; -- ===================================== -- DDL语句 - 数据库表结构定义 -- ===================================== -- 标注配置模板表 CREATE TABLE IF NOT EXISTS t_dm_annotation_templates ( id VARCHAR(64) PRIMARY KEY COMMENT '模板ID(UUID或自定义ID)', name VARCHAR(100) NOT NULL COMMENT '模板名称', description VARCHAR(500) COMMENT '模板描述', data_type VARCHAR(50) NOT NULL COMMENT '数据类型: text/image/audio/video/pdf/timeseries/chat/html/table', labeling_type VARCHAR(50) NOT NULL COMMENT '标注类型', configuration JSON NULL COMMENT '标注配置(兼容字段,主配置为label_config)', label_config TEXT COMMENT 'Label Studio XML配置(模板主配置)', style VARCHAR(32) NOT NULL COMMENT '样式配置: horizontal/vertical', category VARCHAR(50) DEFAULT 'custom' COMMENT '模板分类', built_in BOOLEAN DEFAULT FALSE COMMENT '是否系统内置模板', version VARCHAR(20) DEFAULT '1.0' COMMENT '模板版本', created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', deleted_at TIMESTAMP NULL COMMENT '删除时间(软删除)', INDEX idx_data_type (data_type), INDEX idx_labeling_type (labeling_type), INDEX idx_category (category), INDEX idx_built_in (built_in) ) COMMENT='标注配置模板表'; -- 标注项目表 CREATE TABLE IF NOT EXISTS t_dm_labeling_projects ( id VARCHAR(36) PRIMARY KEY COMMENT 'UUID', dataset_id VARCHAR(36) NOT NULL COMMENT '数据集ID', name VARCHAR(100) NOT NULL COMMENT '项目名称', labeling_project_id VARCHAR(8) NOT NULL COMMENT 'Label Studio项目ID', template_id VARCHAR(64) NULL COMMENT '使用的模板ID', configuration JSON COMMENT '项目配置(可能包含对模板的自定义修改)', progress JSON COMMENT '项目进度信息', created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', deleted_at TIMESTAMP NULL COMMENT '删除时间(软删除)', FOREIGN KEY (template_id) REFERENCES t_dm_annotation_templates(id) ON DELETE SET NULL, INDEX idx_dataset_id (dataset_id), INDEX idx_template_id (template_id), INDEX idx_labeling_project_id (labeling_project_id) ) COMMENT='标注项目表'; -- 标注项目文件快照表 CREATE TABLE IF NOT EXISTS t_dm_labeling_project_files ( id VARCHAR(36) PRIMARY KEY COMMENT 'UUID', project_id VARCHAR(36) NOT NULL COMMENT '标注项目ID', file_id VARCHAR(36) NOT NULL COMMENT '文件ID', created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', UNIQUE KEY uk_project_file (project_id, file_id), INDEX idx_project_id (project_id), INDEX idx_file_id (file_id) ) COMMENT='标注项目文件快照表'; -- 标注结果表 CREATE TABLE IF NOT EXISTS t_dm_annotation_results ( id VARCHAR(36) PRIMARY KEY COMMENT 'UUID', project_id VARCHAR(36) NOT NULL COMMENT '标注项目ID', file_id VARCHAR(36) NOT NULL COMMENT '文件ID', annotation JSON NOT NULL COMMENT 'Label Studio annotation 原始JSON', created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', UNIQUE KEY uk_project_file (project_id, file_id), INDEX idx_project_id (project_id), INDEX idx_file_id (file_id), INDEX idx_updated_at (updated_at) ) COMMENT='标注结果表'; -- 自动标注任务表 CREATE TABLE IF NOT EXISTS t_dm_auto_annotation_tasks ( id VARCHAR(36) PRIMARY KEY COMMENT 'UUID', name VARCHAR(255) NOT NULL COMMENT '任务名称', dataset_id VARCHAR(36) NOT NULL COMMENT '数据集ID', dataset_name VARCHAR(255) COMMENT '数据集名称', config JSON NOT NULL COMMENT '任务配置', file_ids JSON COMMENT '文件ID列表', status VARCHAR(50) NOT NULL DEFAULT 'pending' COMMENT '任务状态', progress INT DEFAULT 0 COMMENT '任务进度', total_images INT DEFAULT 0 COMMENT '总图片数', processed_images INT DEFAULT 0 COMMENT '已处理图片数', detected_objects INT DEFAULT 0 COMMENT '检测到的对象数', output_path VARCHAR(500) COMMENT '输出路径', error_message TEXT COMMENT '错误信息', created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', completed_at TIMESTAMP NULL COMMENT '完成时间', deleted_at TIMESTAMP NULL COMMENT '删除时间', INDEX idx_dataset_id (dataset_id), INDEX idx_status (status), INDEX idx_created_at (created_at) ) COMMENT='自动标注任务表'; -- ===================================== -- DML语句 - 内置标注模板数据 -- ===================================== -- 清空现有内置模板(保留自定义模板) DELETE FROM t_dm_annotation_templates WHERE built_in = 1; -- ============================================= -- 1. 音频/语音处理 (Audio/Speech Processing) -- 已启用默认模板 -- ============================================= -- 1.1 自动语音识别(分段) INSERT INTO t_dm_annotation_templates ( id, name, description, data_type, labeling_type, configuration, label_config, style, category, built_in, version ) VALUES ( 'tpl-asr-segments-001', '语音识别(分段)', '对音频进行语音活动分段并转录文本,适用于呼叫中心转录、会议记录、播客转录、法庭记录等场景。关联模型:Whisper、Wav2Vec2、DeepSpeech', 'audio', 'asr-segments', JSON_OBJECT( 'labels', JSON_ARRAY( JSON_OBJECT('fromName', 'labels', 'toName', 'audio', 'type', 'Labels', 'labels', JSON_ARRAY('Speech', 'Noise')), JSON_OBJECT('fromName', 'transcription', 'toName', 'audio', 'type', 'TextArea', 'required', true) ), 'objects', JSON_ARRAY(JSON_OBJECT('name', 'audio', 'type', 'Audio', 'value', '$audio')) ), '