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:
xiaoou
2026-07-04 20:16:47 +08:00
parent 55bdfd85a5
commit ed30351ad0
2 changed files with 108 additions and 11 deletions

View File

@ -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)
{