fix: IdentifyFans filter排除无fallback番型—防止跨变体越权

核心变更:
- filter从'well-known全放行'改为'只放行_fanConfig或有fallback值的'
- 排除: 断幺九/无字/缺一门/将/平胡/平和(无hardcoded fallback)
- 这些被排除时→allZeroValue→鸡胡兜底→保证非零分

效果: 南昌不再显示'断幺九+无字+平胡'等不存在于南昌规则的番型
测试: _fanConfig补全16个番型, 58 tests pass
This commit is contained in:
xiaoou
2026-07-05 01:09:42 +08:00
parent 84681297c0
commit 70b00d5e6d
2 changed files with 27 additions and 8 deletions

View File

@ -90,7 +90,25 @@ public class DeckTests
public class MeldsSolverTests
{
private readonly MeldsSolver _solver = new(new Dictionary<string, FanConfig>());
private readonly MeldsSolver _solver = new(new Dictionary<string, FanConfig>
{
["清一色"] = new() { BaseFan = 24 },
["混一色"] = new() { BaseFan = 6 },
["字一色"] = new() { BaseFan = 64 },
["对对胡"] = new() { BaseFan = 2 },
["碰碰和"] = new() { BaseFan = 6 },
["暗七对"] = new() { BaseFan = 8 },
["带幺九"] = new() { BaseFan = 2 },
["缺一门"] = new() { BaseFan = 0 },
["平胡"] = new() { BaseFan = 0 },
["断幺九"] = new() { BaseFan = 2 },
["无字"] = new() { BaseFan = 0 },
["全大"] = new() { BaseFan = 12 },
["全中"] = new() { BaseFan = 12 },
["全小"] = new() { BaseFan = 12 },
["全双"] = new() { BaseFan = 24 },
["鸡胡"] = new() { BaseFan = 1 },
});
// === 标准胡牌 ===
[Fact]