二七王:实现 §11 闲家三提示(踩/没分/有分) + 明确副7/副2 成对语义

全面符合性再审查(4 维度独立对抗核对)结论:与计分/发牌/出牌/跟牌/甩牌
相关规则均一致,无缺陷;仅 §11 闲家三提示服务端缺失、副7/副2 异花色
成对语义存疑两项待办。本次按用户裁定落地:

1. §11 三提示(新增 mod.tishi):闲家在出牌阶段(step5)发 踩/没分/有分,
   服务端不校验真实性、只 SendPack 转发给对家(另一闲家 3-banker-seat);
   庄家无对家不参与;非法 tip/非出牌阶段/庄家发均拒。
   协议补 packet_protocol §13.7/13.8;test_rpc +11 例(正反+边界)。
2. 副7/副2 成对语义:裁定"只同花色同点数两副成对"(代码本已如此,无需改),
   在 design §3 补说明闭合该反复出现的存疑(异花色副7 不成对)。

compliance 文档同步:§11 状态转✅、首轮结论摘要加"非当前状态"说明、
计数 259→270。全套 270 项断言全绿(rpc 34→45)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-05 16:39:04 +08:00
co-authored by Claude Opus 4.8
parent 5c9a78029a
commit 9456ab9319
6 changed files with 117 additions and 7 deletions
@@ -45,7 +45,7 @@
- ✅ **§5.4 甩牌(已全部完成)**:副牌绝对禁甩、最大性按对手全部主牌逐分量判定、甩错惩罚、以及 §5.4.4 强制跟牌分量拆解(`flush_follow_ok`:拖拉机→对子→单张优先级)均已实现并用 Node 验证。
- 🟩 **§9 查牌 / §8.2 亮牌(服务端已完成)**:亮牌 `get_liangpai`(庄家埋牌后 28 张按阈值统计)在 `maipai`/重连下发给闲家;报无主的座位统计(`info`/`baozhu`/`PushCards.seatlist`)与亮牌均按查牌位 `cfg.nocheck` 门控(不查牌一律不下发);新增 `mingpai` RPC(可查牌 + 已报无主时查看他家全部主牌)。剩客户端展示(面板/明牌按钮)。
- 🟩 **§4.4 70 分暗牌亮 3 秒(服务端已就绪)**:`shangzhuang` 对 70 分坐庄把 8 张暗牌下发给所有玩家并带 `ancard3s=1`,供客户端在庄家摸暗牌前亮 3 秒;顺带修正了**非 70 分把暗牌泄露给闲家**的问题(现非 70 分暗牌只发庄家,符合 §4"只有庄家可见")。剩下的 3 秒动画由客户端完成。
- 🟧 **§11 闲家 3 提示(踩/没分/有分)**:交互展示,需客户端配合。
- ✅ **§11 闲家 3 提示(踩/没分/有分)**:`mod.tishi` 服务端转发给对家已实现;剩客户端展示。
- 🟧 **客户端建房配置**:`roomtype` 已改为位串(见下表:位0局数/位1扣卡/位2傍王/位3爬坡/位4查牌),需在 erqiwang 客户端建房界面按位勾选拼串;服务端已按该格式读取(`class.config.js`)。
### roomtype 位串约定(服务端已按此读取;解析入口 `class.config.js`)
@@ -66,7 +66,9 @@
## 结论摘要
| 设计章节 | 主题 | 结论 |
> **注**:下表是**首轮核对**的初始发现快照(保留以记录起点)。其中 §4.4、§5.4、§6.3、§7、§8.1-8.4、§9、§10、§11 等标 🟥/🟧/🟨 的项**后续均已修复并验证**——当前逐节状态以本文档后面的分节详情及全套单测(270 项全绿)为准。
| 设计章节 | 主题 | 结论(首轮快照,非当前状态) |
| --- | --- | --- |
| §2 | 牌局构成(92 张、去 3/4) | ✅ 符合 |
| §3 | 主牌顺序(牌编码) | ✅ 符合(副 7/副 2 跨花色成对存疑,见下) |
@@ -271,11 +273,12 @@
---
## §11 牌局交互提示 — 🟨
## §11 牌局交互提示 — 🟩
- ✅ 牌局结束亮底牌:`get_bottom_account` 结算恒带 `bottom.cards`。
- 甩牌相关提示:见 §5.4(甩牌本身实现不符)。
- 🟨 **闲家 3 提示(踩 / 没分 / 有分)无服务端支持**:设计 §11 要求闲家出牌时提供这三种对家提示;服务端未计算 / 下发对应信号(当前仅有 `grade` 等原始信息,需客户端或后续补充)。
- ✅ 选主对子数 / 70 分投降按钮门控:随 `shangzhuang`/`xuanzhu` 阶段包下发(见 §4)。
- ✅ 甩牌相关提示:见 §5.4(甩牌实现已核对一致)。
- ✅ **闲家 3 提示(踩 / 没分 / 有分)**:`mod.tishi`(design §11)——闲家在出牌阶段(step5)发 踩/没分/有分,服务端不校验真实性、只 `SendPack` 转发给对家(另一闲家 `3-banker-seat`);庄家不参与。协议见 packet_protocol §13.7/13.8,测试见 `test_rpc`。
---
@@ -96,7 +96,7 @@
| --- | --- | --- | --- | --- |
| 一局端到端:发牌→叫分坐庄→选主→埋牌→逐轮出牌→末轮扣底→结算→轮庄 | 全链路 | 正:一局可控发牌打到结算,各家总分正确;含连庄/下家轮转 | L2 | ❌ |
> §11 牌局交互提示为纯客户端展示,无服务端可测项。
> §11 牌局交互提示中,选主对子数/亮底牌等随对应阶段包下发;闲家三提示(踩/没分/有分)为服务端转发项(`mod.tishi`,见 P1)。
---
@@ -122,6 +122,7 @@
11. ✅ §8.2 亮牌更多阈值(6个7/固定主9-10边界)、§7 算子每档分界+升3级(`test_arith`)。
12. ✅ §12 端到端(`test_rpc` 真实驱动到出牌就绪)。
13. ✅ §10 直接调 `export.get_asetcount`/`get_needroomcard`/`get_needroomcard_joinroom`(`test_config`)。
14. ✅ **§11 闲家三提示 `mod.tishi`**——正:闲家 step5 发 踩/没分/有分,只转发给对家(`3-banker-seat`,验证 fromid/seat/tip);反:庄家发/非出牌阶段/非法 tip/缺 tip 均拒(`test_rpc` 11 例)。
---
@@ -146,7 +147,7 @@
## 5. 当前状态小结 —— ✅ DoD 达成,P0/P1/P2 全部完成
**共 259 项断言全绿**(`test_arith` 101 / `test_callgrade` 6 / `test_config` 19 / `test_deal` 12 / `test_desk` 6 / `test_follow` 50 / `test_paiju` 31 / `test_rpc` 34)。
**共 270 项断言全绿**(`test_arith` 101 / `test_callgrade` 6 / `test_config` 19 / `test_deal` 12 / `test_desk` 6 / `test_follow` 50 / `test_paiju` 31 / `test_rpc` 45)。
design 全部服务端可验证章节均有正/反/边界单测:
- **§2 构成**:`test_deal` 92张/去3-4/三家28+底8/分值。