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:
@@ -97,54 +97,74 @@ class AppModalDialog extends StatelessWidget {
|
||||
),
|
||||
),
|
||||
const SizedBox(height: AppSpacing.lg),
|
||||
Row(
|
||||
children: actions
|
||||
.map((action) {
|
||||
final child = action.primary
|
||||
? FilledButton(
|
||||
onPressed: action.onPressed,
|
||||
style: FilledButton.styleFrom(
|
||||
backgroundColor: action.destructive
|
||||
? colors.error
|
||||
: colors.primary,
|
||||
foregroundColor: action.destructive
|
||||
? colors.onError
|
||||
: colors.onPrimary,
|
||||
minimumSize: const Size.fromHeight(44),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(
|
||||
AppRadius.full,
|
||||
if (actions.length == 1)
|
||||
Center(
|
||||
child: FilledButton(
|
||||
onPressed: actions[0].onPressed,
|
||||
style: FilledButton.styleFrom(
|
||||
backgroundColor: actions[0].destructive
|
||||
? colors.error
|
||||
: colors.primary,
|
||||
foregroundColor: actions[0].destructive
|
||||
? colors.onError
|
||||
: colors.onPrimary,
|
||||
minimumSize: const Size.fromHeight(44),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(AppRadius.full),
|
||||
),
|
||||
),
|
||||
child: Text(actions[0].label),
|
||||
),
|
||||
)
|
||||
else
|
||||
Row(
|
||||
children: actions
|
||||
.map((action) {
|
||||
final child = action.primary
|
||||
? FilledButton(
|
||||
onPressed: action.onPressed,
|
||||
style: FilledButton.styleFrom(
|
||||
backgroundColor: action.destructive
|
||||
? colors.error
|
||||
: colors.primary,
|
||||
foregroundColor: action.destructive
|
||||
? colors.onError
|
||||
: colors.onPrimary,
|
||||
minimumSize: const Size.fromHeight(44),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(
|
||||
AppRadius.full,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
child: Text(action.label),
|
||||
)
|
||||
: OutlinedButton(
|
||||
onPressed: action.onPressed,
|
||||
style: OutlinedButton.styleFrom(
|
||||
foregroundColor: colors.onSurface,
|
||||
side: BorderSide(color: colors.outline),
|
||||
minimumSize: const Size.fromHeight(44),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(
|
||||
AppRadius.full,
|
||||
child: Text(action.label),
|
||||
)
|
||||
: OutlinedButton(
|
||||
onPressed: action.onPressed,
|
||||
style: OutlinedButton.styleFrom(
|
||||
foregroundColor: colors.onSurface,
|
||||
side: BorderSide(color: colors.outline),
|
||||
minimumSize: const Size.fromHeight(44),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(
|
||||
AppRadius.full,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
child: Text(action.label),
|
||||
);
|
||||
child: Text(action.label),
|
||||
);
|
||||
|
||||
return Expanded(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
horizontal: AppSpacing.xs,
|
||||
return Expanded(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
horizontal: AppSpacing.xs,
|
||||
),
|
||||
child: child,
|
||||
),
|
||||
child: child,
|
||||
),
|
||||
);
|
||||
})
|
||||
.toList(growable: false),
|
||||
),
|
||||
);
|
||||
})
|
||||
.toList(growable: false),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user