 joywayerandClaude Opus 5
|
c4c061b0e1
|
二七王:修复三处前端漏读(Task 12 一致性测试 Fix Round 1 · 类别 A)
一致性测试发现的 8 处不一致中,分诊出 3 处确属"deskinfo 里有、增量 handler
没读"的前端缺陷,本次修复:
- room.playerScores:reset() 不再清空,改为跨局保留字段;ResultHandler 从
jiesuan 的 aset.seatlist[i].score(协议 §14「累积得分」)回填,避免一局
中段(fapai 后至 jiesuan 前)总积分持续为空。
- call.currcall/call.calls:CallHandler.handleShangzhuang(step1→2 转场)
清回默认值——deskinfo 从 ChooseMain 起就不再带 CallRun,这两个叫分过程量
该阶段起无意义。
- ResultHandler._applyResult(jiesuan/解散共用)补齐结算清场:把 aset.*/
turn.*/call.*/table.*/my.bottomCards/buryCards/cards 清回 reset() 默认值,
与 deskinfo step6 只应用 Balance 分组时的重建结果对齐;顺带清掉出完最后一张
牌的座位因 jiesuan.chupai 不带 cardsinhand 留下的幽灵手牌。
发现 3(curmultiple)、发现 6(seatlist 窗口期)判给服务端,发现 4/5
(table.playproc/pushlist)待裁决,均未改动。test_consistency.js 由 9
PASS/14 FAIL 转为 14 PASS/9 FAIL,EXCLUDE 白名单未改一字。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-27 18:57:54 +08:00 |
|
 joywayerandClaude Opus 5
|
a5ca3bc5d9
|
二七王:重连与开局 handler,路由表注册齐全
重连即重画:断线重连与硬刷新复用同一条路径(填 GameState → emit RESYNC_ALL),
不为重连单写一套渲染。deskinfo 按 step 分组填充,重连不重放 70 分开底那类
一次性事件。StartWar 支持差异化下发,按本座位取自己那份。
路由表 12 条注册齐全,test_dispatcher 的完整性断言随之转绿——
漏接一个包就会红。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-27 18:15:04 +08:00 |
|
 joywayerandClaude Opus 5
|
e8fc3a9bfa
|
二七王:结算与解散 handler
三种结算来源组成不同(正常出牌 / 投降 / 解散),共用一套落地逻辑:
有哪组写哪组,缺的保持 null。
解散走平台的 Game_Modify.Free 入口而非收包分发表——它的 route 是 room,
被平台分流走了。取值路径因此比协议文档少一层,且参数可能为 null
(首局发牌前解散),已覆盖。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-27 18:09:06 +08:00 |
|
 joywayerandClaude Opus 5
|
070ff37db1
|
二七王:明牌、提示、准备 handler
明牌数据进 GameState(面板可反复开关查看);提示不进——它是一次性通知、
不是对局状态,重连也不重放,存下来只会变成幽灵数据,故只随事件带出。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-27 18:04:33 +08:00 |
|
 joywayerandClaude Opus 5
|
5a77e4b132
|
二七王:修正出牌 handler 注释并补强 grade 累加与 nextseat 测试
审查发现简报本身两处缺陷:
1. grade 累加测试断言力不足,无法区分"累加"与"仅在字段存在时赋值"两种
实现——补一条跨包连续收两个 grade 的用例(10 再 15,断言最终 25)钉住
累加语义。
2. chupai3 实际也带 nextseat(服务端在 switch 前统一设置三个包),简报
注释误写成"chupai1/2 独有";修正文件头注释,并给 chupai3 测试用例补
上 nextseat 与对应的 turn.seat 断言,使包结构与真实下发一致。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-27 17:58:42 +08:00 |
|
 joywayerandClaude Opus 5
|
5637d63c3b
|
二七王:出牌 handler
三个包字段不同:chupai1 带牌型信息、chupai1/2 带 nextseat 与 mustcard,
chupai3 带 maxseat 与本轮得分。
两个易错点已覆盖:cardsinhand 只有出牌者自己有,别人出牌时缺该字段不能抹掉
自己的手牌;mustcard 只对当前轮有效,没给就要清空,否则上一轮的建议会残留。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-27 17:51:36 +08:00 |
|
 joywayerandClaude Opus 5
|
daf2708af9
|
二七王:选主与埋牌 handler
选主后主牌集合变化、手牌需重排,但重排是渲染时由 core/CardOrder 现算,
不在状态里落地——GameState 只镜像不派生。
埋牌区分 burycards(埋牌底牌)与 bottomcards(底牌),两批不同的牌;
闲家无 cards/burycards 但可能有 liangpai,缺字段一律不抹已有值。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-27 17:46:01 +08:00 |
|
 joywayerandClaude Opus 5
|
081130b020
|
二七王:发牌与叫分 handler
fapai 是一局起点,先 reset 清上局残留(保留 mySeat 与 options)。
叫分里 0(不叫)与 null(还没叫)严格区分。上庄的 bottomcards/cards 只有庄家有,
缺字段时保持原值、不抹掉闲家已有手牌——GameState 的「缺字段不兜底」在此体现。
新增 GameState._apply 助手:按 {目标键:源键} 映射写入,源键不存在就不写。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-27 17:41:09 +08:00 |
|
 joywayerandClaude Opus 5
|
01eb6c60b5
|
二七王:收包分发器与失败回包处理
分发器只分发不写业务。判定顺序上先看 data.success,失败包一律先分流给
FailHandler——协议规定失败回包的 rpc 与请求同名(chupai 失败回 chupai,
成功走 chupai1/2/3),不先分流则每个业务 handler 都要自己判一遍。
未知 rpc 只警告不抛错,畸形入参不崩。路由表完整性断言留待全部 handler 就位。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-27 17:36:15 +08:00 |
|
 joywayerandClaude Opus 5
|
ff46d874c0
|
二七王:前端语义化发包
route 显式写 erqiwang——RpcHelper.sendGameRpc 预设 route="room",
用它包会被路由到平台房间模块、到不了子游戏 mod.js 且不报错。
只做形状校验(牌 id 范围/去重/张数),规则合法性由服务端裁定;
不合形状即抛错、不发残缺包。测试断言发包字段集合不含任何结论字段。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-27 17:28:11 +08:00 |
|