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

95 lines
4.7 KiB
Markdown
Raw 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.
# 前端可视化库设计方案 (`@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**:设计开放的注册接口,允许第三方开发者注册自定义渲染器。
```typescript
// 允许用户注册自定义渲染器,支持“主题市场”商业化
VizRegistry.register('GraphTracer', CyberpunkGraphRenderer);
```
- **中间件机制**:允许拦截和修改指令流,实现自定义的逻辑增强(如增加声音音效)。
## 4. 预期形态
该库将发布为 NPM 包,提供如下使用方式:
```typescript
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)。