更新
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
-- 医生工作站视频接通后的实时录音转写。
|
||||
-- 转写摘要固化到每条通话记录,分段表用唯一键保证 WebChannel 重试幂等。
|
||||
|
||||
ALTER TABLE `zyt_tcm_call_record`
|
||||
ADD COLUMN `transcription_session_id` varchar(128) NOT NULL DEFAULT '' COMMENT '实时转写会话ID',
|
||||
ADD COLUMN `transcription_language` varchar(32) NOT NULL DEFAULT '' COMMENT '转写源语言',
|
||||
ADD COLUMN `transcription_status` varchar(16) NOT NULL DEFAULT '' COMMENT 'running/completed/partial/failed',
|
||||
ADD COLUMN `transcription_segment_count` int unsigned NOT NULL DEFAULT 0 COMMENT '已持久化完成分段数',
|
||||
ADD COLUMN `transcript_text` longtext NULL COMMENT '按时间和说话人生成的面诊对话文字',
|
||||
ADD COLUMN `transcription_started_at` int unsigned NOT NULL DEFAULT 0 COMMENT '转写开始Unix时间',
|
||||
ADD COLUMN `transcription_finished_at` int unsigned NOT NULL DEFAULT 0 COMMENT '转写完成Unix时间';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `zyt_tcm_call_transcript_segment` (
|
||||
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '分段ID',
|
||||
`call_record_id` int unsigned NOT NULL COMMENT '通话记录ID',
|
||||
`transcription_session_id` varchar(128) NOT NULL COMMENT '实时转写会话ID',
|
||||
`segment_id` varchar(160) NOT NULL COMMENT '腾讯云完成分段ID',
|
||||
`speaker_user_id` varchar(160) NOT NULL DEFAULT '' COMMENT '说话人TRTC用户ID',
|
||||
`speaker_role` varchar(20) NOT NULL DEFAULT 'unknown' COMMENT 'doctor/patient/unknown',
|
||||
`timestamp_ms` bigint unsigned NOT NULL DEFAULT 0 COMMENT '分段时间戳(毫秒)',
|
||||
`text` text NOT NULL COMMENT '完成分段文字,最多4000字符',
|
||||
`create_time` int unsigned NOT NULL DEFAULT 0,
|
||||
`update_time` int unsigned NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_call_session_segment` (`call_record_id`, `transcription_session_id`, `segment_id`),
|
||||
KEY `idx_call_session_time` (`call_record_id`, `transcription_session_id`, `timestamp_ms`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='视频面诊实时转写完成分段';
|
||||
@@ -0,0 +1,89 @@
|
||||
-- 实时转写接口继承现有“1v1通话”权限,避免未注册 action 被默认放行。
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
SET @video_call_menu_id := (
|
||||
SELECT `id`
|
||||
FROM `zyt_system_menu`
|
||||
WHERE `perms` = 'tcm.diagnosis/video-call'
|
||||
ORDER BY `id`
|
||||
LIMIT 1
|
||||
);
|
||||
|
||||
INSERT INTO `zyt_system_menu` (
|
||||
`pid`, `type`, `name`, `icon`, `sort`, `perms`, `paths`, `component`,
|
||||
`selected`, `params`, `is_cache`, `is_show`, `is_disable`, `create_time`, `update_time`
|
||||
)
|
||||
SELECT @video_call_menu_id, 'A', '启动通话转写', '', 1,
|
||||
'tcm.diagnosis/startCallTranscription', '', '', '', '', 0, 1, 0,
|
||||
UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
|
||||
FROM DUAL
|
||||
WHERE @video_call_menu_id IS NOT NULL
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM `zyt_system_menu`
|
||||
WHERE `perms` = 'tcm.diagnosis/startCallTranscription'
|
||||
);
|
||||
|
||||
INSERT INTO `zyt_system_menu` (
|
||||
`pid`, `type`, `name`, `icon`, `sort`, `perms`, `paths`, `component`,
|
||||
`selected`, `params`, `is_cache`, `is_show`, `is_disable`, `create_time`, `update_time`
|
||||
)
|
||||
SELECT @video_call_menu_id, 'A', '保存通话转写分段', '', 2,
|
||||
'tcm.diagnosis/upsertCallTranscriptSegments', '', '', '', '', 0, 1, 0,
|
||||
UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
|
||||
FROM DUAL
|
||||
WHERE @video_call_menu_id IS NOT NULL
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM `zyt_system_menu`
|
||||
WHERE `perms` = 'tcm.diagnosis/upsertCallTranscriptSegments'
|
||||
);
|
||||
|
||||
INSERT INTO `zyt_system_menu` (
|
||||
`pid`, `type`, `name`, `icon`, `sort`, `perms`, `paths`, `component`,
|
||||
`selected`, `params`, `is_cache`, `is_show`, `is_disable`, `create_time`, `update_time`
|
||||
)
|
||||
SELECT @video_call_menu_id, 'A', '完成通话转写', '', 3,
|
||||
'tcm.diagnosis/finishCallTranscription', '', '', '', '', 0, 1, 0,
|
||||
UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
|
||||
FROM DUAL
|
||||
WHERE @video_call_menu_id IS NOT NULL
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM `zyt_system_menu`
|
||||
WHERE `perms` = 'tcm.diagnosis/finishCallTranscription'
|
||||
);
|
||||
|
||||
SET @transcription_start_menu_id := (
|
||||
SELECT `id` FROM `zyt_system_menu`
|
||||
WHERE `perms` = 'tcm.diagnosis/startCallTranscription'
|
||||
ORDER BY `id` LIMIT 1
|
||||
);
|
||||
SET @transcription_segment_menu_id := (
|
||||
SELECT `id` FROM `zyt_system_menu`
|
||||
WHERE `perms` = 'tcm.diagnosis/upsertCallTranscriptSegments'
|
||||
ORDER BY `id` LIMIT 1
|
||||
);
|
||||
SET @transcription_finish_menu_id := (
|
||||
SELECT `id` FROM `zyt_system_menu`
|
||||
WHERE `perms` = 'tcm.diagnosis/finishCallTranscription'
|
||||
ORDER BY `id` LIMIT 1
|
||||
);
|
||||
|
||||
INSERT IGNORE INTO `zyt_system_role_menu` (`role_id`, `menu_id`)
|
||||
SELECT `role_id`, @transcription_start_menu_id
|
||||
FROM `zyt_system_role_menu`
|
||||
WHERE `menu_id` = @video_call_menu_id
|
||||
AND @transcription_start_menu_id IS NOT NULL;
|
||||
|
||||
INSERT IGNORE INTO `zyt_system_role_menu` (`role_id`, `menu_id`)
|
||||
SELECT `role_id`, @transcription_segment_menu_id
|
||||
FROM `zyt_system_role_menu`
|
||||
WHERE `menu_id` = @video_call_menu_id
|
||||
AND @transcription_segment_menu_id IS NOT NULL;
|
||||
|
||||
INSERT IGNORE INTO `zyt_system_role_menu` (`role_id`, `menu_id`)
|
||||
SELECT `role_id`, @transcription_finish_menu_id
|
||||
FROM `zyt_system_role_menu`
|
||||
WHERE `menu_id` = @video_call_menu_id
|
||||
AND @transcription_finish_menu_id IS NOT NULL;
|
||||
|
||||
COMMIT;
|
||||
Reference in New Issue
Block a user