Files
xzmaster/docs/PHASE_TASK_BOARD.md
2026-03-20 12:50:41 +08:00

362 lines
9.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# XueZhanMaster 阶段任务看板
本文档把主计划拆成可以直接推进的阶段任务卡。
当前状态快照日期:`2026-03-20`
---
## 1. 使用说明
### 1.1 本文档解决什么问题
- 当前项目整体还有哪些阶段没有完成
- 每个阶段到底要交付什么
- 什么算开始、什么算完成
- 当前应该先推哪个阶段
### 1.2 看板状态定义
- `待做`:已确认进入路线图,但尚未实质启动
- `进行中`:已有代码、文档或设计工作在推进
- `已完成`:阶段目标的最小闭环已经形成
### 1.3 卡片字段说明
每个任务卡尽量包含:
- 编号
- 所属阶段
- 目标
- 核心任务
- 产出物
- 前置依赖
- 验收标准
- 风险提示
---
## 2. 待做
### P2-02 响应窗口与优先级裁决
- 所属阶段:`M2 动作系统扩展`
- 目标:在出牌后正确生成候选响应,并按血战到底规则裁决动作优先级
- 核心任务:
- 设计响应窗口模型
- 识别 `HU / GANG / PENG / PASS` 候选
- 统一裁决优先级
- 处理多人同时可响应的场景
- 产出物:
- 后端优先级裁决逻辑
- WebSocket 私有候选动作消息
- 规则说明文档补充
- 前置依赖:
- `P2-01` 基础动作枚举与统一入口扩展
- 验收标准:
- 对任一弃牌都可给出正确响应候选
- 多人竞争时能按约定优先级决议
- 未行动玩家不会被错误推进回合
- 风险提示:
- 容易绕开统一动作入口
- 容易混淆公共事件与私有候选动作
### P3-01 血战到底规则闭环与结算
- 所属阶段:`M3 规则与结算`
- 目标:完成基础胡牌判定、杠分与局终处理
- 核心任务:
- 胡牌判定
- 基础番型与分数策略
- 杠分处理
- 单局结束条件
- 血战到底继续流程
- 产出物:
- 规则判定服务
- 结算结果模型
- 结算事件与状态落地
- 前置依赖:
- `P2-01`
- `P2-02`
- 验收标准:
- 能从开局走到完整结算
- 胡牌与流转状态一致
- 结算结果可被前端展示
- 风险提示:
- 规则理解偏差会导致后续复盘失真
### P4-02 正式 H5 对局页面
- 所属阶段:`M4 H5 正式对局体验`
- 目标:把当前原型操作台升级为真正可玩的 H5 对局页
- 核心任务:
- 页面拆分为房间页 / 对局页 / 复盘页
- 手牌区、弃牌区、信息区、动作区布局
- 私有教学卡片和展开逻辑
- 弱网下状态提示和重连提示
- 产出物:
- 页面组件结构
- H5 样式方案
- 手工验收记录
- 前置依赖:
- 当前 `App.vue` 原型
- 基础动作消息和教学消息保持稳定
- 验收标准:
- `360px``430px` 宽度可完整操作
- 不依赖开发辅助信息也能完成主流程
- 公共区域与私有教学区域清晰
- 风险提示:
- 页面过度堆信息会造成遮挡和误触
### P5-01 真人邀请与 AI 强度配置
- 所属阶段:`M4 H5 正式对局体验` + `M5 教学系统扩展`
- 目标支持房间邀请、AI 补位强度选择和真实多人协作体验
- 核心任务:
- 房间邀请码或链接
- AI 补位强度选择
- 房主视角的房间管理区
- 未满 4 人时自动补位策略
- 产出物:
- 房间配置接口
- 前端房间配置 UI
- 强度枚举说明
- 前置依赖:
- 房间流稳定
- 验收标准:
- 能邀请真人加入
- 缺人时 AI 自动补位
- 补位 AI 强度对外可配
### P5-02 玩家独立 AI 教学开关
- 所属阶段:`M5 教学系统扩展`
- 目标:允许每位真人玩家独立开关自己的 AI 教学,不影响其他人
- 核心任务:
- 教学开关接口
- 玩家偏好模型
- 私有消息按玩家开关发送
- 前端局内教学开关控件
- 产出物:
- 开关接口
- 前端开关交互
- 教学开关状态同步策略
- 前置依赖:
- 私有教学消息通道稳定
- 验收标准:
- 任一真人关闭教学后,不再收到自己的教学消息
- 其他玩家不受影响
- 开关状态在当前局中持续有效
### P6-01 房间与对局持久化
- 所属阶段:`M6 持久化与稳定性`
- 目标:将关键房间与对局状态从内存态过渡到数据库
- 核心任务:
- `room / room_seat / game_session` 落库
- 状态恢复策略
- 查询接口切换
- 基础迁移脚本
- 产出物:
- 数据表
- Repository / Mapper
- 持久化后的服务层改造
- 前置依赖:
- 房间与对局主干稳定
- 验收标准:
- 服务重启后关键状态可恢复或可追踪
- 房间和对局查询不依赖纯内存态
### P6-02 WebSocket 鉴权与重连恢复
- 所属阶段:`M6 持久化与稳定性`
- 目标:补足实时系统的身份边界和弱网恢复能力
- 核心任务:
- 连接鉴权
- 私有主题与用户绑定
- 前端重连策略
- 重连后状态重拉
- 产出物:
- 鉴权方案
- 前端重连流程
- 异常提示规则
- 前置依赖:
- 基础持久化能力
- 验收标准:
- 私有消息不能被其他玩家订阅
- 弱网重连后可恢复当前视角状态
### P7-01 局后复盘与错题本
- 所属阶段:`M7 复盘与成长闭环`
- 目标:构建“对局结束后还能继续学”的成长系统
- 核心任务:
- 决策日志沉淀
- 局后个人复盘生成
- 关键错误点提取
- 错题本模型
- 产出物:
- 复盘接口
- 复盘页
- 错题本结构
- 前置依赖:
- 规则与结算稳定
- 教学解释链路稳定
- 验收标准:
- 每局结束后可获得个人复盘
- 可沉淀到错题本并二次查看
---
## 3. 进行中
### P2-01 动作系统扩展主干
- 所属阶段:`M2 动作系统扩展`
- 目标:把当前仅支持 `SELECT_LACK_SUIT / DISCARD` 的动作系统扩成麻将主干动作系统
- 当前状态:
- 已有统一动作入口
- 已有 `GameActionProcessor` 骨架
- 已有事件流与私有动作消息通道
- 核心任务:
- 扩展动作枚举
- 定义 `PENG / GANG / HU / PASS` 请求模型
- 统一动作校验
- 动作执行后产生标准事件
- 当前卡点:
- 需要明确响应候选模型与优先级裁决机制
- 产出物:
- 扩展后的动作处理器
- 新动作测试
- 前端动作按钮映射
- 验收标准:
- 所有新增动作仍通过同一入口提交
- 执行后状态与事件同步一致
### P4-01 H5 体验重构设计
- 所属阶段:`M4 H5 正式对局体验`
- 目标:在不打断当前可运行原型的前提下,拆出正式 H5 页面结构
- 当前状态:
- `App.vue` 已覆盖房间流和局内主操作
- WebSocket 已可接公共事件、私有动作、私有教学
- 核心任务:
- 梳理房间页、对局页、复盘页的信息架构
- 定义移动端布局分区
- 明确教学面板和动作面板的层级
- 当前卡点:
- 动作系统仍在扩展,最终动作面板尚未稳定
- 产出物:
- 页面拆分方案
- 状态模型拆分方案
- H5 交互清单
- 验收标准:
- 页面拆分方案可直接指导下一轮前端编码
---
## 4. 已完成
### DOC-01 文档体系升级
- 所属阶段:跨阶段支撑任务
- 目标:把原先偏概述的计划文档升级成“主计划 + 阶段任务 + 周计划 + Issue 模板”体系
- 已完成内容:
- 扩写主计划
- 新增阶段任务看板
- 新增周计划看板
- 新增 Issue 模板看板
- 更新 README 索引
- 验收结果:
- 新对话仅通过阅读文档就能接着推进
### P0-01 项目骨架初始化
- 所属阶段:`M1 房间流与单局主干`
- 目标:建立前后端可运行的最小工程骨架
- 已完成内容:
- Spring Boot 后端初始化
- Vue 3 + Vite 前端初始化
- 基础目录结构建立
- 验收结果:
- 后端可启动
- 前端可启动和构建
### P1-01 房间流闭环
- 所属阶段:`M1 房间流与单局主干`
- 目标:完成建房、入房、准备、开局的基本流程
- 已完成内容:
- 创建房间
- 查询房间
- 加入房间
- 准备 / 取消准备
- 房主开局
- 验收结果:
- 真人房间流已可操作
### P1-02 不满 4 人自动补 AI
- 所属阶段:`M1 房间流与单局主干`
- 目标:开局时自动补齐 AI形成最小对局环境
- 已完成内容:
- 未满 4 人自动补 AI
- AI 强度枚举骨架
- 验收结果:
- 可在真人人数不足时启动单局
### P1-03 对局主干与定缺
- 所属阶段:`M1 房间流与单局主干`
- 目标:建立从开局到定缺再到正式出牌的最小对局阶段流转
- 已完成内容:
- 生成 `GameSession`
- 真人定缺
- 全员定缺后进入 `PLAYING`
- 验收结果:
- 单局进入可出牌状态
### P1-04 统一动作入口初版
- 所属阶段:`M1 房间流与单局主干`
- 目标:避免为不同动作堆散乱接口
- 已完成内容:
- `POST /api/games/{gameId}/actions`
- 当前支持 `SELECT_LACK_SUIT``DISCARD`
- 保留兼容接口
- 验收结果:
- 当前动作已统一进入动作处理链
### P1-05 AI 自动推进与事件骨架
- 所属阶段:`M1 房间流与单局主干`
- 目标:在真人出牌后推动 AI 行动,直到回到真人回合
- 已完成内容:
- 真人出牌
- AI 自动推进回合
- 事件列表与事件类型骨架
- 验收结果:
- 单局能持续推进,不停在第一步
### P1-06 WebSocket 公私消息骨架
- 所属阶段:`M1 房间流与单局主干`
- 目标:建立公共事件和私有消息分离的实时链路
- 已完成内容:
- STOMP 配置
- 公共事件主题
- 私有动作主题
- 私有教学主题
- 验收结果:
- 前端已可订阅三类主题
### P1-07 H5 原型操作台
- 所属阶段:`M1 房间流与单局主干`
- 目标:让移动端先具备完整主流程操作能力
- 已完成内容:
- `App.vue` 支持建房、入房、准备、开局、定缺、出牌
- 已接入 STOMP 订阅
- `vite.config.ts` 已代理 `/api``/ws`
- 验收结果:
- H5 原型页面可走通当前最小链路