Files
CodeLikeDemo/02-用户故事和测试用例说明.md
2026-03-27 18:21:29 +08:00

58 lines
7.1 KiB
Markdown
Raw Permalink 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.

# 📋 第一部分:用户故事 (User Stories)
我们将整个游戏拆解为 4 个史诗任务 (Epics)。
### Epic 1: 桌面交互与核心卡牌系统 (The Board & Cards)
* **US1.1 自由拖拽:** 作为玩家,我希望能用鼠标在桌面上自由拖拽任意卡牌并放置在任何位置,以便我整理我的工作台。
* **US1.2 职业与初始卡组:** 作为玩家我希望在游戏开局时能选择职业如开发、产品以便获得该职业专属的初始手牌如“开发人员”、“PRD文档”和基础资金。
* **US1.3 资源消耗与显示:** 作为玩家,我希望在屏幕顶部清晰看到当前 Sprint 的“剩余时间”和“项目资金”,以便我评估当前的生存压力。
### Epic 2: 堆叠合成与进度条 (Crafting & Processing)
* **US2.1 触发合成:** 作为玩家,我希望当我把一张卡牌(如“开发人员”)拖拽并覆盖到另一张有效卡牌(如“脏代码”)上时,它们会自动吸附并进入“合成中”状态。
* **US2.2 进度条反馈:** 作为玩家,我希望在“合成中”的卡牌组上方看到一个倒计时进度条,以便我知道还需要等多久才能产出结果。
* **US2.3 产出与概率:** 作为玩家,我希望进度条结束后,原有的消耗品卡牌消失,并在原位置弹射出新的产物卡(如“干净的代码”),并且支持概率掉落副产物(如 30% 掉落“Bug”卡
* **US2.4 无效堆叠拒绝:** 作为玩家,我希望当我把两张没有配方关联的卡牌叠在一起时(如“咖啡”叠“咖啡”),它们不会发生任何反应,并在松开鼠标时弹开,防止误操作。
### Epic 3: LLM 动态危机系统 (The AI Director)
* **US3.1 预警卡掩盖延迟:** 作为玩家,我希望在系统即将降临危机时,桌面上会先掉落一张带有 Loading 动画的【⚠️ 甲方正在输入...】卡牌,以便在等待网络请求时给我提供真实的压迫感。
* **US3.2 危机爆发:** 作为玩家,我希望 Loading 结束后,预警卡瞬间翻转为一张带有具体描述和倒计时的【红色危机卡】。
* **US3.3 危机解除:** 作为玩家,我希望能在倒计时结束前,将带有对应 Tag 的卡牌(如带有 `need_test` 标签的“测试员卡”)拖入危机卡的解决槽位中,以消除危机并获得资金奖励。
* **US3.4 危机惩罚:** 作为玩家,我希望如果危机卡倒计时归零我仍未解决,系统会立即执行惩罚(如扣除 50000 资金),若资金低于 0 则触发 Game Over。
### Epic 4: Roguelike 循环与结算 (The Loop)
* **US4.1 Sprint 结算:** 作为玩家,我希望在全局 Sprint 倒计时(如 3 分钟)结束且我存活时,系统暂停桌面,弹出胜利结算画面。
* **US4.2 局外成长 (3选1)** 作为玩家,我希望在结算画面能看到 3 个随机的奖励选项(如新卡牌、永久遗物、删除垃圾卡),我可以选择其一加入下一轮,以获得肉鸽游戏的成长快感。
---
# 🧪 第二部分:核心测试用例 (Test Cases)
这些测试用例主要针对**状态机逻辑**和**异步 API 处理**,这是 VibeCodingAI 写代码)时最容易出 Bug 的地方。
### 模块一:合成状态机 (Crafting State Machine)
| 用例编号 | 测试模块 | 测试标题 | 前置条件 | 操作步骤 | 预期结果 (Expected Result) |
| :--- | :--- | :--- | :--- | :--- | :--- |
| **TC-1.1** | 合成引擎 | **基础配方成功合成** | 桌面上有一张“开发”和“脏代码”,配方需 5 秒。 | 1. 将“开发”拖拽到“脏代码”上并松开。<br>2. 等待 5 秒。 | 1. 两张卡被锁定,出现 5 秒进度条。<br>2. 5秒后两张卡消失原地生成一张“干净的代码”。 |
| **TC-1.2** | 合成引擎 | **合成中途强行打断 (Edge Case)** | “开发”与“脏代码”正在读条合成中(第 2 秒)。 | 1. 玩家用鼠标强行拖走处于底部的“脏代码”卡。 | 1. 进度条立即取消。<br>2. 两张卡恢复独立状态,不产出任何新卡,也不消耗原有卡牌。 |
| **TC-1.3** | 合成引擎 | **多重副产物概率掉落** | 触发“脏代码”+“Vibe助手”配方设定 100%产出模块20%产出Bug。 | 1. 连续触发该配方 10 次并观察产出。 | 每次必定产出“可用模块”,大约有 2 次额外在旁边掉落一张“Bug”卡。 |
### 模块二LLM 危机触发与网络降级 (AI Director & Fallback)
| 用例编号 | 测试模块 | 测试标题 | 前置条件 | 操作步骤 | 预期结果 (Expected Result) |
| :--- | :--- | :--- | :--- | :--- | :--- |
| **TC-2.1** | LLM 系统 | **正常的危机生成链路** | 游戏运行到第 30 秒触发危机心跳检测。网络正常API 延迟为 2 秒。 | 1. 观察桌面变化。<br>2. 等待 2 秒后。 | 1. 第30秒时桌面上生成一张【预警卡】并播放 Loading 动画。<br>2. 第32秒时预警卡瞬间变成【危机卡】显示 LLM 返回的 JSON 描述,倒计时开始。 |
| **TC-2.2** | LLM 系统 | **API 超时兜底机制 (断网测试)** | 拦截或断开本地网络,触发危机心跳检测。设定超时阈值为 5 秒。 | 1. 观察桌面出现【预警卡】。<br>2. 计时等待超过 5 秒。 | 1. 前 5 秒维持 Loading 状态。<br>2. 第 5.1 秒,触发兜底机制,预警卡变为本地 JSON 表中的随机通用危机(如“服务器宕机”),游戏不会崩溃卡死。 |
| **TC-2.3** | LLM 系统 | **危机成功解除逻辑** | 桌面上存在一张危机卡,要求 `need_pm` (需要产品) 标签。 | 1. 拖拽一张无标签的“咖啡”上去。<br>2. 拖拽一张带 `need_pm` 标签的“产品经理”上去。 | 1. 拖拽咖啡无效,弹开。<br>2. 拖拽产品经理后,危机卡被锁定读条 3 秒,随后危机卡消失,顶部资金增加。 |
| **TC-2.4** | LLM 系统 | **危机超时惩罚触发** | 桌面上存在一张“资金扣除”危机卡(倒计时 10 秒,惩罚 50000。 | 1. 玩家不进行任何操作,等待 10 秒倒计时归零。 | 1. 倒计时变为 0危机卡爆裂并消失。<br>2. 顶部面板的【项目资金】瞬间扣除 50000。 |
### 模块三:核心循环与边界判定 (Core Loop Edge Cases)
| 用例编号 | 测试模块 | 测试标题 | 前置条件 | 操作步骤 | 预期结果 (Expected Result) |
| :--- | :--- | :--- | :--- | :--- | :--- |
| **TC-3.1** | 全局状态 | **资金归零触发 Game Over** | 玩家当前资金为 10000。桌面存在一张惩罚为扣除 20000 的危机卡。 | 1. 让该危机卡倒计时归零触发惩罚。 | 1. 资金被扣至 -10000。<br>2. 游戏立即暂停,弹出“项目破产 (Game Over)”结算弹窗,无法继续拖拽卡牌。 |
| **TC-3.2** | 全局状态 | **倒计时结束正常结算** | 当前 Sprint 全局倒计时剩余 3 秒,资金为 5000且桌面有一张正在读条的危机卡。 | 1. 等待 3 秒全局倒计时归零。 | 1. 游戏立即暂停,危机卡倒计时冻结。<br>2. 弹出“Sprint 成功”弹窗,进入 3选1 的 Roguelike 奖励界面。 |