feat: 添加局后复盘服务与页面容器组件
新增复盘服务相关DTO、Controller和Service 实现复盘页面容器组件ReviewPageContainer 更新前端页面架构文档与开发计划 移除DemoGameController中的演示复盘接口 补充复盘服务单元测试
This commit is contained in:
@@ -6,12 +6,23 @@
|
||||
- 过水不胡:玩家在响应窗口里本可 `HU` 但选择 `PASS` 后,直到自己下一次真正摸牌前,不能再做响应胡;不影响碰、杠、自摸胡。
|
||||
- 教学建议链路已扩展为:`recommendedAction`、`explanation`、`candidates`,其中 `candidates` 透传到私有 WebSocket 教学消息,前端已支持展示候选牌、评分和原因标签中文映射。
|
||||
- 前端 H5 对局页已完成正式动作面板、响应动作面板、玩家视角切换、公共事件时间线、最近结算卡片、教学推荐高亮等联调。
|
||||
- 2026-03-20 当日新增一轮前端结构收口:
|
||||
- 2026-03-20 当日新增前端结构收口:
|
||||
- 新增 `docs/H5_GAME_PAGE_ARCHITECTURE.md`,完成 `S1-08` 页面信息架构与拆分方案。
|
||||
- 前端共享类型已抽到 `frontend/src/types/game.ts`。
|
||||
- 复盘类型已抽到 `frontend/src/types/review.ts`。
|
||||
- UI 标签映射与事件/结算格式化函数已抽到 `frontend/src/utils/gameUi.ts`。
|
||||
- 已拆出展示组件:`GameActionDock.vue`、`GameMessageStack.vue`、`PublicEventTimeline.vue`。
|
||||
- `App.vue` 当前定位已经收敛为“页面容器 + 请求/订阅协调层”,便于下一轮继续拆 `RoomPage / GamePage / ReviewPage`。
|
||||
- 顶层页面外壳已拆出:`AppShell.vue`。
|
||||
- 页面级区块组件已拆出:`RoomWorkspace.vue`、`GameWorkspace.vue`。
|
||||
- 房间流组件已拆出:`RoomControlPanel.vue`、`RoomLobbyPanel.vue`。
|
||||
- 对局展示组件已拆出:`GameActionDock.vue`、`GameMessageStack.vue`、`PublicEventTimeline.vue`、`ViewSwitchPanel.vue`、`SelfHandPanel.vue`、`PublicSeatBoard.vue`。
|
||||
- `pages/` 目录已建立,当前入口容器已命名为:`RoomPageContainer.vue`、`GamePageContainer.vue`。
|
||||
- `ReviewPageContainer.vue` 已对齐后端 `ReviewSummaryResponse` 协议,并支持手动加载 demo 复盘数据,但尚未接入真实复盘数据和路由。
|
||||
- 2026-03-20 当日新增最小复盘协议骨架:
|
||||
- 后端新增 `review` 包,包含 `ReviewSummaryResponse`、`ReviewSettlementItem`、`ReviewMistakeItem`、`ReviewTrainingFocusItem`。
|
||||
- 后端新增 `ReviewService`,当前提供演示复盘数据。
|
||||
- 示例接口已开放:`GET /api/demo/review`。
|
||||
- 前端 `App.vue` 已能手动加载这条接口并把数据传入 `ReviewPageContainer`。
|
||||
- `DemoGameServiceTest` 已新增复盘示例测试,当前总测试数为 55。
|
||||
- 2026-03-20 当日还修复了 `GameSessionServiceTest` 中两条“过水不胡”测试的脆弱构造,改为显式控制响应胡候选与后续安全弃牌,避免依赖随机初始牌与中间牌路。
|
||||
- 当前验证状态:`cd backend && mvn test` 通过;`cd frontend && npm run build` 通过。
|
||||
- 注释约定继续有效:后端复杂规则、前端复杂交互、后续数据库脚本和迁移都要补适当偏多的中文注释,尤其说明规则判断、状态切换、消息边界与字段语义。
|
||||
16
.serena/memories/review_service_v1.md
Normal file
16
.serena/memories/review_service_v1.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# 局后复盘服务 V1(2026-03-20)
|
||||
- 已移除 demo 复盘链路:`DemoGameController` 不再暴露 `GET /api/demo/review`,`DemoGameService` 也已移除 demo review 生成逻辑。
|
||||
- 新增真实复盘接口:`GET /api/games/{gameId}/review?userId={userId}`。
|
||||
- `ReviewController` 负责暴露接口,`ReviewService` 负责基于真实 `GameSession` 和 `settlementHistory` 生成 `ReviewSummaryResponse`。
|
||||
- `GameSessionService` 新增只读查询口 `getSessionForReview(String gameId)`,当前仅供复盘服务读取内存态会话;未引入新持久化或快照表。
|
||||
- 当前复盘算法范围(KISS/YAGNI 版本):
|
||||
- 个人总览:读取当前座位最终分数、结果标签、总结文案。
|
||||
- 关键结算:从 `settlementHistory` 中筛出与该座位直接相关的结算,生成标题、摘要、分值和番型/结算标签。
|
||||
- 关键失误:仅基于真实负向结算生成启发式问题项,当前覆盖点炮、自摸失分、抢杠胡、退税、查叫、明杠/杠类被动付分。
|
||||
- 训练方向:基于负向结算类型和是否有正向胡牌样本,生成风险控制、成叫效率、杠牌时机、基础番型等训练建议。
|
||||
- 当前限制:
|
||||
- 仍是内存态复盘,服务重启后对局与复盘数据会丢失。
|
||||
- 还没有逐手牌谱回放、动作级失误定位、个人可见信息回放时间线。
|
||||
- `mistakeInsights` 仍是启发式生成,不是严格牌效/安牌分析。
|
||||
- 前端已改为手动加载当前真实对局/当前视角复盘;切换视角或切换对局时会清空旧复盘,避免显示过期摘要。
|
||||
- 已验证:`cd backend && mvn test` 通过;`cd frontend && npm run build` 通过。
|
||||
Reference in New Issue
Block a user