Files
aibis-dream/Docs/HuoShan/Test_Huoshan_flowchart.md
2026-04-14 16:11:10 +08:00

317 lines
11 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.
# Test_Huoshan Yarn 完整流程图(Debug 用)
> 基于 `Test_Huoshan.yarnproject` 及所有 `.yarn` 文件生成
## 0. Yarn Graph 布局说明
节点已按逻辑分组,position 与 tags 便于在 Yarn Editor 中浏览:
| 区域 | X 范围 | 内容 |
|------|--------|------|
| 核心枢纽 | 300 | Start → VarsInit → Center(竖直) |
| Stage1 | 100 | 诊室开场(左列) |
| Stage2 主流程 | 150-450 | 检查表达→滤波器→情绪(中) |
| Stage2 分支 | 50-650 | 检查记忆/逻辑/视觉(插线入口上方) |
| 插线桥接 | 50-650, y=600 | Emo/Speak/Logic/Color/Memory/EyePlugIn |
| Stage3 销售 | 100-350 | 步进→转动完成→安装日志→旋钮(左中) |
| 销售桥接 | 550 | 销售模块转动完成、处理器单次调节失败 |
| Stage4-8 | 500 | 各 Stage 入口与结束(右列竖直) |
| 波形工具 | 700 | 波形_* 节点(最右) |
**colorID 含义:** 1=入口, 2=Stage, 3=主流程/Expression, 4=变量, 5=销售, 6=波形, 7=桥接, 8=通用
## 1. 主流程总览
```mermaid
flowchart TB
subgraph entry ["入口"]
Start --> VarsInit
VarsInit --> Center
end
subgraph center ["Center 调度 (按 $gameStage)"]
Center -->|1| Stage1
Center -->|2| Stage2
Center -->|3| Stage3
Center -->|4| Stage4
Center -->|5| Stage5
Center -->|6| Stage6
Center -->|7| Stage7
Center -->|8| Stage8
Center -->|100| 测试
Center -->|999| NextYarn
end
subgraph stage_flow ["Stage 流转"]
Stage1 --> S1_end["gameStage=2"]
Stage2 --> S2_end["gameStage=3"]
Stage3 --> S3_end["gameStage=4"]
Stage4 --> S4_end["gameStage=5"]
Stage5 --> S5_end["gameStage=6"]
Stage6 --> S6_end["gameStage=7"]
Stage7 --> S7_end["gameStage=8"]
Stage8 --> S8_end["gameStage=999"]
S1_end --> Center
S2_end --> Center
S3_end --> Center
S4_end --> Center
S5_end --> Center
S6_end --> Center
S7_end --> Center
S8_end --> Center
end
```
---
## 2. 变量初始化 (VarsInit)
| 变量 | 说明 |
|------|------|
| `$gameStage` | 当前流程阶段 (1-8, 100=测试, 999=结束) |
| `$TaskToDo` | 待完成任务数 |
| `$emoChecked` / `$memoryChecked` / `$logicChecked` / `$eyeChecked` / `$speakerChecked` / `$colorChecked` / `$expressionChecked` | 各模块首次检查标记 |
| `$emoDeepChecked` / `$expressionSentenceGet` / `$hasTimestamp` | 深入检查标记 |
| `$currentSocket` / `$PlugCount` / `$PlugAll` | 插线相关 |
| `$salesTurnIndex` | 销售模块转动轮次 (1-based) |
| `$knobFailCount` | 旋钮调节失败次数 |
---
## 3. Stage 1 - 诊室开场
```mermaid
flowchart LR
Stage1 --> 开头对话
开头对话 -->|"set $gameStage=2"| Center
```
- 内容:火山说笑话、发热 → 去诊室
---
## 4. Stage 2 - 后脑检查(插线)
```mermaid
flowchart TB
Stage2["Stage2 入口"]
Stage2 --> Task["Task: 检查表达模块"]
Task --> 检查表达
subgraph 表达流程
检查表达 -->|"gameStage==2"| 表达完成["完成Task\nModuleHightLight Speak→color\nTask: 检查滤波器"]
表达完成 --> 检查销售模块
end
检查销售模块 -->|"gameStage==2"| 滤波器完成["波形分析\n发现锯齿波\nTask: 检查情绪模块"]
滤波器完成 --> 检查情绪
subgraph 情绪与波形
检查情绪 --> 条件{"speakerChecked &&\ncolorChecked"}
条件 -->|是| 查询情绪波形["对比预测波形与真实情绪\n发现对不上"]
条件 -->|否| 结束
查询情绪波形 --> 结束Stage2["结束Stage2\ngameStage=3"]
end
检查表达 -.->|其他插线| 检查记忆
检查表达 -.->|其他插线| 检查逻辑
检查表达 -.->|其他插线| 检查视觉
检查表达 -.->|其他插线| 检查情绪
```
**Stage2 插线入口(EventNode):**
| 插线节点 | jump 目标 |
|----------|-----------|
| EmoPlugIn | 检查情绪 |
| SpeakPlugIn | 检查表达 |
| LogicPlugIn | 检查逻辑 |
| SalePlugIn | 检查销售模块 |
| MemoryPlugIn | 检查记忆 |
| EyePlugIn | 检查视觉 |
**关键顺序(gameStage==2):** 表达 → 滤波器 → 情绪(情绪需 speaker+color 都检查过才会对比波形 → 结束Stage2)
---
## 5. Stage 3 - 滤波器深入(步进 + 销售模块)
```mermaid
flowchart TB
Stage3["Stage3 入口\nTask: 检查滤波器处理链路"]
Stage3 --> 步进查看模式
subgraph 步进流程["步进流程(Yarn 仅显示情绪输入,其余由转动监听驱动)"]
步进查看模式 --> 步进_情绪输入["步进_情绪输入\n显示原始情绪波形\n转动发条来检测吧"]
步进_情绪输入 -->|"等待 SalesManager\n转动完成事件"| 销售模块转动完成
end
subgraph EventNode_销售["销售模块转动完成(EventNode 仅桥接,分发到 Stage3"]
销售模块转动完成["销售模块转动完成"]
销售模块转动完成 -->|salesTurnIndex==1| 语义合成["销售转动_语义合成"]
销售模块转动完成 -->|salesTurnIndex==2| 语言审查["销售转动_语言审查"]
销售模块转动完成 -->|salesTurnIndex==3| 异常检测["销售转动_异常检测"]
end
subgraph 安装日志与旋钮["调取安装日志 → 解锁旋钮 → 监听旋钮"]
异常检测 --> 查询异常进程["查询异常进程\n情绪修改器组件"]
查询异常进程 --> 查看安装日志["查看安装日志\n3年无复查"]
查看安装日志 -->|"unlock_knob\n节点结束,等待旋钮"| 等待旋钮["KnobController 监听"]
等待旋钮 -->|"用户转动超阈值"| 处理器单次调节失败
end
subgraph EventNode_旋钮["旋钮失败时 KnobController 跳入(EventNode 仅桥接)"]
处理器单次调节失败["处理器单次调节失败\n<<jump 旋钮调节失败>>"]
处理器单次调节失败 --> 旋钮调节失败
end
subgraph 旋钮调节失败_Stage3["旋钮调节失败 (Stage3)"]
旋钮调节失败["旋钮调节失败"]
旋钮调节失败 -->|knobFailCount==1| 重试["再试一次\nreset_knob"]
旋钮调节失败 -->|knobFailCount>=2| 最终失败["lock_knob + 叙事\njump 结束Stage3"]
end
```
**Stage3 关键流程:**
1. 步进_情绪输入 结束 → 对话暂停,等待玩家转动发条
2. **转1**:销售模块转动完成 → 语义合成完成
3. **转2**:销售模块转动完成 → 语言审查通过
4. **转3**:销售模块转动完成 → 检测异常 → 进入处理器 → lock_knob → 查询异常进程 → 查看安装日志 → unlock_knob → 等待旋钮
5. 旋钮失败 → 处理器单次调节失败(1次重试)→ 处理器功率调节失败 → 结束Stage3
---
## 6. Stage 4 - 表达模块 RAM
```mermaid
flowchart TB
Stage4["Stage4 入口\nTask: 检查表达模块"]
Stage4 --> 检查表达
检查表达 -->|"gameStage==4"| RAM发现["发现未释放log\nRAM溢出"]
RAM发现 --> 结束Stage4["结束Stage4\ngameStage=5"]
```
---
## 7. Stage 5 - 诊室对话
```mermaid
flowchart TB
Stage5["Stage5 入口"]
Stage5 --> 诊室对话["诊室对话\n火山承认+达成共识"]
诊室对话 --> 结束Stage5["结束Stage5\ngameStage=6"]
```
---
## 8. Stage 6 - 释放 RAM
```mermaid
flowchart TB
Stage6["Stage6 入口\nTask: 释放表达模块RAM"]
Stage6 --> 检查表达
检查表达 -->|"gameStage==6"| 释放log["释放log\n自动释放 log1/2/3"]
释放log --> 手动释放["遇到被干扰log\n进入手动释放"]
手动释放 --> 手动释放log["手动释放log\nswitch Expression"]
手动释放log --> LOG1["LOG1: 哈哈|嘿嘿|呵呵 → 我很害怕"]
LOG1 --> LOG1梳理完成
LOG1梳理完成 --> LOG2["LOG2: ... → 她都是为了我"]
LOG2 --> LOG2梳理完成
LOG2梳理完成 --> LOG3["LOG3: ... → 我不想再继续逃了"]
LOG3 --> LOG疏通全部完成
LOG疏通全部完成 --> 结束Stage6["结束Stage6\ngameStage=7"]
```
---
## 9. Stage 7 - 最终检查
```mermaid
flowchart TB
Stage7["Stage7 入口\nTaskToDo=2"]
Stage7 --> Task1["Task: 检查表达模块"]
Stage7 --> Task2["Task: 检查滤波器"]
检查表达 -->|"gameStage==7"| 表达OK["完成Task\nTaskToDo--"]
检查销售模块 -->|"gameStage==7"| 滤波器OK["完成Task\nTaskToDo--"]
表达OK --> 判断1{"TaskToDo==0?"}
滤波器OK --> 判断1
判断1 -->|是| 结束Stage7["结束Stage7\ngameStage=8"]
判断1 -->|否| 继续["继续等待另一项完成"]
```
---
## 10. Stage 8 - 结束对话
```mermaid
flowchart TB
Stage8["Stage8 入口"]
Stage8 --> 结束对话["结束对话\n火山说出真话"]
结束对话 -->|"gameStage=999"| Center
```
---
## 11. EventNode 与波形节点
```mermaid
flowchart TB
subgraph 插线入口
EmoPlugIn
SpeakPlugIn
LogicPlugIn
SalePlugIn
MemoryPlugIn
EyePlugIn
end
subgraph 销售相关
销售模块转动完成
处理器单次调节失败
处理器功率调节失败
end
subgraph 波形
波形_显示并连接
波形_显示情绪
波形_显示滤波器输出
波形_隐藏
end
```
---
## 12. Debug 检查清单
| 现象 | 可能原因 | 检查点 |
|------|----------|--------|
| 流程卡住 | `$gameStage` 未正确更新 | Center 各 Stage 分支 |
| Stage2 不推进 | 表达/滤波器/情绪未按顺序完成 | 检查表达→滤波器→情绪,以及 speakerChecked+colorChecked |
| Stage3 步进不走 | 未从滤波器进入步进;或 SalesManager 未触发转动完成 | 检查销售模块 gameStage==3 的「进入步进查看模式」;检查 totalTurns≥3、crankCompleteNode |
| 销售模块无反馈 | SalesManager/KnobController 未跳转 | EventNode: 销售模块转动完成、处理器单次调节失败 |
| Stage4 无法进 | 需从 Stage3 结束 或 处理器功率调节失败 | 结束Stage3 与 处理器功率调节失败 都 `<<jump 结束Stage3>>` |
| Stage6 手动释放卡住 | Expression 模块/start_expression | start_expression 完成节点 |
| Stage7 TaskToDo 不清零 | 表达/滤波器 有一项未完成 | 两项都需 `complete_task``TaskToDo--` |
| 测试模式 | gameStage=100 | 测试 节点直接进入 Sales+EmotionWave |
---
## 13. 文件与节点索引
| 文件 | 节点 |
|------|------|
| Center.yarn | Start, VarsInit, Center, 测试 |
| EventNode.yarn | EmoPlugIn, SpeakPlugIn, LogicPlugIn, SalePlugIn, MemoryPlugIn, EyePlugIn, 销售模块转动完成, 处理器单次调节失败(桥接), 波形_* |
| Stage1.yarn | Stage1, 开头对话 |
| Stage2.yarn | Stage2, 检查表达, 检查销售模块, 检查情绪, 检查记忆, 检查逻辑, 检查视觉, 结束Stage2 |
| Stage3.yarn | Stage3, 步进查看模式, 步进_情绪输入, 销售转动_语义合成/语言审查/异常检测, 查询异常进程, 查看安装日志, 旋钮调节失败, 结束Stage3 |
| Stage4.yarn | Stage4, 结束Stage4 |
| Stage5.yarn | Stage5, 结束Stage5 |
| Stage6.yarn | Stage6, 手动释放log, LOG1/2/3梳理完成, LOG疏通全部完成, 结束Stage6 |
| Stage7.yarn | Stage7, 结束Stage7 |
| Stage8.yarn | Stage8, 结束对话 |