MINESWEEPER 系统设计
原型文档 · 非正式发布返回游戏 ↗
参考源码设计 v0.8.1

验收修复记录 v0.8.2#

2026-09-14。修复 F01–F09、F11 和 Web 构建回归;F10 中补齐在线原型入口、历史榜日期切换、按账号最佳段提交总榜,其余新系统仍待实现。用户明确暂不处理 SQLite 特有问题,未来数据库迁移不在本次范围。

本次在现有后端模型上修复业务链路,未修改数据库 DDL;MySQL/PostgreSQL 等后续选型与迁移需另行设计。

原验收问题修复行为
F01 公开题库泄露私有随机地图、服务器实际推理校验、Worker 预算;旧公开地图活动榜失效,不再当作正式题
F02 未提交/未验证入榜仅发布本次明确同意公开的已验证组合;其余榜保留原合法行;false 拒绝
F03 缺录像仍发榜先重演/编码,再等待 Redis + WAITAOF + 正文核对;成功才写排名;支持 unflag
F04 退出仍可操作WS 每条消息检查当前会话/设备/epoch,敏感 HTTP 提交前复查
F05 有伤结算卡死有伤通关不写无伤 best,仍解锁与释放占用;事务失败可恢复
F06 重启链不一致以原始 server_elapsed_ms 和 game_seq 重建 runner
F07 到期不释放tick 扫描到期榜;到期对局结束并释放,操作/查询也有截止护栏
F08 注册流程不可达游客保留升级入口;未登录可注册;恢复码只在本次页面展示
F09 刷新丢局自动读取本人活动局,恢复棋盘/序号;断线可重连,回执驱动更新
F10 范围缺失本轮仅补首页入口、总榜提交与历史榜查询;私人同步/经验奖励/观看播放器等仍待实现
F11 保存范围/TTL普通通关不写云录像,符合候选且同意公开后才保存;正文与元数据统一固定 public_until

保留期新增 MS_REPLAY_DAYS,默认沿用原方案 30 天,允许 1–30;7 天尚未获得明确最终确认。当前日已生成题的期限不随配置更改,以免复用时续期。修改配置后重启,对新题生效。

前端仍是独立在线原型,不修改个人本机录像及正式单人存档;PVP、直播继续移除。本轮不提升游戏 release 版本,Web 仍使用现有版本资源标识并通过 no-cache 重验证。

完整实现说明和启动配置见 后端 README。另补充成绩提交与幂等回执同事务保存,回执写入失败时不残留待提交记录。

后续功能不能用本轮回归通过替代验收:私人同步、多端离线 XP 合账、每日权益、密码恢复、对局接管、录像观看授权/历史播放、AOF 崩溃恢复与负载测试均须继续逐项交付。

本轮验证记录#

  • 后端 npm test:86 项,80 通过、0 失败、6 跳过;跳过项不算已交付。
  • 真实 Redis npm run test:redis:9/9 通过;使用独立临时 Unix socket、AOF 与 noeviction,不接触用户 Redis。
  • 20 个已注册测试账号并发通关/验证/发布:通过。12 个曾成功发布,最终 Top10 为 10 人且排序正确;仅成功发布者入榜。该规模是并发冒烟,不代表生产容量。
  • 浏览器真实操作:游客入口、升级注册、恢复码展示与关闭、排位开局、插旗、刷新恢复原棋盘/计时、取消旗帜、放弃结算通过。
  • Web 资源构建回归:6/6 通过;只构建 Web,未打包原生应用。

更改已失效公开地图题库的旧原型服务时,当前日可能显示不可用;历史库不会被清空,下一日生成私有题。发布后需要重启后端才能加载服务端修复。