diff --git a/lib/modules/meeting/controllers/meeting_details_controller.dart b/lib/modules/meeting/controllers/meeting_details_controller.dart index 58598f379..310257ef5 100644 --- a/lib/modules/meeting/controllers/meeting_details_controller.dart +++ b/lib/modules/meeting/controllers/meeting_details_controller.dart @@ -240,19 +240,58 @@ class MeetingDetailsController extends GetxController allText = text; } if (allText.isEmpty) return; - await _aiServiceSummary(); + _aiServiceMessage(); } - Future _aiServiceSummary() async { - String summaryText = await DeapsoundAIService().sendMessage( - messages: [ - {'role': 'system', 'content': _systemPrompt}, - {'role': 'user', 'content': allText}, - ], - ); - SqfliteApi.editMeeting(id, {'tasktype': 3, 'summary': summaryText}); + void _aiServiceMessage() { + int awaitQuantity = 0; + int verifyQuantity = 0; + String summaryText = meetingDetails.value.summary; + String overviewText = meetingDetails.value.overview; + if (summaryText.isEmpty) { + verifyQuantity++; + DeapsoundAIService().sendMessage( + messages: [ + {'role': 'system', 'content': _systemPrompt}, + {'role': 'user', 'content': allText}, + ], + ).then((value) { + awaitQuantity++; + summaryText = value; + if (awaitQuantity >= verifyQuantity) { + _aiServiceValue(summaryText, overviewText); + } + }); + } + if (overviewText.isEmpty) { + verifyQuantity++; + DeapsoundAIService().sendMessage( + messages: [ + { + 'role': 'system', + 'content': '您将扮演一名会议事件归纳专家,能准确抓住会议中事件的关键点,并每个事件只需一句话精简总结。', + }, + {'role': 'user', 'content': allText}, + ], + ).then((value) { + awaitQuantity++; + overviewText = value; + if (awaitQuantity >= verifyQuantity) { + _aiServiceValue(summaryText, overviewText); + } + }); + } + } + + void _aiServiceValue(String summaryText, String overviewText) { + SqfliteApi.editMeeting(id, { + 'tasktype': 3, + 'summary': summaryText, + 'overview': overviewText, + }); meetingDetails.value.tasktype = 3; meetingDetails.value.summary = summaryText; + meetingDetails.value.overview = overviewText; meetingDetails.refresh(); } diff --git a/lib/modules/meeting/views/generate_bottom_sheet.dart b/lib/modules/meeting/views/generate_bottom_sheet.dart index 1e2c8568c..81013152a 100644 --- a/lib/modules/meeting/views/generate_bottom_sheet.dart +++ b/lib/modules/meeting/views/generate_bottom_sheet.dart @@ -284,6 +284,7 @@ class _GenerateBottomSheetState extends State { Get.back(); if (widget.isSummarizeAgain) { _controller.meetingDetails.value.tasktype = 2; + _controller.meetingDetails.value.summary = ''; _controller.meetingDetails.refresh(); } _controller.summaryCreate(); diff --git a/lib/modules/meeting/views/meeting_details_view.dart b/lib/modules/meeting/views/meeting_details_view.dart index 1ab644bc3..1217d09d2 100644 --- a/lib/modules/meeting/views/meeting_details_view.dart +++ b/lib/modules/meeting/views/meeting_details_view.dart @@ -259,7 +259,7 @@ class MeetingDetailsView extends GetView { child: Obx( () => Row( children: [ - _iconItem(Icons.summarize, '概述', 0), + _iconItem(Icons.summarize, '概览', 0), _iconItem(Icons.message, '转写', 1), _iconItem(Icons.article, '总结', 2), _iconItem(Icons.lan, '思维导图', 3), @@ -279,7 +279,14 @@ class MeetingDetailsView extends GetView { controller: controller.tabController, physics: const NeverScrollableScrollPhysics(), children: [ - const OverviewTab(), + Obx( + () => controller.isLoading.value + ? const SizedBox() + : controller.meetingDetails.value.tasktype == 1 || + controller.meetingDetails.value.tasktype == 2 + ? _meetingWait('正在分析...') + : const OverviewTab(), + ), Obx( () => controller.meetingDetails.value.tasktype == 1 ? _meetingWait('正在转写...') diff --git a/lib/modules/meeting/views/overview_tab.dart b/lib/modules/meeting/views/overview_tab.dart index 1cfc8a6cc..8210352c7 100644 --- a/lib/modules/meeting/views/overview_tab.dart +++ b/lib/modules/meeting/views/overview_tab.dart @@ -1,4 +1,7 @@ import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../controllers/meeting_details_controller.dart'; class OverviewTab extends StatefulWidget { const OverviewTab({super.key}); @@ -8,13 +11,16 @@ class OverviewTab extends StatefulWidget { } class _OverviewTabState extends State { + final _controller = Get.find(); + @override Widget build(BuildContext context) { return SingleChildScrollView( child: Column( children: [ - Text(''), - Text(''), + Text('概览'), + Text('AI分析识别录音中的关键事件,让你选择重要事件进行AI生成。'), + Text(_controller.meetingDetails.value.overview), ], ), );