feat: DSL适配率报告+零静默丢弃YAML字段
Root cause: .IgnoreUnmatchedProperties()→15+YAML字段被静默丢弃
修复:
1. 移除IgnoreUnmatchedProperties→未知字段立即报错
2. 补全所有缺失C#属性:GameInfo(engine_type/players),
PhaseDslConfig(turn_order/fu_flag),DrawSubPhase(on_draw_flower/on_empty_deck),
WinConditionConfig(pair_must_be_258 alias),PreHookConfig(condition),
FlowerDslConfig→FlowerScoringConfig→FlowerMatchingConfig完整嵌套
3. FuFlagConfig/PlayersConfig新类
4. CapabilityRegistry.ComputeCoverage→DSL适配率百分比
5. Demo显示:✅ DSL适配率:7/7(100%)
结果:4个DSL全部100%加载,无字段被静默丢弃
This commit is contained in:
@ -37,6 +37,16 @@ MahjongDslRoot rules;
|
||||
try
|
||||
{
|
||||
rules = loader.Load(dslPath);
|
||||
var (r, m, pct) = caps.ComputeCoverage(rules.Requires);
|
||||
string status = pct == 100 ? "✅" : "⚠";
|
||||
Console.WriteLine($"{status} DSL 适配率: {m}/{r} ({pct}%) — {rules.Game.Name}");
|
||||
if (pct < 100)
|
||||
{
|
||||
var missing = rules.Requires.Where(req => !caps.Has(req));
|
||||
foreach (var miss in missing)
|
||||
Console.WriteLine($" ❌ {miss} — 引擎尚未实现,相关规则将被跳过");
|
||||
}
|
||||
Console.WriteLine();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user