feat: 新增追问模式和iOS本地化,重构后端输出模型
This commit is contained in:
@@ -5,6 +5,7 @@ import '../../../../core/network/api_problem.dart';
|
||||
import '../apis/divination_api.dart';
|
||||
import '../models/divination_backend_models.dart';
|
||||
import '../models/divination_params.dart';
|
||||
import '../models/divination_result.dart';
|
||||
|
||||
class DivinationRunService {
|
||||
const DivinationRunService({required DivinationApi api}) : _api = api;
|
||||
@@ -38,6 +39,7 @@ class DivinationRunService {
|
||||
List<String> advice = const <String>[];
|
||||
List<String> keywords = const <String>[];
|
||||
String answer = '';
|
||||
DivinationRunStatus status = DivinationRunStatus.success;
|
||||
|
||||
await for (final event in _api.streamEvents(
|
||||
threadId: threadId,
|
||||
@@ -68,6 +70,7 @@ class DivinationRunService {
|
||||
advice = _requiredStringList(event, 'advice');
|
||||
keywords = _requiredStringList(event, 'keywords');
|
||||
answer = _requiredString(event, 'answer');
|
||||
status = _parseStatus(event['status']);
|
||||
onTextMessageEnd?.call();
|
||||
continue;
|
||||
}
|
||||
@@ -111,9 +114,22 @@ class DivinationRunService {
|
||||
advice: advice,
|
||||
keywords: keywords,
|
||||
answer: answer,
|
||||
status: status,
|
||||
);
|
||||
}
|
||||
|
||||
DivinationRunStatus _parseStatus(Object? value) {
|
||||
if (value is! String) {
|
||||
return DivinationRunStatus.success;
|
||||
}
|
||||
return switch (value) {
|
||||
'success' => DivinationRunStatus.success,
|
||||
'failed' => DivinationRunStatus.failed,
|
||||
'refused' => DivinationRunStatus.refused,
|
||||
_ => DivinationRunStatus.success,
|
||||
};
|
||||
}
|
||||
|
||||
String _requiredString(Map<String, dynamic> json, String key) {
|
||||
final value = json[key];
|
||||
if (value is! String || value.isEmpty) {
|
||||
|
||||
Reference in New Issue
Block a user