syntax = "proto3"; option go_package = ".;pb"; // 转写服务类型 enum TranscribeService { TranscribeService_Unknown = 0; // 未知(兼容旧数据) TranscribeService_ByteDance = 1; // 字节跳动 TranscribeService_Ali = 2; // 阿里云 DashScope TranscribeService_Auto = 3; // 自动按语言路由 TranscribeService_Google = 4; // Google Cloud TranscribeService_Microsoft = 5; // Azure } enum DBEchoMeetRecordState{ Unknow = 0; //@go_tags(`gorm:"DBEchoMeetRecordState_Unknow"`) 未知状态 AwaitTranscribing = 1; //@go_tags(`gorm:"DBEchoMeetRecordState_AwaitingTranscribing"`) 等待转写中 Transcribing = 2; //@go_tags(`gorm:"DBEchoMeetRecordState_Transcribing"`) 听写中 AwaitSummarizing = 3; //@go_tags(`gorm:"DBEchoMeetRecordState_AwaitingSummarizing"`) 等待总结中 Summarizing = 4; //@go_tags(`gorm:"DBEchoMeetRecordState_Summarizing"`) 总结中 Completed = 5; //@go_tags(`gorm:"DBEchoMeetRecordState_Completed"`) 已完成 Readed = 6; //@go_tags(`gorm:"DBEchoMeetRecordState_Readed"`) 已阅 TranscribeFail = 10002; //@go_tags(`gorm:"DBEchoMeetRecordState_TranscribeFail"`) 转写失败 SummarizFail = 10001; //@go_tags(`gorm:"DBEchoMeetRecordState_SummarizFail"`) 总结失败 } //会议记录模板 message DBEchoMeetTemplate{ uint64 id = 1; //@go_tags(`gorm:"id;primaryKey;autoIncrement json:"id"`) id string tid =2; //@go_tags(`gorm:"tid;index"`) 模板id string source = 3; //@go_tags(`gorm:"source;index"`) 来源 string title = 4; //@go_tags(`gorm:"title"`) 标题 string description = 5; //@go_tags(`gorm:"description"`) 描述 string language = 6; //@go_tags(`gorm:"language;index"`) 语言 string ttype = 7; //@go_tags(`gorm:"ttype;index"`) 类型 string tags = 8; //@go_tags(`gorm:"tags"`) 标签 string icon = 9; //@go_tags(`gorm:"icon"`) 图标 string outline = 10; //@go_tags(`gorm:"outline"`) 大纲 string template = 11; //@go_tags(`gorm:"template"`) 模板 int32 sort = 12; //@go_tags(`gorm:"sort;index"`) 显示优先级,数值越大越靠前 } //会议记录数据结构 message DBEchoMeetRecord { uint64 id = 1; //@go_tags(`gorm:"id:50;primaryKey;autoIncrement json:"id"`) 索引id string uid = 2; //@go_tags(`gorm:"uid;index" json:"uid"`) 用户ID DBEchoMeetRecordState state = 3; //@go_tags(`gorm:"state;index" json:"state"`) 状态 int64 creationtime = 4; //@go_tags(`gorm:"creationtime;index" json:"creationtime"`) 時間 string rtype = 5; //@go_tags(`gorm:"rtype;index" json:"rtype"`) 类型 string filepath = 6; //@go_tags(`gorm:"filepath" json:"filepath"`) 本地音频文件路径 string audiourl = 7; //@go_tags(`gorm:"audiourl" json:"audiourl"`) 音频url string title = 8; //@go_tags(`gorm:"title" json:"title"`) 标题 string address = 9; //@go_tags(`gorm:"address" json:"address"`) 地址 string personnel = 10; //@go_tags(`gorm:"personnel" json:"personnel"`) 成员 int32 tasktype = 11; //@go_tags(`gorm:"tasktype" json:"tasktype"`) 任务类型 string taskid = 12; //@go_tags(`gorm:"taskid" json:"taskid"`) 任务id string logid = 13; //@go_tags(`gorm:"logid" json:"logid"`) 日志id bool isdistinguishspeaker = 14; //@go_tags(`gorm:"isdistinguishspeaker" json:"isdistinguishspeaker"`) 是否区分说话人 uint64 templateid = 15; //@go_tags(`gorm:"templateid" json:"templateid"`) 模板id string formlanguage = 16; //@go_tags(`gorm:"formlanguage" json:"formlanguage"`) 语言 string tolanguage = 17; //@go_tags(`gorm:"tolanguage" json:"tolanguage"`) 目标语言 int32 seconds = 18; //@go_tags(`gorm:"seconds" json:"seconds"`) 时长 int64 size = 19; //@go_tags(`gorm:"column:size;type:bigint" json:"size"`) 文件大小 string original = 20; //@go_tags(`gorm:"original" json:"original"`) 听写内容 string translate = 21; //@go_tags(`gorm:"translate" json:"translate"`) 翻译 string overview = 22; //@go_tags(`gorm:"overview" json:"overview"`) 短总结 string summary = 23; //@go_tags(`gorm:"summary" json:"summary"`) 总结 TranscribeService service_type = 24; //@go_tags(`gorm:"service_type" json:"service_type"`) 转写服务类型 int64 starttime = 25; //@go_tags(`gorm:"starttime" json:"starttime"`) 处理开始时间 unix 秒 int64 processduration = 26; //@go_tags(`gorm:"processduration" json:"processduration"`) 处理耗时 秒 int64 lastquerytime = 27; //@go_tags(`gorm:"lastquerytime" json:"lastquerytime"`) 上一次主动查询第三方服务的 unix 秒,用于限制查询频率 string remark = 28; //@go_tags(`gorm:"remark" json:"remark"`) 用户备注(创建记录时填写,参与AI总结) string imageurls = 29; //@go_tags(`gorm:"imageurls" json:"imageurls"`) 注释图片url列表(JSON数组字符串,编码方式同original),作为多模态内容参与AI总结 string summary_model = 30; //@go_tags(`gorm:"summary_model" json:"summary_model"`) 总结所用文本大模型条目id(对应 echomeet_svc_config),空=按优先级默认 } message ContextStruct{ uint64 Meetingid = 1; //@go_tags(`json:"meetingid"`) 会议id string Content = 2; //@go_tags(`json:"content"`) 内容 int64 Starttime = 3; //@go_tags(`json:"starttime"`) 开始时间 int64 Endtime = 4; //@go_tags(`json:"endtime"`) 结束时间 string Speaker = 5; //@go_tags(`json:"speaker"`) 说话人 } // 单个字词的识别结果 message Word { float confidence = 1; // 置信度 string text = 2; // 字词文本 int64 start_time = 3; // 开始时间(ms) int64 end_time = 4; // 结束时间(ms) } // 分句的附加信息(声道、说话人) message UtteranceAdditions { string channel_id = 1; // 声道ID string speaker = 2; // 说话人ID } // 分句识别结果 message Utterance { repeated Word words = 1; // 分句下的字词列表 UtteranceAdditions additions = 2; // 附加信息 string text = 3; // 分句文本 int64 start_time = 4; // 分句开始时间(ms) int64 end_time = 5; // 分句结束时间(ms) } // 识别结果的附加信息(总时长) message ResultAdditions { string duration = 1; // 音频总时长(ms) } // 核心识别结果 message RecognitionResult { string text = 1; // 完整识别文本 repeated Utterance utterances = 2; // 分句列表 ResultAdditions additions = 3; // 结果附加信息 } // 音频基础信息 message AudioInfo { int64 duration = 1; // 音频时长(ms) }