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(); 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 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("总结任务完成"); } }