TOB-

npx -y @mermaid-js/mermaid-cli -i diagram.mmd -o docs/animation-architecture.svg# TOB- — To-B 企业级产品培训与仿真平台

包含两大子系统:SkillQuest(游戏化培训)+ Omni-Sim(数字孪生仿真)


在线演示(GitHub Pages)

地址 说明
https://wlqtjl.github.io/TOB-/ SkillQuest 展示页(showcase.html)自动部署
https://wlqtjl.github.io/TOB-/skillquest/brochure.html 介绍手册页

每次向 main 分支推送时,GitHub Actions 自动将 showcase 与截图部署到
GitHub Pages 远程分支(即本仓库的 github-pages 环境,地址如上)。
工作流文件:.github/workflows/deploy-pages.yml


子项目

子项目 说明 详细文档
SkillQuest 游戏化产品技能培训平台(Next.js 15 + NestJS + AI) SkillQuest README
Omni-Sim 企业级 IT 基础设施数字孪生仿真平台(Rust ECS + Unity + TypeScript) Omni-Sim README

页面截图

👉 查看 SkillQuest 全部 26 页截图

首页 数据引力场 课程管理
首页 数据引力场 课程管理
闯关地图 排行榜 关卡知识普及
闯关地图 排行榜 关卡知识普及
关卡答题 专家复盘 产品介绍
关卡答题 专家复盘 产品介绍

技术架构概览

SkillQuest 技术栈

层级 技术 用途
前端框架 Next.js 15 (App Router) SSR + 路由
游戏引擎 Canvas 2D + 自研粒子引擎 8 种关卡渲染 + Combo 连击
动画系统 Framer Motion + Canvas 2D + SVG + Web Audio 35+ 动画组件 · 19 种状态动画映射
物理引擎 万有引力(F=GMm/r²) + 碰撞检测 + 粒子物理 数据引力场 · 布朗运动 · 波动方程
UI 设计 Tailwind CSS + Lucide React 极简毛玻璃设计系统
后端框架 NestJS 10 REST API + WebSocket
数据库 PostgreSQL 16 + Prisma ORM 业务数据 + 向量存储
缓存/排行 Redis 7 Sorted Set 排行榜
AI 引擎 FastAPI + GPT-4o + MinerU 2.5 RAG 检索 + 题目生成
构建工具 Turborepo + pnpm Monorepo 管理

Omni-Sim 技术栈

层级 技术 用途
核心引擎 Rust (hecs ECS) 仿真状态机 + 确定性哈希
编译目标 Wasm (wasm32-unknown-unknown) 跨平台部署
数据格式 OPDL 编译器 厂商设备描述语言
三维展示 Unity 6 LTS GPU Instancing 渲染
Web 控制台 TypeScript + Vite 实时 Telemetry 面板
部署 Docker Compose + Nginx WebSocket + 静态文件

🎨 动画与视觉效果核心架构

SkillQuest 拥有 35+ 个动画/视觉组件,横跨 5 大渲染技术栈,构成完整的沉浸式游戏化培训体验。

动画引擎分层架构图

下图为预渲染 SVG,始终可见(GitHub 客户端 Mermaid 在节点数较多时会卡在 “Loading”,故改用静态图)。若修改了本节下方的 Mermaid 源码,需同步重新生成 docs/animation-architecture.svg

动画引擎分层架构图

