syntax = "proto3"; option go_package = ".;pb"; import "echomeet/echomeet_db.proto"; //获取会议记录模板 message EchomeetGetTemplatesReq{ string language = 1; //@go_tags(`json:"language"`) 语言 } message EchomeetGetTemplatesResp{ repeated DBEchoMeetTemplate templates = 1; //@go_tags(`json:"templates"`) //会议记录模板列表 } //添加模版 message EchomeetAddTemplateReq{ DBEchoMeetTemplate template = 1; //@go_tags(`json:"template"`) //会议记录模板 } message EchomeetAddTemplateResp{ DBEchoMeetTemplate template = 1; //@go_tags(`json:"template"`) //会议记录模板 } //更新模版 message EchomeetUpdateTemplateReq{ DBEchoMeetTemplate template = 1; //@go_tags(`json:"template"`) //会议记录模板 } message EchomeetUpdateTemplateResp{ DBEchoMeetTemplate template = 1; //@go_tags(`json:"template"`) //会议记录模板 } //删除模版 message EchomeetDeleteTemplateReq{ repeated uint64 ids = 1; //@go_tags(`json:"ids"`) //会议记录模板id列表 } message EchomeetDeleteTemplateResp{ repeated uint64 ids = 1; //@go_tags(`json:"ids"`) //删除的会议记录模板id列表 } //请求历史记录 message EchomeetGetAllRecordsReq{ } message EchomeetGetAllRecordsResp{ repeated DBEchoMeetRecord records = 1; //@go_tags(`json:"records"`) //会议记录列表 } //请求历史记录 message EchomeetGetRecordsReq{ repeated uint64 ids = 1; //@go_tags(`json:"ids"`) //会议记录id } message EchomeetGetRecordsResp{ repeated DBEchoMeetRecord records = 1; //@go_tags(`json:"records"`) //会议记录列表 } //请求历史记录 message EchomeetGetRecordReq{ uint64 id = 1; //@go_tags(`json:"id"`) //会议记录id } message EchomeetGetRecordResp{ DBEchoMeetRecord record = 1; //@go_tags(`json:"record"`) //会议记录 } //上传历史记录 message EchomeetPutRecordsReq{ repeated DBEchoMeetRecord records = 1; //@go_tags(`json:"records"`) //会议记录列表 repeated string delids = 2; //@go_tags(`json:"delids"`) //删除的会议记录id列表 } message EchomeetPutRecordsResp{ } message EchomeetAddRecordReq{ string title = 1; //@go_tags(`json:"title"`) //标题 string rtype = 2; //@go_tags(`json:"rtype"`) //类型 string filepath = 3; //@go_tags(`json:"filepath"`) //音频文件路径 repeated ContextStruct original = 4; //@go_tags(`gorm:"original" json:"original"`) 听写内容 int32 seconds = 5; //@go_tags(`json:"seconds"`) //时长 int64 size = 6; //@go_tags(`json:"size"`) //文件大小 string remark = 7; //@go_tags(`json:"remark"`) //用户备注(参与AI总结) repeated string imageurls = 8; //@go_tags(`json:"imageurls"`) //注释图片url列表(作为多模态内容参与AI总结) } message EchomeetAddRecordResp{ DBEchoMeetRecord record = 1; //@go_tags(`json:"record"`) //会议记录 } //上传下载记录 message EchomeetUpRecordReq{ uint64 id = 1; //@go_tags(`json:"id"`) //会议记录id string audiourl = 2; //@go_tags(`json:"audiourl"`) //音频url } //上传下载记录响应 message EchomeetUpRecordResp{ DBEchoMeetRecord record = 1; //@go_tags(`json:"record"`) //会议记录 } message EchomeetStartTaskReq{ uint64 id = 1; //@go_tags(`json:"id"`) //会议记录id string formlanguage = 2; //@go_tags(`json:"formlanguage"`) //语言 string tolanguage = 3; //@go_tags(`json:"tolanguage"`) //目标语言 bool isdistinguishspeaker = 4; //@go_tags(`json:"isdistinguishspeaker"`) //是否区分说话人 uint64 templateid = 5; //@go_tags(`json:"templateid"`) //会议记录模版索引id string tid = 6; //@go_tags(`json:"tid"`) //会议记录模板tid string summary_svc_id = 8; //@go_tags(`json:"summary_svc_id"`) //客户端指定的总结大模型服务id(须在可选列表内且后台开关允许,否则用默认);识别/翻译由后台编排选路,客户端不可指定 } message EchomeetStartTaskResp{ } // 回调数据的根结构 message EchomeetCallbackReq { int32 code = 1; // 状态码(20000000=成功) string message = 2; // 状态描述(Success/失败原因) string id = 3; // 任务ID RecognitionResult result = 4; // 识别结果 AudioInfo audio_info = 5; // 音频信息 string callback_data = 6; // 自定义回调数据(你日志中的liwei1dap) } message EchomeetCallbackResp{ } //重新总结请求 message EchomeetSummaryReq { uint64 id = 1; //@go_tags(`json:"id"`) //会议记录id uint64 templateid = 5; //@go_tags(`json:"templateid"`) //会议记录模板id string tid = 6; //@go_tags(`json:"tid"`) //会议记录模板tid string tolanguage = 7; //@go_tags(`json:"tolanguage"`) 语言 string summary_svc_id = 9; //@go_tags(`json:"summary_svc_id"`) //客户端指定的总结大模型服务id,留空沿用记录已有/后台默认 } message EchomeetSummaryResp{ } //获取客户端可选的总结大模型服务列表(识别/翻译由后台编排选路,不下发) message EchomeetGetSummaryServicesReq{ } //可选总结服务项 message EchomeetSummaryServiceItem{ string svc_id = 1; //@go_tags(`json:"svc_id"`) //服务id(starttask/summary 的 summary_svc_id 传它) string name = 2; //@go_tags(`json:"name"`) //服务显示名 bool is_default = 3; //@go_tags(`json:"is_default"`) //是否后台默认模型 } message EchomeetGetSummaryServicesResp{ bool client_choice = 1; //@go_tags(`json:"client_choice"`) //后台是否允许客户端指定总结模型;false 时 services 仅含默认项、传 summary_svc_id 会被忽略 repeated EchomeetSummaryServiceItem services = 2; //@go_tags(`json:"services"`) //可选服务列表 } //获取会议记录能力清单:支持的语言 + 可选总结大模型。全部来自后台配置(第三方服务的 languages 字段 //+「会议记录服务」编排),服务端下发,客户端不写死。getsummaryservices 是本接口的子集,保留兼容。 message EchomeetGetCapabilitiesReq{ } message EchomeetGetCapabilitiesResp{ repeated string transcribe_languages = 1; //@go_tags(`json:"transcribe_languages"`) //录音识别支持的语言(BCP-47):后台在用的识别服务 languages 并集,按优先级顺序去重 bool transcribe_any_language = 2; //@go_tags(`json:"transcribe_any_language"`) //true=存在未限定语言的识别服务,实际不受上面的列表约束 repeated string translate_languages = 3; //@go_tags(`json:"translate_languages"`) //翻译支持的目标语言(BCP-47),口径同上 bool translate_any_language = 4; //@go_tags(`json:"translate_any_language"`) //true=存在未限定语言的翻译服务 bool client_choice = 5; //@go_tags(`json:"client_choice"`) //后台是否允许客户端指定总结模型;false 时 summary_services 仅含默认项、传 summary_svc_id 会被忽略 repeated EchomeetSummaryServiceItem summary_services = 6; //@go_tags(`json:"summary_services"`) //可选总结大模型列表 } //已阅会议记录 message EchomeetReadRecordReq{ uint64 id = 1; //@go_tags(`json:"id"`) //会议记录id } message EchomeetReadRecordResp{ } //修改会议记录 message EchomeetModifyRecordsReq{ uint64 id = 1; //@go_tags(`json:"id"`) //会议记录id string title = 2; //@go_tags(`json:"title"`) //标题 string address = 3; //@go_tags(`json:"address"`) //地址 string personnel = 4; //@go_tags(`json:"personnel"`) //人员 string translate = 5; //@go_tags(`json:"translate"`) //内容 string summary = 6; //@go_tags(`json:"summary"`) //总结 } message EchomeetModifyRecordsResp{ DBEchoMeetRecord record = 1; //@go_tags(`json:"record"`) //会议记录 } //删除会议记录 message EchomeetDelRecordsReq{ repeated uint64 ids = 1; //@go_tags(`json:"ids"`) //会议记录id列表 } message EchomeetDelRecordsResp{ repeated uint64 ids = 1; //@go_tags(`json:"ids"`) //删除的会议记录id列表 } // 阿里云录音文件转写回调 message EchomeetAliCallbackReq { int32 StatusCode = 1; // 状态码 21050000=运行中 21050001=成功 21050002=失败 string TaskId = 2; // 任务ID string StatusText = 3; // 状态描述 string RequestId = 4; // 请求ID EchomeetAliCallbackResult Result = 5; // 转写结果 } message EchomeetAliCallbackResult { repeated EchomeetAliSentence Sentences = 1; // 句子列表 } message EchomeetAliSentence { string Text = 1; // 转写文本 int64 BeginTime = 2; // 开始时间(ms) int64 EndTime = 3; // 结束时间(ms) string SpeakerId = 4; // 说话人ID int32 ChannelId = 5; // 通道ID } message EchomeetAliCallbackResp { } // ============================== 会议纪要分享 ============================== // // 分享链接形如 https://share.ymaikj.com/share/{serverHost}/{brand}/{id}/{ticket} // // ⚠️ 2026-09-23 之前客户端把**用户的登录 JWT**直接拼进这个 URL,谁拿到链接就拿到了 // 整个账号。现在改成服务端签发的分享票据:只含一条记录、只读、有有效期。 message EchomeetCreateShareLinkReq{ uint64 id = 1; //@go_tags(`json:"id"`) 会议记录id int32 expiredays = 2; //@go_tags(`json:"expiredays"`) 有效天数,<=0 用默认(7),上限 30 } message EchomeetCreateShareLinkResp{ string ticket = 1; //@go_tags(`json:"ticket"`) 分享票据,拼进落地页 URL 的最后一段 int64 expiretime = 2; //@go_tags(`json:"expiretime"`) 到期时间 unix 秒 } // 落地页按票据取只读内容。**免登录**,须在 gateway 的 WhiteList 里。 message EchomeetGetSharedRecordReq{ string ticket = 1; //@go_tags(`json:"ticket"`) 分享票据 } // 只回落地页要展示的字段。刻意不含 uid / filepath / taskid / logid / *_svc_id: // 这是一个任何人凭链接就能打开的接口,多回一个字段就是多泄一份内部信息。 message EchomeetGetSharedRecordResp{ uint64 id = 1; //@go_tags(`json:"id"`) 会议记录id string title = 2; //@go_tags(`json:"title"`) 标题 int64 creationtime = 3; //@go_tags(`json:"creationtime"`) 创建时间 unix 秒 int32 seconds = 4; //@go_tags(`json:"seconds"`) 时长 秒 string audiourl = 5; //@go_tags(`json:"audiourl"`) 音频url string original = 6; //@go_tags(`json:"original"`) 听写内容 string translate = 7; //@go_tags(`json:"translate"`) 翻译 string overview = 8; //@go_tags(`json:"overview"`) 短总结 string summary = 9; //@go_tags(`json:"summary"`) 总结 string formlanguage = 10; //@go_tags(`json:"formlanguage"`) 源语言 string tolanguage = 11; //@go_tags(`json:"tolanguage"`) 目标语言 int64 expiretime = 12; //@go_tags(`json:"expiretime"`) 本链接到期时间 unix 秒 }