fix: fan_stacking验证 + OnEliminate传播 + TurnOrder读DSL

子代理审查(DSL+Core)发现26个问题,本轮修复3个:
1. fan_stacking值验证: 非法值→警告(之前静默以add计算)
2. OnEliminate传播: BuildPhases补映射(PhaseConfig已有属性)
3. TurnOrder读DSL: 之前硬编码counter_clockwise,现读YAML

REVIEW_REPORT.md: 子代理审查完整报告(保留作为参考)
This commit is contained in:
xiaoou
2026-07-04 23:06:12 +08:00
parent 2ef7d57877
commit 712116bca8
3 changed files with 177 additions and 1 deletions

View File

@ -109,6 +109,11 @@ public class CapabilityRegistry
warnings.Add($"pre_hook「{h.Name}」引擎未实现→{h.Description}");
}
// fan_stacking 值验证
var validStackings = new HashSet<string> { "add", "add_max", "max_level" };
if (!validStackings.Contains(rules.FanStacking))
warnings.Add($"fan_stacking={rules.FanStacking} 非法→仅支持 add/add_max/max_level→已按add计算");
// Scoring mode
if (rules.Scoring.Mode != "fan_table")
warnings.Add($"scoring.mode={rules.Scoring.Mode} 引擎仅支持fan_table→忽略");

View File

@ -99,8 +99,9 @@ public class MahjongRoom
Type = p.Type,
Action = p.Action ?? "",
Next = p.Next,
TurnOrder = "counter_clockwise",
TurnOrder = p.TurnOrder ?? "counter_clockwise",
ParallelElimination = p.ParallelElimination,
OnEliminate = p.OnEliminate,
SelfActions = p.SubPhases?.SelfAction?.Options?.Select(o => new ActionOption
{
Action = o.Action, Priority = o.Priority, Condition = o.Condition