Files
structrail-design/.trae/documents/visualization-library-design.md
skycurtain 0e61e4f5b9 docs: 新增并更新产品战略、技术设计与商业化规划文档
- 新增 AI 时代下的 StructRail 战略定位与发展路线图,明确 AI 集成方向
- 更新前端可视化库设计方案,细化架构、技术挑战与商业化结合点
- 重构商业化策略文档为 Q&A 形式,深入探讨市场、产品与增长策略
2026-02-22 22:36:48 +08:00

4.7 KiB
Raw Blame History

前端可视化库设计方案 (@structrail/viz)

1. 核心目标

  • 解耦:将 Tracer SDK数据生成与前端渲染逻辑数据展示完全分离。
  • 复用:打造一个通用的、可嵌入的算法可视化库,服务于 StructRail 平台及第三方场景博客、文档、IDE 插件)。
  • 标准:作为 Tracer Protocol 的标准消费者,建立可视化渲染的事实标准。

2. 架构设计:确定性状态机 (Deterministic State Machine)

采用 Player + Store + Renderer 的分层架构确保时间旅行Time Travel的可靠性。

2.1 Player (播放器/控制器)

  • 职责:解析 JSON 指令流控制时间轴Play, Pause, Seek, Speed
  • 特性
    • 维护当前帧索引 currentIndex
    • 支持步进Step和连续播放。
    • 处理“自动暂停”指令(如 tracer.wait())。

2.2 Store (状态仓库/沙盒)

  • 职责维护“影子内存”Shadow Memory根据指令计算数据结构状态。
  • 机制
    • 增量计算:基于 immer.js 或类似机制只存储指令序列和初始状态通过重放Replay或关键帧Keyframe技术快速计算任意时刻的状态。
    • 快照 (Snapshot):向渲染层提供只读的、标准化的数据快照。
    • State(t) = Apply(InitialState, Events[0...t])

2.3 Renderer (渲染器/组件库)

  • 职责:纯 UI 展示层,遵循 UI = Render(State) 原则。
  • 实现
    • DOM/SVG 渲染器:用于常规数据结构(数组、链表、树),支持 CSS 动画和高质量文本渲染。
    • Canvas/WebGL 渲染器:用于大规模数据(如 10w+ 节点的图、矩阵热力图)。
  • 组件化:提供 <ArrayVisualizer>, <GraphVisualizer> 等独立组件。

3. 关键技术挑战与策略 (Advanced Technical Considerations)

为了确保该库能适应复杂的互联网环境(移动端、嵌入式、高性能场景),需重点关注以下方面:

3.1 响应式与移动端适配 (Responsive & Mobile First)

  • 自适应布局Renderer 需具备流式布局能力。例如 ArrayVisualizer 在窄屏(手机/VS Code 侧边栏)下应自动切换为“折行显示”或“垂直列表模式”,避免横向滚动。
  • 触控交互:设计移动端友好的交互模式(如长按代替 Hover双指缩放代替滚轮

3.2 样式隔离与嵌入性 (Style Isolation)

  • Shadow DOM:推荐使用 Web Components (Shadow DOM) 封装渲染器,彻底隔离宿主页面(如博客全局 CSS的样式干扰。
  • CSS Modules / CSS-in-JS:作为备选方案,确保类名哈希化,防止污染宿主环境。

3.3 性能降级与 LOD (Level of Detail)

  • 自动后端切换:根据数据规模动态选择渲染后端。
    • 节点 < 500使用 SVG交互性好调试方便
    • 节点 > 500自动降级为 Canvas/WebGL高性能
  • LOD 策略:在缩放或快速播放时,自动隐藏非关键细节(如节点文本、阴影),保证渲染帧率。

3.4 状态序列化与分享 (Serialization)

  • State Export:支持将当前 Store 的状态快照导出为 JSON。
  • Deep Link:支持将状态编码为 URL 参数(如 ?state=base64...),实现“分享当前步骤”功能。

3.5 插件系统与扩展性 (Plugin System)

  • Renderer Provider:设计开放的注册接口,允许第三方开发者注册自定义渲染器。
    // 允许用户注册自定义渲染器,支持“主题市场”商业化
    VizRegistry.register('GraphTracer', CyberpunkGraphRenderer);
    
  • 中间件机制:允许拦截和修改指令流,实现自定义的逻辑增强(如增加声音音效)。

4. 预期形态

该库将发布为 NPM 包,提供如下使用方式:

import { Player, ArrayVisualizer } from '@structrail/viz';
import '@structrail/viz/dist/style.css'; // 或自动注入 Shadow DOM 样式

// 1. 初始化播放器
const player = new Player(events);

// 2. 渲染组件 (React 示例)
function App() {
  const snapshot = usePlayerSnapshot(player);
  
  return (
    <div className="viz-container">
      <ArrayVisualizer 
        model={snapshot.tracers['array-1']} 
        theme="cyberpunk" // 支持主题切换
      />
      <Controls player={player} />
    </div>
  );
}

5. 商业化结合点

  • 开源核心:建立协议标准,获取流量。
  • 付费扩展
    • 高级主题包:赛博朋克、手绘风、企业定制皮肤。
    • 高性能渲染器3D 图算法渲染、大数据分析引擎。
    • 云端服务:高清视频导出 (MP4/GIF)。