📜 查看 Mermaid 源码(便于后续编辑 / 本地渲染) ```mermaid graph TB subgraph "🎮 用户交互层" A1["🖱️ 鼠标/触控事件"] A2["⌨️ 键盘输入"] A3["📱 手势识别"] end subgraph "🏗️ 游戏引擎层 — packages/game-engine" B1["📋 animation-catalog.ts
19 种状态→动画映射
节点离线/恢复/过载/数据迁移..."] B2["⚙️ physics-engine.ts
粒子物理 · 热力图 · 呼吸动画
震动衰减 · X光模式"] B3["🌌 core-physics-engine.ts
牛顿万有引力 F=GMm/r²
多普勒色偏 · 碰撞检测 · 反亲和力"] B4["🔫 gravity-gun-controller.ts
引力锚 · 力场护盾
透镜 · 奇点脉冲"] B5["🔧 tool-system.ts
6 种语义工具
Probe/Cutter/Booster/Linker/Migrator/Freezer"] B6["🌉 tool-visual-bridge.ts
工具→动画桥接
19 种动画效果映射"] B7["🗺️ visual-scene.ts
VisualScene 协议
通用渲染抽象层"] B8["🔄 world-state.ts
WorldState 沙箱
纯函数状态转换"] end subgraph "🎨 Canvas 2D 渲染层 — components/game" C1["🎬 UniversalGameRenderer
通用 Canvas 渲染器
网格 · 实体 · 连线 · 粒子"] C2["✨ ParticleSystem
对象池粒子引擎
500流动+200爆发 · Bézier路径
轨迹拖尾 · 形状(圆/方/菱)"] C3["📐 EntityRenderer
圆形/圆角矩形 · 辉光
图标渲染 · 星级显示"] C4["🔗 ConnectionRenderer
Bézier 曲线 · 箭头
虚线动画 · 高亮"] C5["💥 FeedbackEffects
答对: 绿色闪屏+粒子爆发
答错: 15Hz震动+红色闪屏
通关: 五点烟花+金色涟漪"] C6["🔁 useParticleLoop
RAF 动画循环
DPI缩放 · dt上限50ms"] end subgraph "🌟 Framer Motion 动画层 — components/game" D1["🏆 VictoryEffects
Canvas烟花 + Web Audio和弦
C5-E5-G5琶音 · 星星弹入
12色粒子 · 重力模拟"] D2["⚠️ StoryIntroPage
危机警报三阶段动画
打字机日志 · 红色脉冲边框
倒计时紧张感"] D3["⚡ SprintMode
5分钟冲刺倒计时
题目滑入/滑出 · 连击徽章
星级旋转弹入"] D4["📊 LeaderboardToast
弹簧弹入通知
damping:20 stiffness:300
自动消失 · 排名变动"] D5["🤖 AIHintPanel
苏格拉底导师面板
打字指示器 · 提示渐入
鼓励/引导切换"] D6["🗺️ ZBSFlowViz
五场景叙事动画
数据分块 · 节点故障震动
副本策略 · 读路径选择"] D7["🎮 ScenarioGameRenderer
选择卡片动画
进度条填充 · 后果揭示"] D8["📊 StandardFlowGenerator
通用数据流模板
参数化场景动画"] end subgraph "📈 SVG 可视化层" E1["📉 SLACurve
二次Bézier平滑曲线
渐变填充 · 网格参考线
红/黄/绿阈值着色"] E2["⏱️ ExpertComparisonTimeline
双轨垂直时间线
偏离分支 · 辉光节点"] E3["🔘 TimelineNode
状态辉光圆
correct/warning/error
震动动画(error)"] end subgraph "🔬 物理仿真沙箱层 — components/sandbox" F1["🌊 WaveEngine
正弦波渲染
双波源干涉 · 阈值警报"] F2["⚛️ ParticleSystem (sandbox)
布朗运动 · 弹性碰撞
温度缩放 · 压力边界"] F3["🧲 VectorField
三种力场(引力/电场/流场)
箭头网格 · 相位动画"] F4["🔌 LogicGate
6种逻辑门(AND/OR/NOT...)
SVG路径动画 · 信号着色"] end subgraph "🌍 数据引力可视化 — app/data-gravity" G1["🌌 DataGravity 交互页
Canvas 2D 物理沙箱
3个存储节点 · 多普勒色偏
引力常数G可调 · 能量监控"] G2["📖 DataGravity 故事模式
五场景叙事引导
ZBSFlowViz 交互学习"] end A1 --> C1 A2 --> D3 A3 --> G1 B1 --> B6 B5 --> B6 B6 --> C5 B7 --> C1 B8 --> B1 B3 --> G1 B4 --> G1 B2 --> C1 C1 --> C2 C1 --> C3 C1 --> C4 C1 --> C5 C6 --> C1 C6 --> G1 D1 --> C2 D6 --> D8 style B1 fill:#1e293b,stroke:#60a5fa,color:#fff style B3 fill:#1e293b,stroke:#a78bfa,color:#fff style C2 fill:#064e3b,stroke:#34d399,color:#fff style D1 fill:#7c2d12,stroke:#fb923c,color:#fff style D2 fill:#7f1d1d,stroke:#f87171,color:#fff style G1 fill:#312e81,stroke:#818cf8,color:#fff ``` 重新生成命令: ```bash # 从 README 第 ### 动画引擎分层架构图 下方提取 mermaid 源 → diagram.mmd npx -y @mermaid-js/mermaid-cli -i diagram.mmd -o docs/animation-architecture.svg ```

