修复前端
MonsterChef 是一个把怪兽点单做菜包装成可玩前端项目,同时把 SDD、Harness 和 AI 质量门 直接纳入研发流程与展示叙事中的实验型作品。
SDD
Harness
AI 质量门
MonsterChef 的目标不是只做一个“能点能玩”的小网页,而是尽量把创意玩法、前端工程组织、质量验证证据三条线同时做实。项目以怪兽厨房为表层主题,以规格驱动、场景回放、自动化质量关卡为底层方法,适合用于课程展示、社区分享、作品集陈述和研发方法实践。
MonsterChef / 怪兽厨房
SDD + Harness + AI Quality Gate
本章节帮助新贡献者和用户快速了解项目架构、模块职责和开发流程。
# 1. 克隆仓库 git clone https://gitlink.org.cn/goodfamily/MonsterChef.git cd MonsterChef # 2. 安装依赖(可选,本项目无外部依赖) npm install # 3. 启动开发服务器 npm start # 4. 打开浏览器访问 # http://127.0.0.1:4173
npm start
npm test
npm run harness
npm run quality
npm run quality:specs
npm run quality:gate
┌─────────────────────────────────────────────────────────────────┐ │ 用户界面层 (UI Layer) │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ 当局厨房 │ │ 记录与徽章 │ │ 研发控制台 │ │ │ │ (Game View) │ │ (Records) │ │ (Dev Console)│ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │ │ │ │ │ │ └──────────────────┴──────────────────┘ │ │ ↓ │ └─────────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────────┐ │ 核心逻辑层 (Core Layer) │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ gameState │ │roundProcessor│ │ scoring │ │ │ │ (状态管理) │ │ (回合推进) │ │ (得分计算) │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ matchRecipe │ │ badges │ │achievement │ │ │ │ (菜谱匹配) │ │ (徽章系统) │ │ (成就系统) │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ └─────────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────────┐ │ 数据层 (Data Layer) │ │ monsters │ recipes │ ingredients │ events │ badges │ etc. │ │ (怪兽) │ (菜谱) │ (食材) │ (事件) │ (徽章) │ │ └─────────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────────┐ │ 验证层 (Verification Layer) │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ Tests │ │ Harness │ │Quality Gate │ │ │ │ (单元测试) │ │ (场景回放) │ │ (AI质量门) │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ └─────────────────────────────────────────────────────────────────┘
src/ui/main.js
src/ui/styles.css
src/core/*.js
src/data/*.js
tests/
harness/
scripts/quality/
src/core/
gameState.js
roundProcessor.js
scoring.js
matchRecipe.js
badges.js
achievementSystem.js
comboSystem.js
src/data/
monsters.js
recipes.js
ingredients.js
events.js
achievements.js
src/ui/
main.js
styles.css
tests/*.test.js
harness/scenarios/*.json
scripts/quality/*.mjs
用户打开页面 ↓ 初始化 gameState (gameState.js) ↓ 生成回合数据(怪兽、订单、事件) ↓ 用户选择食材组合 ↓ 菜谱匹配 (matchRecipe.js) ↓ 计算得分 (scoring.js) ↓ 检查徽章/成就 (badges.js, achievementSystem.js) ↓ 更新状态并展示结算 ↓ 推进到下一回合 (roundProcessor.js) ↓ 循环直到回合结束
代码提交 ↓ SDD 规格检查 (check-sdd.mjs) ↓ 失败则阻断 单元测试 (tests/*.test.js) ↓ 失败则阻断 场景回放 (harness-runner.mjs) ↓ 失败则阻断 AI 质量门 (ai-quality-gate.mjs) ↓ 生成质量报告 (quality-report.md) ↓ 通过/阻断合并
- ESLint (代码规范) - Prettier (代码格式化) - JavaScript (ES6) code snippets - Live Server (可选,替代 npm start)
项目根目录的 .env 文件(可选):
.env
# 开发服务器端口(默认 4173) PORT=4173 # AI 质量门 API 密钥(用于 AI 功能) AI_API_KEY=your_api_key_here
场景:想要添加一个新的怪兽角色
步骤:
src/data/monsters.js
{ id: 'new_monster', name: '新怪兽', avatar: '🦊', // 表情符号 preferences: ['食材1', '食材2'], // 喜欢的食材 dislikes: ['食材3'], // 不喜欢的食材 catchphrase: '口头禅', // 口头禅 difficulty: 'medium' // 难度等级 }
场景:想要添加一个新的菜谱
src/data/recipes.js
{ id: 'new_recipe', name: '新菜谱', ingredients: ['食材A', '食材B', '食材C'], baseScore: 100, // 基础分 tags: ['标签1', '标签2'], // 用于事件加成 difficulty: 'hard' }
场景:想要添加一个新的 Harness 测试场景
harness/scenarios/
{ "name": "新场景名称", "description": "场景描述", "rounds": [ { "monsterId": "monster_1", "order": { "recipeId": "recipe_1" }, "event": null, "playerChoice": ["ingredient_1", "ingredient_2"], "expectedScore": 80 } ] }
harness/reports/latest-report.json
场景:想要调试得分计算逻辑
src/core/scoring.js
// 导入得分计算函数(在开发服务器运行时) import { calculateScore } from './src/core/scoring.js'; // 测试用例 const result = calculateScore({ matchedRecipe: { baseScore: 100 }, event: { multiplier: 1.5 }, combo: 2 }); console.log(result); // 预期输出:300
场景:提交代码前执行完整质量检查
# 执行完整质量流程(串联所有检查) npm run quality # 或者分步执行 npm run quality:specs # 1. SDD 规格检查 npm test # 2. 单元测试 npm run harness # 3. 场景回放 npm run quality:gate # 4. AI 质量门 # 查看质量报告 cat harness/reports/quality-report.md
1. Fork 仓库 ↓ 2. 克隆到本地并创建特性分支 ↓ 3. 进行开发(参考常见用例) ↓ 4. 运行质量检查 (npm run quality) ↓ 5. 提交代码(遵循 commit 规范) ↓ 6. 创建 Pull Request ↓ 7. 等待 CI 检查和代码评审
feat
feat: 添加新怪兽"火焰龙"
fix
fix: 修复菜谱匹配错误
docs
docs: 更新快速入门指南
refactor
refactor: 优化得分计算逻辑
test
test: 添加菜谱匹配边界测试
chore
chore: 更新依赖版本
想要修改…请查看…| 文件/目录 | | :— | :— | | 游戏规则和逻辑 | src/core/ | | 游戏数据(怪兽、菜谱等) | src/data/ | | 用户界面 | src/ui/ | | 测试用例 | tests/ | | 场景剧本 | harness/scenarios/ | | 质量脚本 | scripts/quality/ | | 规格文档 | specs/ | | CI配置 | .github/workflows/ |
specs/
.github/workflows/
MonsterChef 的定位不是纯游戏,也不是传统后台管理页,而是一个“可体验的前端项目样本”。它既要让用户看到怪兽厨房的趣味,也要让团队和外部观察者看到这个项目如何通过规格、回放和质量门被组织起来。
product-sdd
engineering-sdd
当局厨房
记录与徽章
研发控制台
10
6
4
2
9
AI Gate
MonsterChef 尽量避免“先画页面,再慢慢补逻辑”的松散方式,而是优先建立规格,再让实现和验证跟上。
specs/product-sdd.md
specs/engineering-sdd.md
需求想法 | v 产品 SDD --------------------+ | | v v 工程 SDD 验收标准 | | +-----------+-------------+ | v 核心逻辑实现 | v UI 消费
Harness 是这个项目从“好像能玩”走向“可以稳定回放验证”的关键部分。
场景剧本 JSON | v 固定怪兽 / 固定订单 / 固定事件 / 固定选择 | v processRound 逐轮推进 | v 结构化结果输出 | v latest-report.json
critic-recovery.json
perfect-service.json
MonsterChef 当前不是只跑测试,而是把规格、逻辑、回放和摘要整合成一个统一入口。
latest-report.json
quality-report.json
quality-report.md
specs/*.md | +------> check-sdd.mjs ------------------+ | tests/*.test.js ------> node --test ---------+----> quality gate | harness/scenarios/*.json -> harness runner --+ | latest-report.json + SDD --------------------+ | v quality-report.json / quality-report.md
green
159
5
MonsterChef 的质量管控不仅是代码测试,而是建立了一套完整的质量证据链和管控体系,融合 AI 能力实现智能化质量管控,并通过 CI/CD 自动化执行。
┌─────────────────────────────────────────────────────────────┐ │ 质量管控全流程 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 规格层面 SDD 规格检查 │ │ ↓ │ │ 逻辑层面 单元测试验证 │ │ ↓ │ │ 场景层面 Harness 场景回放 │ │ ↓ │ │ AI 层面 AI 质量门评估 │ │ ↓ │ │ 报告层面 统一质量报告生成 │ │ ↓ │ │ CI 层面 CI/CD 自动化执行 │ │ │ └─────────────────────────────────────────────────────────────┘
main
master
workflow_dispatch
Node.js
ES Modules
JavaScript
HTML / CSS
monsterchef/ ├── src/ │ ├── ai/ # AI 建议文案 │ ├── core/ # 状态、评分、规则、回合推进 │ ├── data/ # 怪兽、菜谱、事件、徽章等内容数据 │ └── ui/ # 视图渲染与样式 ├── tests/ # 核心逻辑测试 ├── harness/ # 场景剧本与报告 ├── scripts/quality/ # 规格检查与质量门 ├── specs/ # 产品 / 工程 SDD ├── docs/ # 辅助说明 ├── community/ # 社区运营与反馈文档 ├── server.mjs # 启动入口 └── REMEDE.md # 项目详细说明
┌──────────────────────────────────────────────┐ │ UI Layer │ │ src/ui/main.js + styles.css │ │ 页面切换、状态展示、交互触发、结算弹层 │ └──────────────────────┬───────────────────────┘ │ ┌──────────────────────▼───────────────────────┐ │ Core Layer │ │ gameState / roundProcessor / scoring │ │ matchRecipe / badges │ │ 核心状态、匹配规则、得分和回合推进 │ └──────────────────────┬───────────────────────┘ │ ┌──────────────────────▼───────────────────────┐ │ Data Layer │ │ monsters / recipes / events / badges │ │ 内容配置与可扩展数据源 │ └──────────────────────┬───────────────────────┘ │ ┌──────────────────────▼───────────────────────┐ │ Verification Layer │ │ tests / harness / quality scripts │ │ 逻辑校验、剧本回放、质量摘要 │ └──────────────────────────────────────────────┘
src/core
src/data
src/ui
tests
harness
scripts/quality
这个项目当前按照“开发与管理主线”“质量与 CI 主线”“社区与反馈主线”来分工,避免所有事情都落到同一种产出里。
Xuaya
SDD / Harness
good123
s111
你的部分更靠近“尽力把项目往 Harness 或 SDD 驱动的开发与管理方式构建起来”,因此在文档中定位为以下几个重点:
想法 / 需求 | v Xuaya 梳理规格与推进开发结构 | +--------------------+ | | v v 核心功能实现 Harness 场景补齐 | | +---------+----------+ | v good123 组织质量命令与 AI 摘要 | v 形成版本结果与证据 | v s111 进入社区展示与反馈回收 | v 意见回流到规格 / 场景 / 下一轮迭代
仓库中的 community/launch-plan.md 和 community/feedback-loop.md 说明了项目不是闭门开发,而是希望通过短周期社区运营得到更真实的反馈。
community/launch-plan.md
community/feedback-loop.md
npm install npm start
启动后访问:
http://127.0.0.1:4173
MonsterChef 的价值不只在于题材有趣,而在于它尝试把一个创意型前端项目做成更有方法论支撑的案例:
MonsterChef一个用 SDD+Harness+AI质量门驱动开发和验证一个“怪兽厨房”游戏。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
怪兽厨房 MonsterChef
1. 项目总览
MonsterChef 的目标不是只做一个“能点能玩”的小网页,而是尽量把创意玩法、前端工程组织、质量验证证据三条线同时做实。项目以怪兽厨房为表层主题,以规格驱动、场景回放、自动化质量关卡为底层方法,适合用于课程展示、社区分享、作品集陈述和研发方法实践。
1.1 项目概要表
MonsterChef / 怪兽厨房SDD + Harness + AI Quality Gate1.2 项目核心判断
2. 快速入门与架构说明
本章节帮助新贡献者和用户快速了解项目架构、模块职责和开发流程。
2.1 快速开始(5分钟上手)
2.1.1 环境要求
2.1.2 快速启动步骤
2.1.3 常用命令速查
npm startnpm testnpm run harnessnpm run qualitynpm run quality:specsnpm run quality:gate2.2 系统架构概览
2.2.1 整体架构图
2.2.2 架构分层说明
src/ui/main.js,src/ui/styles.csssrc/core/*.jssrc/data/*.jstests/,harness/,scripts/quality/2.3 模块职责详解
2.3.1 核心模块 (
src/core/)gameState.jsroundProcessor.jsscoring.jsmatchRecipe.jsbadges.jsachievementSystem.jscomboSystem.js2.3.2 数据模块 (
src/data/)monsters.jsrecipes.jsingredients.jsevents.jsbadges.jsachievements.js2.3.3 UI模块 (
src/ui/)main.jsstyles.css2.3.4 验证模块
tests/*.test.jsnpm testharness/scenarios/*.jsonnpm run harnessscripts/quality/*.mjsnpm run quality2.4 执行流程说明
2.4.1 游戏主循环流程
2.4.2 质量检查流程
2.5 开发环境配置
2.5.1 推荐开发工具
2.5.2 VS Code 推荐扩展
2.5.3 环境变量配置
项目根目录的
.env文件(可选):2.6 常见用例示例
2.6.1 用例1:添加新怪兽
场景:想要添加一个新的怪兽角色
步骤:
src/data/monsters.jsnpm testnpm start2.6.2 用例2:添加新菜谱
场景:想要添加一个新的菜谱
步骤:
src/data/recipes.jsnpm run quality2.6.3 用例3:添加新测试场景
场景:想要添加一个新的 Harness 测试场景
步骤:
harness/scenarios/创建新的 JSON 文件npm run harnessharness/reports/latest-report.json2.6.4 用例4:调试核心逻辑
场景:想要调试得分计算逻辑
步骤:
src/core/scoring.js2.6.5 用例5:运行完整质量检查
场景:提交代码前执行完整质量检查
步骤:
2.7 新贡献者指南
2.7.1 贡献流程
2.7.2 代码提交规范
featfeat: 添加新怪兽"火焰龙"fixfix: 修复菜谱匹配错误docsdocs: 更新快速入门指南refactorrefactor: 优化得分计算逻辑testtest: 添加菜谱匹配边界测试chorechore: 更新依赖版本2.7.3 项目目录导航
想要修改…请查看…| 文件/目录 | | :— | :— | | 游戏规则和逻辑 |
src/core/| | 游戏数据(怪兽、菜谱等) |src/data/| | 用户界面 |src/ui/| | 测试用例 |tests/| | 场景剧本 |harness/scenarios/| | 质量脚本 |scripts/quality/| | 规格文档 |specs/| | CI配置 |.github/workflows/|3. 项目定位与目标
MonsterChef 的定位不是纯游戏,也不是传统后台管理页,而是一个“可体验的前端项目样本”。它既要让用户看到怪兽厨房的趣味,也要让团队和外部观察者看到这个项目如何通过规格、回放和质量门被组织起来。
3.1 目标拆解表
3.2 这个项目要解决的问题
product-sdd与engineering-sdd4. 当前版本范围
4.1 已完成能力表
当局厨房、记录与徽章、研发控制台三栏切换4.2 当前版本数据规模
106104294.3 当前版本边界
5. 游戏玩法与体验结构
5.1 单局流程
5.2 玩法设计重点
5.3 三大主视图说明
SDD、Harness、AI Gate三条研发主线6. SDD 驱动的开发方式
MonsterChef 尽量避免“先画页面,再慢慢补逻辑”的松散方式,而是优先建立规格,再让实现和验证跟上。
6.1 规格文档表
specs/product-sdd.mdspecs/engineering-sdd.md6.2 SDD 驱动链路
6.3 SDD 在项目里的实际作用
7. Harness 驱动的验证方式
Harness 是这个项目从“好像能玩”走向“可以稳定回放验证”的关键部分。
7.1 Harness 核心流程图
7.2 当前场景剧本表
critic-recovery.jsonperfect-service.json7.3 Harness 的管理价值
8. AI 质量门与证据链
MonsterChef 当前不是只跑测试,而是把规格、逻辑、回放和摘要整合成一个统一入口。
8.1 质量命令表
npm run quality:specsnpm testnpm run harnesslatest-report.jsonnpm run quality:gatequality-report.json、quality-report.mdnpm run quality8.2 质量关卡架构
8.3 当前质量证据
green2159548.4 质量门的意义
9. 质量管控的实践
MonsterChef 的质量管控不仅是代码测试,而是建立了一套完整的质量证据链和管控体系,融合 AI 能力实现智能化质量管控,并通过 CI/CD 自动化执行。
9.1 质量管控理念
9.2 质量管控体系架构
9.3 CI/CD 融合 AI 的质量管控实践
8.3.1 CI 流水线质量关卡
npm run quality:specsnpm testnpm run harnessnpm run quality:gate8.3.2 CI 自动触发条件
main或master分支自动触发workflow_dispatch手动执行8.3.3 质量报告产物
latest-report.jsonquality-report.jsonquality-report.md9.4 AI 融合的质量管控能力
9.5 质量门禁标准
9.6 质量管控效果
9.7 质量管控实践的价值
10. 技术与代码架构
10.1 技术栈表
Node.jsES ModulesJavaScriptHTML / CSS10.2 目录结构
10.3 逻辑分层图
10.4 模块职责表
src/coresrc/datasrc/uitestsharnessscripts/quality11. 团队分工与推进角色
这个项目当前按照“开发与管理主线”“质量与 CI 主线”“社区与反馈主线”来分工,避免所有事情都落到同一种产出里。
11.1 团队分工表
XuayaSDD / Harness驱动的项目开发与管理good123s11111.2 Xuaya 负责重点
你的部分更靠近“尽力把项目往 Harness 或 SDD 驱动的开发与管理方式构建起来”,因此在文档中定位为以下几个重点:
11.3 good123 负责重点
11.4 s111 负责重点
12. 协作流程与管理方式
12.1 协作流程图
12.2 协作机制表
XuayaXuayagood123s11113. 社区反馈与外部验证
仓库中的
community/launch-plan.md和community/feedback-loop.md说明了项目不是闭门开发,而是希望通过短周期社区运营得到更真实的反馈。13.1 社区反馈关注表
13.2 反馈回流对象
product-sdd、UI 文案、流程提示engineering-sdd、核心逻辑、测试14. 运行与质量命令
14.1 本地启动
启动后访问:
14.2 常用命令表
npm startnpm testnpm run harnessnpm run quality:specsnpm run quality:gatenpm run quality15. 后续迭代方向
15.1 下一阶段重点表
SDD / Harness驱动方式收紧16. 总结
MonsterChef 的价值不只在于题材有趣,而在于它尝试把一个创意型前端项目做成更有方法论支撑的案例:
SDD / Harness驱动的开发与管理方式靠拢。Test AI Review branch
Re-trigger AI review test
New PR test trigger
PR test #2
New AI review test
AI review test v4
Final test for AI review
One more test
Another test push
# Test iteration
## Keep testing
### Final test push
#### Additional test
##### Continuous test
###### Keep pushing
####### More testing
######## Extra test
######### Final push
########## One more
########### Push again
############ Continue
############# Another push
############## Keep going
############### Push again
################ One more
################# Push again
################## Another one
################### Push again
#################### One more