feat(教学): 扩展教学建议链路以支持候选牌列表

扩展教学建议链路,在 PrivateTeachingMessage 中增加 candidates 字段,支持前端展示候选牌、评分和原因标签。同时优化前端组件结构,抽离共享类型和工具函数,为后续页面拆分做准备。

- 后端:在 GameSessionService 和 GameMessagePublisher 中透传候选牌列表
- 前端:新增 GameMessageStack 组件展示教学候选,优化手牌区推荐牌高亮
- 测试:补充 GameMessagePublisherTest 验证候选牌消息结构
- 文档:更新 DEVELOPMENT_PLAN 和 H5_GAME_PAGE_ARCHITECTURE 说明当前前端结构
This commit is contained in:
hujun
2026-03-20 15:54:05 +08:00
parent 6bcdf26fca
commit 905565e7c4
17 changed files with 1325 additions and 433 deletions

View File

@@ -2,15 +2,16 @@
- 已从工程占位分切换到“最小可扩展正式版”计分骨架。
- 当前已支持的规则主线包括:七对、对对胡、金钩钓、清一色、根、抢杠胡、杠上花、杠上炮、海底捞月、海底炮、明杠/补杠/暗杠、退税、查叫、一炮多响、最小正式版过水不胡。
- 当前胡牌计分口径:`paymentScore = 1 << totalFan`
- 一炮多响:只对 `HU` 开放多赢家同窗裁决,`PENG/GANG` 仍单赢家。
- 一炮多响:只对 `HU` 开放多赢家同窗裁决,`PENG / GANG` 仍单赢家。
- 过水不胡:玩家在响应窗口里本可 `HU` 但选择 `PASS` 后,直到自己下一次真正摸牌前,不能再做响应胡;不影响碰、杠、自摸胡。
- 后端最小验证:`cd backend && mvn test` 通过,当前 53 个测试通过
- 前端 H5 对局页已完成两轮联调
- 已区分“当前回合动作”和“响应动作”两种动作面板。
- `DISCARD` 继续通过点击手牌执行,`GANG/HU` 等额外动作走统一面板
- 响应动作面板会展示 `sourceSeatNo``triggerTile``triggerEventType``windowId`
- 已支持在对局页切换玩家视角,并自动刷新对应 `GameStateResponse` 与重连该玩家私有 WebSocket 主题
- 公共事件接收已改为统一入口处理,会在 `RESPONSE_WINDOW_CLOSED``TURN_SWITCHED``TILE_DISCARDED``GAME_PHASE_CHANGED` 等场景下清理已失效的私有动作面板,避免旧窗口残留
- 公共事件时间线已支持中文摘要文案、时间展示和原始载荷折叠查看,便于联调时同时看“业务含义”和“真实 payload”
- 注释约定继续有效:后端复杂规则、前端复杂交互和后续数据库脚本都要补适当偏多的中文注释
- 前端验证:`cd frontend && npm run build` 通过。
- 教学建议链路已扩展为:`recommendedAction``explanation``candidates`,其中 `candidates` 透传到私有 WebSocket 教学消息,前端已支持展示候选牌、评分和原因标签中文映射
- 前端 H5 对局页已完成正式动作面板、响应动作面板、玩家视角切换、公共事件时间线、最近结算卡片、教学推荐高亮等联调
- 2026-03-20 当日新增一轮前端结构收口:
- 新增 `docs/H5_GAME_PAGE_ARCHITECTURE.md`,完成 `S1-08` 页面信息架构与拆分方案
- 前端共享类型已抽到 `frontend/src/types/game.ts`
- UI 标签映射与事件/结算格式化函数已抽到 `frontend/src/utils/gameUi.ts`
- 已拆出展示组件:`GameActionDock.vue``GameMessageStack.vue``PublicEventTimeline.vue`
- `App.vue` 当前定位已经收敛为“页面容器 + 请求/订阅协调层”,便于下一轮继续拆 `RoomPage / GamePage / ReviewPage`
- 2026-03-20 当日还修复了 `GameSessionServiceTest` 中两条“过水不胡”测试的脆弱构造,改为显式控制响应胡候选与后续安全弃牌,避免依赖随机初始牌与中间牌路
- 当前验证状态:`cd backend && mvn test` 通过;`cd frontend && npm run build` 通过。
- 注释约定继续有效:后端复杂规则、前端复杂交互、后续数据库脚本和迁移都要补适当偏多的中文注释,尤其说明规则判断、状态切换、消息边界与字段语义。