动画技术栈分布

渲染技术 组件数 核心能力 代表组件
Canvas 2D 18 高性能粒子系统、物理仿真、实体渲染、连线动画 UniversalGameRenderer, ParticleSystem, DataGravity
Framer Motion 10 UI 过渡动画、弹簧物理、手势响应、布局动画 VictoryEffects, StoryIntroPage, SprintMode, ZBSFlowViz
SVG 4 矢量曲线、时间线节点、逻辑门电路 SLACurve, ExpertComparisonTimeline, LogicGate
Web Audio API 1 合成音频反馈(胜利和弦 C5-E5-G5) VictoryEffects
CSS/Tailwind 全局 毛玻璃效果、渐变、脉冲、发光阴影 GameHUD, LeaderboardToast

完整动画组件清单(35+ 文件)

📂 展开查看全部动画组件 #### 🏗️ 游戏引擎核心(packages/game-engine/src/) | 文件 | 动画类型 | 关键技术 | |------|---------|---------| | `animation-catalog.ts` | 19 种状态→动画映射 | 触发器模式匹配、优先级排序、通配符支持 | | `physics-engine.ts` | 粒子物理、热力图、呼吸动画 | 颜色插值 `loadToColor()`、0.5Hz/2Hz 脉冲、震动衰减 | | `data-gravity/core-physics-engine.ts` | 万有引力 F=GMm/r² | 多普勒色偏、碰撞检测(CoR=0.8)、反亲和力、摩擦阻尼 | | `data-gravity/gravity-gun-controller.ts` | 4 种交互工具 | 引力锚(mass=5000)、力场护盾、透镜(120px)、奇点脉冲(50000) | | `data-gravity/node-manager.ts` | 节点状态管理 | 存储节点/数据粒子/锚点/护盾生命周期 | | `data-gravity/energy-monitor.ts` | 能量追踪 | 动能/势能/熵增实时计算 | | `tool-system.ts` | 6 种语义工具 | Probe/Cutter/Booster/Linker/Migrator/Freezer | | `tool-visual-bridge.ts` | 工具→动画桥接 | 19 种效果映射到 Canvas 渲染 | | `visual-scene.ts` | VisualScene 协议 | 实体/连线/粒子/交互规则抽象 | | `world-state.ts` | 状态沙箱 | 纯函数状态转换 + PRNG(Mulberry32) | #### 🎨 Canvas 2D 渲染器(apps/web/src/components/game/) | 文件 | 动画类型 | 关键技术 | |------|---------|---------| | `UniversalGameRenderer.tsx` | 通用 Canvas 渲染器 | 50px 网格、DPI 缩放、RAF 循环、dt 上限 50ms | | `ParticleSystem.ts` | 对象池粒子引擎 | 500 流动 + 200 爆发粒子、Bézier 路径跟随、轨迹拖尾 | | `EntityRenderer.ts` | 实体渲染 | 圆形/圆角矩形、辉光 shadowBlur(2.5×)、图标+标签 | | `ConnectionRenderer.ts` | 连线渲染 | Bézier 曲线、箭头旋转、虚线 `[6,4]`、高亮 #22c55e | | `FeedbackEffects.ts` | 答题反馈 | 正确:绿闪(0.15α)+爆发、错误:15Hz震动+红闪、通关:5点烟花+金涟漪 | | `InteractionManager.ts` | 交互管理 | 点击/连线/拖拽/序列/输入 5 种模式 | | `InsightPanel.tsx` | 打字机动画 | 逐字显示(30ms/字) | | `GameHUD.tsx` | 毛玻璃 HUD | Combo 阶梯(Good/Great/Amazing/Legendary) + 火焰动画 | #### 🌟 Framer Motion 组件(apps/web/src/components/game/) | 文件 | 动画类型 | 关键技术 | |------|---------|---------| | `VictoryEffects.tsx` | 三重感官反馈 | Canvas 烟花(12色/60粒子/重力0.05)、Web Audio 和弦(C5-E5-G5)、Framer 弹入 | | `StoryIntroPage.tsx` | 危机叙事入场 | 三阶段(警告→日志→简报)、打字机(400ms/行)、红色脉冲边框(2s循环) | | `SprintMode.tsx` | 冲刺倒计时 | 数字缩放(2→1)、题目滑动(±50px)、进度条变色(绿→黄→红) | | `LeaderboardToast.tsx` | 排名通知弹窗 | 弹簧(damping:20, stiffness:300)、popLayout 重排、自动消失 | | `AIHintPanel.tsx` | AI 导师面板 | 面板弹入(scale:0.95→1)、打字指示器(bounce)、提示渐入 | | `ZBSFlowViz.tsx` | 五场景叙事 | 数据分块动画、节点故障震动(0.4s×2)、副本策略滑块、读路径交互 | | `ScenarioGameRenderer.tsx` | 情景选择 | 选择卡片变色(emerald/red)、后果揭示缩放 | | `StandardFlowGenerator.tsx` | 通用数据流 | DataFlowTemplate 参数化、场景切换动画 | | `LevelIntroModal.tsx` | 关卡入场 | 模态弹入 + 叙事文本动画 | | `NarrativeModal.tsx` | 叙事对话 | 消息逐条显示、频道切换 | #### 📈 SVG 可视化(apps/web/src/components/game/) | 文件 | 动画类型 | 关键技术 | |------|---------|---------| | `SLACurve.tsx` | SLA 曲线 | 二次 Bézier `Q cpx py x y`、渐变填充(0.15→0.02)、红/黄/绿阈值 | | `ExpertComparisonTimeline.tsx` | 双轨时间线 | SVG 垂直布局、GitBranch 偏离标注、等级徽章(A/S/B/C/D) | | `TimelineNode.tsx` | 时间线节点 | 辉光圆(shadow 12-16px)、状态着色(emerald/amber/red)、error 震动 | #### 🔬 物理仿真沙箱(apps/web/src/components/sandbox/) | 文件 | 动画类型 | 关键技术 | |------|---------|---------| | `WaveEngine.tsx` | 正弦波渲染 | `y = A·sin(x·f·0.02 + t·s)`、双波源干涉、阈值警报(红背景) | | `ParticleSystem.tsx` | 布朗运动 | 随机速度(±1.5×speedFactor)、弹性碰撞、温度缩放 √(T/300) | | `VectorField.tsx` | 矢量力场 | 3 种场(引力/电场/流场)、箭头网格、相位动画 | | `LogicGate.tsx` | 逻辑门电路 | 6 种门(AND/OR/NOT/XOR/NAND/BUFFER)、pathLength 0→1 动画 | | `SimulationCanvas.tsx` | 引擎路由 | wave/particle/vector_field/logic_gate 四引擎分发 | | `ParameterPanel.tsx` | 参数控制 | 实时滑块调节物理参数 | | `FormulaDisplay.tsx` | 公式渲染 | KaTeX 数学公式实时更新 | #### 🌍 数据引力页面(apps/web/src/app/data-gravity/) | 文件 | 动画类型 | 关键技术 | |------|---------|---------| | `page.tsx` (data-gravity) | 2D 物理沙箱 | 3 存储节点、多普勒色偏、引力常数 G 可调(默认400)、摩擦 0.98 | | `story/page.tsx` | 故事模式 | ZBSFlowViz 五场景叙事引导 |

