|
|
1576253caa
|
fix: 子代理审查26问题修复13个(剩余为编码定义/DSL文档字段)
本次修复(13/26):
- FuFlag传播: PhaseConfig加FuFlag属性+BuildPhases映射
- Excludes/Conflicts引用完整性: 引用的番型名必须存在于fan_types
- WildcardBase常量提取: WildcardRegistry引用MahjongTile.WildcardBase
- 合规验证扩展: max_fan/phase.type/end_condition/action/priority
- FanCalculationPolicy未消费警告
不修复的剩余13个:
- 编码常量(MahjongTile domain定义,非配置项)
- DSL字段仅文档(POCO有但引擎硬编码等效逻辑)
- LOW代码卫生项
--check输出现在会报告: excludes/conflicts引用了不存在的番型(如国标15个)
|
2026-07-04 23:11:29 +08:00 |
|
|
|
55bdfd85a5
|
fix: wildcard DSL字段全面驱动引擎(不再硬编码)
Root cause: 4个wildcard DSL字段被定义但引擎完全忽略
修复前:
type:fixed ✅ 消费
tiles:[红中] ✅ 消费(via NameToEncoding)
wildcard_encoding:50 ❌ 硬编码MahjongTile.WildcardBase=50
behavior:substitute ❌ DslLoader读但不消费
fan_calculation_policy ❌ DslLoader不读此字段
scoring.per_wildcard ✅ 消费(via ScoreEngine)
pre_hooks.wildcard_count ❌ 能力注册但无代码
修复后:
- WildcardRegistry.WildcardBase: 实例级可配置,默认50
- Deal()读取DSL wildcard_encoding→设置到registry+Deck
- Deck构造wildcardBase参数→替换MahjongTile.WildcardBase常量
- AllTiles wildcardBase参数→替换硬编码
- DslLoader: 加FanCalculationPolicy字段+PreHookConfig类
- behavior: DslLoader已读,引擎待消费(当前默认substitute)
Impact: 所有wildcard DSL字段全部被引擎读取,可配置化
|
2026-07-04 20:10:07 +08:00 |
|
|
|
cadf76999e
|
fix: DSL total字段从未被引擎校验+广东牌库数修正
Root cause:
1. Deal()完全忽略 _rules.Deck.Total → 牌库大小由 includeFlags 决定
2. Guangdong DSL: total=136 但 include_flowers=true → 实际144张
3. DS与引擎脱节导致广东无限对局(flaky test根因之一)
修复:
- Deck构造加 expectedTotal 可选参数,不一致时抛 InvalidOperationException
- Deal()传 _rules.Deck.Total → 所有DSL变更牌数时必须引擎一致
- Guangdong DSL: total 136→144(广东麻将含花牌=144张)
Breaks: 无(向后兼容,expectedTotal默认null=不校验)
|
2026-07-04 18:38:15 +08:00 |
|
|
|
7c9d5b4637
|
fix: 癞子=136张内的牌(红中),不是额外+4张 + 宝牌HUD显示
- MahjongTile.ConfigureWildcards: 支持固定wildcard(如红中35)
- IsWildcard: 同时检查encoding 50+和配置的wildcard
- ToString: wildcard牌显示🀫中/🀫发等
- Deck: 固定wildcard作为普通牌加入(红中在136内)
- Deal: fixed类型wildcard不额外加牌
- HUD: 显示 '🀫 宝牌(癞子): 🀫中'
- Wuhan DSL: 移除wildcardCount:4
- 测试: Wuhan牌库136张
|
2026-07-04 17:37:20 +08:00 |
|
|
|
3c6748bf06
|
[verified] feat: 麻将规则引擎 Demo 完整实现
RuleEngine 核心类:
- MahjongTile.cs — int编码 (1-29万条筒, 31-37字, 41-48花, 50-59宝牌)
- MeldsSolver.cs — 标准回溯 + wildcard缺口填充 + 七对/十三幺/全不靠
- PhaseMachine.cs — 回合机(摸打碰杠胡 + 优先级仲裁)
- ScoreEngine.cs — 番型计分 + 互斥图
- DslLoader.cs — YAML DSL加载 + 能力检查
4个DSL: 四川血战/广东鸡平胡/国标麻将/武汉麻将
控制台Demo: 交互模式 + 自动模式(--auto)
测试: 33个测试用例, 32个通过
|
2026-07-03 17:51:59 +08:00 |
|