149883565d
Co-authored-by: LingandRX <LingandRX@users.noreply.github.com>
1.9 KiB
1.9 KiB
测试数据生成器 - 功能设计文档
版本: v1.0 创建时间: 2024-01-20 状态: 已实现(见
src/pages/TestDataGenerator/、src/lib/generators/、src/workers/generator.worker.ts)
产品定位
轻量级可视化测试数据生成器
- 纯前端工具,无需后端
- 可视化配置,无需编码
- 本地生成,数据安全
目录
当前实现入口
- 页面入口:
src/pages/TestDataGenerator/index.tsx - Worker:
src/workers/generator.worker.ts - 生成器库:
src/lib/generators/ - 规则存储:
src/utils/ruleStorage.ts - 导出工具:
src/utils/dataExporter.ts
实现约束与任务完成状态记录在 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 § 存储机制 与 src/utils/README.md。