19 种动画效果目录(animation-catalog.ts)

状态触发器                    → 动画效果组合
──────────────────────────────────────────────
节点离线 (offline)            → fade_out + spark
节点重启 (rebooting)          → pulse + progress_bar
节点恢复 (recovered)          → fade_in + burst + ripple
节点降级 (degraded)           → blink
节点过载 (overloaded)         → heat_map + pulse
节点维护 (maintenance)        → blink
链路分区 (link-partitioned)   → connection_break + spark
链路降级 (link-degraded)      → blink
链路恢复 (link-recovered)     → merge + ripple
数据再平衡 (data-rebalance)   → flow_redirect + trail
数据丢失 (data-loss)          → data_scatter + shake
数据迁移 (data-migration)     → trail + progress_bar
选举共识 (consensus-election) → ripple + highlight
灾难爆炸 (disaster-explosion) → explosion + shake + countdown
级联故障 (disaster-cascading)  → spark + fade_out

快速开始

SkillQuest(最快体验 — 仅前端)

cd SkillQuest
npm install -g pnpm@9.1.0
pnpm install
pnpm --filter @skillquest/web dev
# → 打开 http://localhost:3000 即可闯关(内置 Mock 数据,无需后端)

Omni-Sim

cd omni-sim
cargo test --workspace       # 运行全部测试
./build/build_wasm.sh        # 编译 Wasm → Unity

