Browse Source

添加概览

newdev_shunjiawei
tanlongsheng 1 year ago
parent
commit
74b152ba85
  1. 57
      lib/modules/meeting/controllers/meeting_details_controller.dart
  2. 1
      lib/modules/meeting/views/generate_bottom_sheet.dart
  3. 11
      lib/modules/meeting/views/meeting_details_view.dart
  4. 10
      lib/modules/meeting/views/overview_tab.dart

57
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<void> _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();
}

1
lib/modules/meeting/views/generate_bottom_sheet.dart

@ -284,6 +284,7 @@ class _GenerateBottomSheetState extends State<GenerateBottomSheet> {
Get.back();
if (widget.isSummarizeAgain) {
_controller.meetingDetails.value.tasktype = 2;
_controller.meetingDetails.value.summary = '';
_controller.meetingDetails.refresh();
}
_controller.summaryCreate();

11
lib/modules/meeting/views/meeting_details_view.dart

@ -259,7 +259,7 @@ class MeetingDetailsView extends GetView<MeetingDetailsController> {
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<MeetingDetailsController> {
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('正在转写...')

10
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<OverviewTab> {
final _controller = Get.find<MeetingDetailsController>();
@override
Widget build(BuildContext context) {
return SingleChildScrollView(
child: Column(
children: [
Text(''),
Text(''),
Text('概览'),
Text('AI分析识别录音中的关键事件,让你选择重要事件进行AI生成。'),
Text(_controller.meetingDetails.value.overview),
],
),
);

Loading…
Cancel
Save