fix: 修复历史卦象列表无法显示及六爻解卦提示词逻辑错误

后端 Pydantic schema 添加 Hant 繁体字段支持(guaNameHant,
targetGuaNameHant, spiritNameHant, relationNameHant),解决
DerivedDivinationData extra=forbid 拒绝 AI 输出的繁体字段导致
agent_output 解析失败、历史记录为空的问题。

六爻解卦提示词修复:增加静卦五行生克链分析、假破假空降权、
六冲中性判断、用神核对防捏造、空亡数据对照等硬约束。

前端 Dart model 同步添加 Hant 字段(反向兼容,缺省为空字符串)。

其他:硬币翻转动画修复、弹窗单按钮居中、起卦按钮布局调整、
繁体 l10n 清理、pre-commit 排除集成测试。
This commit is contained in:
qzl
2026-04-14 12:37:19 +08:00
parent 97976b20bf
commit 55bac03eb0
14 changed files with 126 additions and 313 deletions
@@ -132,9 +132,11 @@ class DerivedDivinationData {
required this.binaryCode,
required this.changedBinaryCode,
required this.guaName,
this.guaNameHant = '',
required this.upperName,
required this.lowerName,
required this.targetGuaName,
this.targetGuaNameHant = '',
required this.worldPosition,
required this.responsePosition,
required this.hasChangingYao,
@@ -154,9 +156,11 @@ class DerivedDivinationData {
binaryCode: _requiredString(json, 'binaryCode'),
changedBinaryCode: _requiredString(json, 'changedBinaryCode'),
guaName: _requiredString(json, 'guaName'),
guaNameHant: json['guaNameHant'] as String? ?? '',
upperName: _requiredString(json, 'upperName'),
lowerName: _requiredString(json, 'lowerName'),
targetGuaName: _requiredString(json, 'targetGuaName'),
targetGuaNameHant: json['targetGuaNameHant'] as String? ?? '',
worldPosition: _requiredInt(json, 'worldPosition'),
responsePosition: _requiredInt(json, 'responsePosition'),
hasChangingYao: _requiredBool(json, 'hasChangingYao'),
@@ -176,9 +180,11 @@ class DerivedDivinationData {
final String binaryCode;
final String changedBinaryCode;
final String guaName;
final String guaNameHant;
final String upperName;
final String lowerName;
final String targetGuaName;
final String targetGuaNameHant;
final int worldPosition;
final int responsePosition;
final bool hasChangingYao;
@@ -256,7 +262,9 @@ class YaoBackendLine {
const YaoBackendLine({
required this.position,
required this.spiritName,
this.spiritNameHant = '',
required this.relationName,
this.relationNameHant = '',
required this.tiganName,
required this.elementName,
required this.isYang,
@@ -268,7 +276,9 @@ class YaoBackendLine {
return YaoBackendLine(
position: _requiredInt(json, 'position'),
spiritName: _requiredString(json, 'spiritName'),
spiritNameHant: json['spiritNameHant'] as String? ?? '',
relationName: _requiredString(json, 'relationName'),
relationNameHant: json['relationNameHant'] as String? ?? '',
tiganName: _requiredString(json, 'tiganName'),
elementName: _requiredString(json, 'elementName'),
isYang: _requiredBool(json, 'isYang'),
@@ -279,7 +289,9 @@ class YaoBackendLine {
final int position;
final String spiritName;
final String spiritNameHant;
final String relationName;
final String relationNameHant;
final String tiganName;
final String elementName;
final bool isYang;