5 changed files with 148 additions and 76 deletions
@ -0,0 +1,132 @@ |
|||
import 'package:get/get.dart'; |
|||
import 'package:get_storage/get_storage.dart'; |
|||
|
|||
import '../../../core/utils/logger.dart'; |
|||
import '../db/sqflite_api.dart'; |
|||
import '../deapsound_ai_service.dart'; |
|||
import 'meeting_task_service.dart'; |
|||
|
|||
class SummaryTaskService extends GetxService { |
|||
final _taskService = Get.find<MeetingTaskService>(); |
|||
|
|||
final GetStorage _storage = GetStorage(); |
|||
|
|||
List _taskList = []; |
|||
|
|||
bool _isTask = false; |
|||
|
|||
String summary = ''; //AI总结内容 |
|||
String overview = ''; //AI概览内容 |
|||
|
|||
@override |
|||
void onInit() { |
|||
super.onInit(); |
|||
_getTaskList(); |
|||
} |
|||
|
|||
void cancelTask() { |
|||
_taskList.clear(); |
|||
_storage.remove("summary_task_list"); |
|||
} |
|||
|
|||
void _getTaskList() { |
|||
_taskList = _storage.read("summary_task_list") ?? []; |
|||
_executeTask(); |
|||
} |
|||
|
|||
Future<void> addTaskList( |
|||
int id, String text, String prompt, String outline) async { |
|||
Logger.debug("添加总结任务列表"); |
|||
_taskList.add({ |
|||
'id': id, |
|||
'text': text, |
|||
'prompt': prompt, |
|||
'outline': outline, |
|||
}); |
|||
_storage.write("summary_task_list", _taskList); |
|||
_executeTask(); |
|||
} |
|||
|
|||
void _executeTask() async { |
|||
if (_taskList.isEmpty) return; |
|||
if (_isTask) return; |
|||
_isTask = true; |
|||
var task = _taskList.first; |
|||
_aiServiceMessage( |
|||
task['id'], |
|||
task['text'], |
|||
task['prompt'], |
|||
task['outline'], |
|||
); |
|||
Logger.debug("执行总结任务列表"); |
|||
} |
|||
|
|||
void removeTask(int id) { |
|||
_taskList.removeWhere((element) => element['id'] == id); |
|||
_storage.write("summary_task_list", _taskList); |
|||
} |
|||
|
|||
void _aiServiceMessage(int id, String text, String prompt, String outline) { |
|||
int awaitQuantity = 0; |
|||
String summaryText = ''; |
|||
String overviewText = ''; |
|||
DeapsoundAIService().sendMessage( |
|||
messages: [ |
|||
{ |
|||
'role': 'system', |
|||
'content': prompt, |
|||
}, |
|||
{'role': 'user', 'content': text}, |
|||
], |
|||
).then((value) { |
|||
awaitQuantity++; |
|||
summaryText = value; |
|||
if (awaitQuantity >= 2) { |
|||
_aiServiceValue(id, summaryText, overviewText); |
|||
} |
|||
}); |
|||
DeapsoundAIService().sendMessage( |
|||
messages: [ |
|||
{ |
|||
'role': 'system', |
|||
'content': outline, |
|||
}, |
|||
{'role': 'user', 'content': text}, |
|||
], |
|||
).then((value) { |
|||
awaitQuantity++; |
|||
overviewText = value; |
|||
if (awaitQuantity >= 2) { |
|||
_aiServiceValue(id, summaryText, overviewText); |
|||
} |
|||
}); |
|||
} |
|||
|
|||
void _aiServiceValue(int id, String summaryText, String overviewText) { |
|||
if (!_taskList.any((item) => item['id'] == id)) return; |
|||
SqfliteApi.editMeeting(id, { |
|||
'tasktype': 3, |
|||
'summary': summaryText, |
|||
'overview': overviewText, |
|||
}); |
|||
if (id == _taskService.meetingId) { |
|||
summary = summaryText; |
|||
overview = overviewText; |
|||
_taskService.tasktype.value = 3; |
|||
} |
|||
Map taskFinishData = _taskService.taskFinishList.firstWhere( |
|||
(element) => element['id'] == id, |
|||
orElse: () => {}, |
|||
); |
|||
if (taskFinishData.isNotEmpty) { |
|||
taskFinishData['tasktype'] = 3; |
|||
_taskService.taskFinishList.refresh(); |
|||
} |
|||
_storage.write("meeting_task_finish_list", _taskService.taskFinishList); |
|||
_taskList.removeWhere((element) => element['id'] == id); |
|||
_storage.write("summary_task_list", _taskList); |
|||
_isTask = false; |
|||
_executeTask(); |
|||
Logger.debug("总结任务完成"); |
|||
} |
|||
} |
|||
Loading…
Reference in new issue