149883565d
Co-authored-by: LingandRX <LingandRX@users.noreply.github.com>
49 lines
1.9 KiB
Markdown
49 lines
1.9 KiB
Markdown
# 测试数据生成器 - 功能设计文档
|
||
|
||
> 版本: v1.0
|
||
> 创建时间: 2024-01-20
|
||
> 状态: 已实现(见 `src/pages/TestDataGenerator/`、`src/lib/generators/`、`src/workers/generator.worker.ts`)
|
||
|
||
## 产品定位
|
||
|
||
**轻量级可视化测试数据生成器**
|
||
|
||
- 纯前端工具,无需后端
|
||
- 可视化配置,无需编码
|
||
- 本地生成,数据安全
|
||
|
||
## 目录
|
||
|
||
- [核心功能](./core-features.md)
|
||
- [生成器库](./generators.md)
|
||
- [规则管理](./rule-management.md)
|
||
- [界面设计](./ui-design.md)
|
||
- [技术实现](./technical-implementation.md)
|
||
|
||
## 当前实现入口
|
||
|
||
- 页面入口:`src/pages/TestDataGenerator/index.tsx`
|
||
- Worker:`src/workers/generator.worker.ts`
|
||
- 生成器库:`src/lib/generators/`
|
||
- 规则存储:`src/utils/ruleStorage.ts`
|
||
- 导出工具:`src/utils/dataExporter.ts`
|
||
|
||
实现约束与任务完成状态记录在 [TASKS.md](./TASKS.md)。
|
||
|
||
## 开发者注意事项(与源码同步)
|
||
|
||
以下行为以 `src/` 源码为准;设计文档中的旧版 class API、`metadata`/`options` 嵌套结构已废弃。
|
||
|
||
### Worker 任务 ID(`generationId`)
|
||
|
||
`useGenerator` 每次调用 `generate()` 递增 `generationIdRef`,经 `start` 消息传入 Worker。Worker 所有响应(`progress` / `complete` / `error`)均携带同一 `generationId`。
|
||
|
||
- **取消**:`cancel()` 先递增 ID 再发送 `cancel`,使进行中的 Worker 响应被主线程忽略;Worker 每生成 100 行让出事件循环以处理 cancel。
|
||
- **快速重试**:新任务 ID 大于旧响应时,旧消息被丢弃,避免 UI 状态错乱。
|
||
|
||
类型见 `WorkerRequestMessage` / `WorkerResponseMessage`(`src/types/testDataGenerator.ts`)。
|
||
|
||
### 规则存储写入失败
|
||
|
||
`ruleStorage.save()` / `update()` 在 `localStorage.setItem` 失败时返回 `null`(不部分提交)。页面层(如 `FieldList.tsx`)仅在返回值非空时 Toast 成功。详见 [rule-management.md § 存储机制](./rule-management.md#存储机制) 与 `src/utils/README.md`。
|