详细说明请参阅各子项目 README。


完整 PR 变更记录(#1 — #22)

以下是本仓库从创建至今全部已合并 PR 的完整记录,按时间顺序排列。

Phase 0:Omni-Sim 基础建设(PR #1 — #4)

PR 日期 标题 关键变更
#1 2026-04-09 Extract 游戏攻关2.0.tar.gz into repository 解压 omni-sim/ 项目:Rust workspace(5 个 crate: core/ffi/headless/opdl/telemetry)、Unity 集成脚本、CI 工作流、厂商 Pack、42 个新文件
#2 2026-04-09 fix: production-readiness defects (C-01–C-04, H-01–H-07, M/L tier) 修复 20 个生产级缺陷:状态哈希确定性(C-01)、FFI 内存安全(C-02)、OPDL 编译器三阶段流水线(C-03)、Telemetry WebSocket 推送(C-04)、运行时稳定性(H-01–H-07)
#3 2026-04-09 Add comprehensive test coverage across all crates (46 → 139 tests) 测试覆盖从 46 增至 139:补全 omni-sim-ffi 和 omni-sim-headless 的零测试缺口、覆盖 validator 全部 12 种错误变体
#4 2026-04-10 feat: add –serve mode for live WebSocket telemetry deployment 新增 --serve 模式:Rust ECS 仿真 → WebSocket 遥测 → TypeScript Web Console 仪表板全链路部署;Docker Compose 支持

Phase 1:SkillQuest 安全与渲染引擎(PR #5 — #8)

PR 日期 标题 关键变更
#5 2026-04-11 fix(security): upgrade next 14.2.35 → 15.x to patch HTTP request deserialization DoS 修复 Next.js HTTP 请求反序列化 DoS 漏洞(CVE 影响 ≥13.0.0, <15.0.8);升级到 Next.js 15 稳定版
#6 2026-04-11 feat: VisualScene protocol — universal Canvas rendering engine 统一 Canvas 2D 渲染引擎替代逐类型 SVG 渲染;VisualScene 协议支持 8 种关卡类型的通用渲染管线
#7 2026-04-11 Resolving architectural gaps in game engine’s visual layer 修复游戏引擎可视化层架构缺口
#8 2026-04-11 Fix 9 architectural defects in game engine visual layer 修复 9 个架构缺陷:ScoreResult.stars 类型安全、内存泄漏、硬编码假设等

Phase 2:AI 出题 + 流程仿真(PR #9 — #11)

PR 日期 标题 关键变更
#9 2026-04-11 feat: document upload → GPT-4o AI course generation pipeline 激活文档上传 → AI 课程生成流水线:PDF/DOCX/TXT 上传 → MinerU 智能解析 → GPT-4o 自动生成 7 种题型关卡
#10 2026-04-12 feat: FLOW_SIM level type — doc-to-playable-game pipeline (3-phase) 新增 FLOW_SIM 关卡类型:将不可见的系统内部流程(如 ZBS 分布式块存储元数据管理)转化为可视化交互游戏关卡
#11 2026-04-12 Fix TS lint errors and migrate web from deprecated next lint to ESLint CLI 修复 API 8 个 TypeScript 编译错误;迁移 Web 从废弃的 next lint 到 ESLint CLI

Phase 3:展示与品牌设计(PR #12 — #14)

PR 日期 标题 关键变更
#12 2026-04-12 Add standalone HTML showcase with animations and synthesized audio 创建独立 HTML 展示页(showcase.html):动画 + 合成音频,可离线打开,无需运行开发服务器
#13 2026-04-12 Add PDF brochure for sharing SkillQuest showcase with SmartX leadership 创建 PDF 手册(SkillQuest-介绍手册.pdf):供微信/钉钉分享给 SmartX 管理层,避免 HTML 附件被邮件过滤
#14 2026-04-12 Minimalist UI redesign: Lucide icons, single-accent color system, frosted glass 全站 UI 重构:从 emoji 多渐变风格 → 极简/科技冷感设计(对标 Linear.app + Apple);Lucide 图标、单色调、毛玻璃效果

Phase 4:AI 校验 + 游戏引擎深度功能(PR #15 — #19)

PR 日期 标题 关键变更
#15 2026-04-12 RAG question engine, multi-agent validation, WorldState sandbox, universal animation catalog RAG 管道(chunker→embedder→retriever)、生成器-求解器双代理校验、WorldState 沙箱(纯函数)、19 种通用动画映射、数据库审核字段(reviewStatus/feedbackLog)
#16 2026-04-12 RAG BM25 fallback, configurable Solver model, deterministic executeActionPure, path-based detectChanges BM25 文本检索备用方案(替代零向量降级)、Agent B 模型可配置、executeActionPure 支持确定性 PRNG(Mulberry32 种子)、detectChanges 路径索引优化(O(n²)→O(1))
#17 2026-04-12 feat: Expert Comparison Timeline — vertical dual-track deviation map 专家对比复盘视图:垂直双轨时间线、SLA 下降曲线、玩家路径 vs 专家最优路径对比、偏离点标注
#18 2026-04-12 feat: ToolSystem, PhysicsEngine, ToolVisualBridge — hardcore simulation interaction 硬核仿真交互系统:6 种语义工具(Probe/Cutter/Booster/Linker/Migrator/Freezer)、粒子物理引擎、工具→动画桥接、ZBS 副本救援场景
#19 2026-04-12 feat: Data Gravity 2D physics interaction system 数据引力物理系统:CorePhysicsEngine(F=GMm/r²)、NodeManager(质量=100×容量×带宽)、GravityGunController(4 种工具)、EnergyMonitor(动能/势能/熵增);98 个测试

Phase 5:知识普及 + 前端补全 + 截图修复(PR #20 — #22)

PR 日期 标题 关键变更
#20 2026-04-13 feat: add pre-game level briefing system (关卡前知识普及) 关卡前知识普及模态框(LevelBriefingModal):知识点展开、通关目标、小贴士;修复 levelId 格式不匹配(URL 用 ‘1’,数据用 ‘l1’)
#21 2026-04-13 feat: add DataGravity physics visualization page 7 大功能模块完整性验证(43+ 文件);268 个游戏引擎测试通过;DataGravity Canvas 2D 可视化前端页面(/data-gravity);首页导航 + Showcase 更新为「七大核心能力」;遗漏模式分析
#22 2026-04-13 fix: 修复截图不可点击问题 — 第一性原理根治 根因:user-attachments/assets/ URL 重定向到 5 分钟过期 S3 签名 URL;修复:截图存入 docs/screenshots/ 永久资产 + [![alt](path)](path) 可点击语法;更新 README 缩略图网格

Phase 6:持续部署(PR #23 — )

PR 日期 标题 关键变更
当前 2026-04-14 feat: GitHub Pages 自动部署(回答”远程分支在哪里”) 新增 .github/workflows/deploy-pages.yml:每次推送到 main 分支自动将 showcase + docs/screenshots 部署到 GitHub Pageshttps://wlqtjl.github.io/TOB-/),这就是”远程分支”的公开访问地址

功能模块完整清单

SkillQuest — 7 大功能模块 + 沉浸式冒险系统

模块 核心文件 PR 测试数
硬核仿真交互系统 tool-system.ts, physics-engine.ts, tool-visual-bridge.ts, zbs-replica-rescue.ts #18 69
数据引力物理系统 data-gravity/core-physics-engine.ts, node-manager.ts, gravity-gun-controller.ts, energy-monitor.ts, vec2.ts #19 #21 98
AI 出题校验 + RAG 管道 rag/chunker.py, embedder.py, bm25.py, retriever.py, question-validator.service.ts #9 #15 #16 49 (Python)
数据库审核/反馈字段 schema.prisma (Level.reviewStatus, DocumentChunk, QuestionValidationLog, IncidentReport) #15
Canvas 动画通用化 animation-catalog.ts (19 种动画), world-state.ts, world-state-visual-bridge.ts #6 #15 79
关卡前知识普及 LevelBriefingModal.tsx, briefing-data.ts #20
专家对比复盘 ExpertComparisonTimeline.tsx, SLACurve.tsx, TimelineNode.tsx, replay/page.tsx #17
🆕 沉浸式冒险系统 StoryIntroPage.tsx, VictoryEffects.tsx, SprintMode.tsx, LeaderboardToast.tsx, AIHintPanel.tsx 当前 PR

SkillQuest — 8 种关卡类型

类型 说明 首次引入
拓扑连线 (topology) 拖拽构建网络拓扑图 初始版本
知识配对 (matching) 组件功能一对一匹配 初始版本
步骤排序 (ordering) 操作流程正确排序 初始版本
选择题 (quiz) 知识点快速测验 初始版本
命令行 (terminal) 真实 CLI 命令模拟 初始版本
故障排查 (scenario) 场景化排障实战 初始版本
VM 调度 (vm_placement) 虚拟机智能放置 初始版本
流程仿真 (flow_sim) 分布式系统流程模拟 #10

Omni-Sim — 5 个 Rust Crate

Crate 说明 PR
omni-sim-opdl 组件类型 + OPDL 编译器(零上游依赖) #1 #2
omni-sim-core ECS 系统 + 状态哈希 #1 #2
omni-sim-ffi C ABI / Wasm FFI 层 #1 #3
omni-sim-telemetry 采样 + WebSocket 推送 #1 #2
omni-sim-headless CLI 无头服务器 + --serve 模式 #1 #3 #4

测试覆盖

子系统 框架 测试数 运行命令
Omni-Sim (Rust) cargo test 139 cd omni-sim && cargo test --workspace
SkillQuest 游戏引擎 (TS) Vitest 268 cd SkillQuest/packages/game-engine && npx vitest run
SkillQuest AI 引擎 (Python) pytest ~155 cd SkillQuest/services/ai-engine && python3 -m pytest tests/ -v
Omni-Sim Web Console (TS) Vitest 23 cd omni-sim/web-console && npm test

安全修复记录

PR 问题 修复
#2 Omni-Sim: static mut UB、FFI 内存违例、.unwrap() panic thread_local! + RefCell、caller-supplied buffer、OPDL 三阶段编译器
#5 Next.js HTTP 请求反序列化 DoS (CVE, 影响 ≥13.0.0) 升级 Next.js 14.2.35 → 15.x
#8 游戏引擎可视化层类型安全缺陷 + 内存泄漏 类型修复 + 资源清理

设计系统

原则 实现 PR
零 emoji 全部使用 Lucide-React 图标 #14
单色调 蓝紫主色 + 毛玻璃效果 #14
截图可点击 PNG 存 docs/screenshots/ + [![](path)](path) 语法 #22

项目文件结构

TOB-/
├── README.md                          ← 本文件(全部 PR 变更记录)
├── SkillQuest/                        ← 游戏化培训平台
│   ├── apps/web/                      # Next.js 15 前端(9 个页面)
│   ├── apps/api/                      # NestJS 后端 API
│   ├── packages/game-engine/          # 游戏引擎(268 个测试)
│   ├── packages/types/                # 共享 TypeScript 类型
│   ├── services/ai-engine/            # Python FastAPI AI 引擎
│   ├── infra/                         # Docker + Nginx
│   ├── showcase.html                  # 独立展示页(PR #12)
│   └── SkillQuest-介绍手册.pdf        # PDF 手册(PR #13)
├── omni-sim/                          ← 数字孪生仿真平台
│   ├── crates/                        # 5 个 Rust crate
│   ├── unity/                         # Unity 集成
│   ├── web-console/                   # TypeScript 遥测面板
│   ├── vendor/                        # 厂商 Pack(SmartX 等)
│   └── build/                         # 构建脚本
├── docs/
│   ├── screenshots/                   # 26 张页面截图(PNG)
│   └── screenshots.md                 # 截图文档页
├── game20_extracted/                  # 提取的游戏资产
└── 游戏攻关2.0.tar.gz                 # 原始归档

License

Proprietary — © 2026