feat: 新增追问模式和iOS本地化,重构后端输出模型

This commit is contained in:
qzl
2026-04-29 14:26:15 +08:00
parent f497afbff2
commit 16cb47e75a
39 changed files with 1346 additions and 600 deletions
@@ -1,5 +1,7 @@
import 'divination_params.dart';
enum DivinationRunStatus { success, failed, refused }
class DivinationResultData {
const DivinationResultData({
this.threadId,
@@ -20,6 +22,7 @@ class DivinationResultData {
required this.wuXingStatus,
required this.yaoLines,
required this.targetYaoLines,
this.status = DivinationRunStatus.success,
});
final DivinationParams params;
@@ -40,8 +43,10 @@ class DivinationResultData {
final Map<String, String> wuXingStatus;
final List<YaoLineData> yaoLines;
final List<YaoLineData> targetYaoLines;
final DivinationRunStatus status;
bool get hasChangingYao => binaryCode != changedBinaryCode;
bool get isSuccess => status == DivinationRunStatus.success;
Map<String, dynamic> toJson() {
return <String, dynamic>{
@@ -65,6 +70,7 @@ class DivinationResultData {
'targetYaoLines': targetYaoLines
.map((line) => line.toJson())
.toList(growable: false),
'status': status.name,
};
}
@@ -117,8 +123,21 @@ class DivinationResultData {
return YaoLineData.fromJson(raw);
})
.toList(growable: false),
status: _parseStatus(json['status']),
);
}
static 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,
};
}
}
List<String> _requiredStringList(Map<String, dynamic> json, String key) {