From 5dfab922bea3f5b4a2d3878583c844ccfbd9c1b3 Mon Sep 17 00:00:00 2001 From: lxm <1274844347@qq.com> Date: Wed, 26 Nov 2025 14:34:10 +0800 Subject: [PATCH] =?UTF-8?q?fix(meeting):=20=E4=BF=AE=E5=A4=8D=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E7=B1=BB=E5=9E=8B=E7=9B=91=E5=90=AC=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E5=92=8C=E4=BB=A3=E7=A0=81=E6=A0=BC=E5=BC=8F=E5=8C=96=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修正meeting_details_controller中任务类型监听逻辑,确保在快速模式下正确处理类型3的任务 调整meeting_task_service2中的代码格式,提高可读性 移除废弃的aiServiceMessage方法及相关代码 --- .../meeting/meeting_task_service2.dart | 172 +----------------- .../meeting_details_controller.dart | 4 +- 2 files changed, 8 insertions(+), 168 deletions(-) diff --git a/lib/data/services/meeting/meeting_task_service2.dart b/lib/data/services/meeting/meeting_task_service2.dart index e04681dff..b6b455c43 100644 --- a/lib/data/services/meeting/meeting_task_service2.dart +++ b/lib/data/services/meeting/meeting_task_service2.dart @@ -851,7 +851,10 @@ class MeetingTaskService2 extends GetxService { // 使用统一的总结服务生成概览与总结 final String tplPrompt = ((templateData?['prompt']) ?? '').toString(); final String tplOutline = ((templateData?['outline']) ?? '').toString(); - final String outCode = (((templateData?['targetLanguage']) ?? (templateData?['language']) ?? '') as String).toLowerCase(); + final String outCode = (((templateData?['targetLanguage']) ?? + (templateData?['language']) ?? + '') as String) + .toLowerCase(); String langDesc = ''; if (outCode.startsWith('zh')) { langDesc = '中文'; @@ -892,7 +895,8 @@ class MeetingTaskService2 extends GetxService { : (langDesc.isEmpty ? tplOutline : tplOutline + ' 输出语言:' + langDesc + '。请全程使用' + langDesc + '输出。'); - _summaryTaskService.addTaskList(id, summarySourceText, promptToUse, outlineToUse); + _summaryTaskService.addTaskList( + id, summarySourceText, promptToUse, outlineToUse); } } @@ -988,168 +992,4 @@ class MeetingTaskService2 extends GetxService { } catch (_) {} } } - - void aiServiceMessage(int id, String text, [Map? templateData]) { - int awaitQuantity = 0; - String summaryText = ''; - String overviewText = ''; - // 模板参数透传 - final bool tplIsSpeaker = ((templateData?['isSpeaker']) ?? false) as bool; - final String tplLanguage = ((templateData?['language']) ?? '').toString(); - final String tplOutline = ((templateData?['outline']) ?? '').toString(); - final String tplPrompt = ((templateData?['prompt']) ?? '').toString(); - final String tplTargetLang = - ((templateData?['targetLanguage']) ?? '').toString(); - - // 构建系统prompt,如果有模板数据则整合模板prompt - String systemPrompt = - '您将扮演一名会议总结专家,拥有超强的信息归纳与细分能力。不仅能高效处理各类通用场景会议,精准提炼会议核心内容,为后续思维导图生成奠定坚实基础。若涉及人员,人员名称保留[]。'; - if (templateData != null) { - if (tplPrompt.isNotEmpty) { - systemPrompt += ' 特别要求:' + tplPrompt; - } - if (tplOutline.isNotEmpty) { - systemPrompt += ' 大纲:' + tplOutline; - } - // 当目标语言为空(自动识别)时,使用录音语言作为输出语言约束;否则使用目标语言 - final String outCode = - tplTargetLang.isNotEmpty ? tplTargetLang : tplLanguage; - if (outCode.isNotEmpty) { - final String t = outCode.toLowerCase(); - String langDesc = '目标语言'; - if (t.startsWith('zh')) { - langDesc = '中文'; - } else if (t.startsWith('en')) { - langDesc = '英文'; - } else if (t.startsWith('ja')) { - langDesc = '日文'; - } else if (t.startsWith('ko')) { - langDesc = '韩文'; - } else if (t.startsWith('fr')) { - langDesc = '法文'; - } else if (t.startsWith('de')) { - langDesc = '德文'; - } else if (t.startsWith('es')) { - langDesc = '西班牙文'; - } else if (t.startsWith('ru')) { - langDesc = '俄文'; - } else if (t.startsWith('it')) { - langDesc = '意大利文'; - } else if (t.startsWith('pt')) { - langDesc = '葡萄牙文'; - } else if (t.startsWith('hi')) { - langDesc = '印地文'; - } else if (t.startsWith('th')) { - langDesc = '泰文'; - } else if (t.startsWith('vi')) { - langDesc = '越南文'; - } - systemPrompt += ' 输出语言:' + langDesc + '。请全程使用' + langDesc + '输出。'; - } - } - - DeapsoundAIService().sendMessage( - messages: [ - { - 'role': 'system', - 'content': systemPrompt, - }, - {'role': 'user', 'content': text}, - ], - ).then((value) { - awaitQuantity++; - summaryText = value ?? ''; - if (awaitQuantity >= 2) { - _aiServiceValue(id, summaryText, overviewText); - } - }); - // 构建第二个系统prompt,如果有模板数据则整合模板prompt - String systemPrompt2 = '您将扮演一名会议事件归纳专家,能准确抓住会议中事件的关键点,并每个事件只需一句话精简总结。'; - if (templateData != null) { - if (tplPrompt.isNotEmpty) { - systemPrompt2 += ' 特别要求:' + tplPrompt; - } - if (tplOutline.isNotEmpty) { - systemPrompt2 += ' 大纲:' + tplOutline; - } - final String outCode2 = - tplTargetLang.isNotEmpty ? tplTargetLang : tplLanguage; - if (outCode2.isNotEmpty) { - final String t = outCode2.toLowerCase(); - String langDesc = '目标语言'; - if (t.startsWith('zh')) { - langDesc = '中文'; - } else if (t.startsWith('en')) { - langDesc = '英文'; - } else if (t.startsWith('ja')) { - langDesc = '日文'; - } else if (t.startsWith('ko')) { - langDesc = '韩文'; - } else if (t.startsWith('fr')) { - langDesc = '法文'; - } else if (t.startsWith('de')) { - langDesc = '德文'; - } else if (t.startsWith('es')) { - langDesc = '西班牙文'; - } else if (t.startsWith('ru')) { - langDesc = '俄文'; - } else if (t.startsWith('it')) { - langDesc = '意大利文'; - } else if (t.startsWith('pt')) { - langDesc = '葡萄牙文'; - } else if (t.startsWith('hi')) { - langDesc = '印地文'; - } else if (t.startsWith('th')) { - langDesc = '泰文'; - } else if (t.startsWith('vi')) { - langDesc = '越南文'; - } - systemPrompt2 += ' 输出语言:' + langDesc + '。请全程使用' + langDesc + '输出。'; - } - } - - DeapsoundAIService().sendMessage( - messages: [ - { - 'role': 'system', - 'content': systemPrompt2, - }, - {'role': 'user', 'content': text}, - ], - ).then((value) { - awaitQuantity++; - overviewText = value ?? ''; - if (awaitQuantity >= 2) { - _aiServiceValue(id, summaryText, overviewText); - } - }); - } - - void _aiServiceValue(int id, String summaryText, String overviewText) { - SqfliteApi.editMeeting(id, { - 'tasktype': 3, - 'summary': summaryText, - 'overview': overviewText, - }); - if (id == meetingId) { - summary = summaryText; - overview = overviewText; - tasktype.value = 3; - } - try { - final s1 = Get.find(); - if (id == s1.meetingId) { - s1.tasktype.value = 3; - } - } catch (_) {} - Map taskFinishData = taskFinishList.firstWhere( - (element) => element['id'] == id, - orElse: () => {}, - ); - if (taskFinishData.isNotEmpty) { - taskFinishData['tasktype'] = 3; - taskFinishList.refresh(); - } - _storage.write("meeting_task_finish_list_v2", taskFinishList); - } } diff --git a/lib/modules/meeting/controllers/meeting_details_controller.dart b/lib/modules/meeting/controllers/meeting_details_controller.dart index b197a8b86..96996c26c 100644 --- a/lib/modules/meeting/controllers/meeting_details_controller.dart +++ b/lib/modules/meeting/controllers/meeting_details_controller.dart @@ -103,10 +103,10 @@ class MeetingDetailsController extends GetxController _getDataDetails(); _loadJS(); _tasktypeListener = ever(_meetingTaskService.tasktype, (value) { - if (isFast) return; + if (isFast && value != 3) return; meetingDetails.value.tasktype = value; if (_everType <= value) { - if (value == 2) { + if (!isFast && value == 2) { textList.value = _meetingTaskService.textList; } else if (value == 3) { meetingDetails.value.summary = _summaryTaskService.summary;