ln-723-seed-data-generator
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chineseln-723-seed-data-generator
ln-723-seed-data-generator
Type: L3 Worker
Category: 7XX Project Bootstrap
Parent: ln-720-structure-migrator
Universal seed data generator with two modes: MIGRATE (parse existing ORM schemas) or GENERATE (create from entity definitions). Outputs to any target format (C#, TypeScript, Python, JSON, SQL).
类型: L3 Worker
分类: 7XX项目启动工具
父项: ln-720-structure-migrator
通用种子数据生成器,支持两种模式:MIGRATE(解析现有ORM架构)或GENERATE(从实体定义创建)。可输出至任意目标格式(C#、TypeScript、Python、JSON、SQL)。
Purpose & Scope
用途与范围
| Aspect | Description |
|---|---|
| Input | ORM schema files (MIGRATE) or entity list (GENERATE) |
| Output | Seed data files in target format |
| Modes | MIGRATE: parse existing ORM → seed data. GENERATE: entity definitions → seed data |
Scope boundaries:
- Parses ORM schema definitions or accepts entity lists
- Generates seed data in requested target format
- Creates realistic sample data using faker libraries
- Does not generate database migrations, EF Core configs, or ORM models
| 维度 | 说明 |
|---|---|
| 输入 | ORM架构文件(MIGRATE模式)或实体列表(GENERATE模式) |
| 输出 | 目标格式的种子数据文件 |
| 模式 | MIGRATE:解析现有ORM→生成种子数据;GENERATE:实体定义→生成种子数据 |
范围边界:
- 解析ORM架构定义或接收实体列表
- 按请求的目标格式生成种子数据
- 使用faker类库生成真实感样本数据
- 不生成数据库迁移脚本、EF Core配置或ORM模型
Mode Selection
模式选择
| Mode | When | Input | Source |
|---|---|---|---|
| MIGRATE | TRANSFORM pipeline — existing ORM schemas found | ORM schema files | Drizzle, Prisma, TypeORM, EF Core, SQLAlchemy, Django ORM |
| GENERATE | CREATE pipeline — no existing schemas | Entity list from ln-700 Phase 0 | User-provided or starter template (User, Role) |
If GENERATE mode receives no entity list, generate starter template with (id, name, email, role, createdAt) and (id, name, description).
UserRole| 模式 | 适用场景 | 输入 | 来源 |
|---|---|---|---|
| MIGRATE | TRANSFORM流水线——存在现有ORM架构 | ORM架构文件 | Drizzle、Prisma、TypeORM、EF Core、SQLAlchemy、Django ORM |
| GENERATE | CREATE流水线——无现有架构 | ln-700阶段0提供的实体列表 | 用户提供或起始模板(User、Role) |
若GENERATE模式未收到实体列表,则自动生成包含(id、name、email、role、createdAt)和(id、name、description)的起始模板。
UserRoleTarget Formats
目标格式
| Format | Output File | Faker Library | Use Case |
|---|---|---|---|
| C# MockData | | Bogus | .NET projects |
| TypeScript fixtures | | Faker.js | Node/React projects |
| Python factories | | Faker (Python) | Django/Flask projects |
| JSON | | — | API testing, import scripts |
| SQL | | — | Direct DB seeding |
| 格式 | 输出文件 | Faker类库 | 适用场景 |
|---|---|---|---|
| C# 模拟数据 | | Bogus | .NET项目 |
| TypeScript 测试夹具 | | Faker.js | Node/React项目 |
| Python 工厂类 | | Faker (Python) | Django/Flask项目 |
| JSON | | — | API测试、导入脚本 |
| SQL | | — | 直接数据库初始化 |
Workflow
工作流程
| Phase | Name | Actions | Output |
|---|---|---|---|
| 1 | Parse/Define | 1A: Parse ORM schema (MIGRATE) or 1B: Accept entity list (GENERATE) | Entity model |
| 2 | Map Types | Apply universal type mapping to target format | Target type definitions |
| 3 | Generate Seed Data | Create seed files with faker-based realistic data | Seed data files |
| 4 | Verify | Validate relationships, check syntax | Valid seed files |
| 阶段 | 名称 | 操作 | 输出 |
|---|---|---|---|
| 1 | 解析/定义 | 1A:解析ORM架构(MIGRATE模式)或1B:接收实体列表(GENERATE模式) | 实体模型 |
| 2 | 类型映射 | 将通用类型转换为目标格式类型 | 目标类型定义 |
| 3 | 生成种子数据 | 使用faker类库创建包含真实感数据的种子文件 | 种子数据文件 |
| 4 | 验证 | 验证关系、检查语法 | 合法的种子文件 |
Phase 1: Parse/Define
阶段1:解析/定义
1A: MIGRATE Mode — Parse ORM Schema
1A:MIGRATE模式——解析ORM架构
| Step | Action | Reference |
|---|---|---|
| 1A.1 | Locate schema file(s) | — |
| 1A.2 | Auto-detect ORM type | |
| 1A.3 | Extract table/model definitions | |
| 1A.4 | Extract column definitions with types | |
| 1A.5 | Identify constraints (PK, FK, nullable, unique) | |
| 1A.6 | Extract enum definitions | |
| 步骤 | 操作 | 参考文档 |
|---|---|---|
| 1A.1 | 定位架构文件 | — |
| 1A.2 | 自动检测ORM类型 | |
| 1A.3 | 提取表/模型定义 | |
| 1A.4 | 提取带类型的列定义 | |
| 1A.5 | 识别约束(主键、外键、可空、唯一) | |
| 1A.6 | 提取枚举定义 | |
1B: GENERATE Mode — Accept Entity Definitions
1B:GENERATE模式——接收实体定义
| Step | Action | Reference |
|---|---|---|
| 1B.1 | Receive entity list from orchestrator (or use starter template) | — |
| 1B.2 | Parse entity definitions (name, fields, types) | — |
| 1B.3 | Infer relationships from field names ( | |
| 1B.4 | Apply default constraints (id = PK, | — |
Output: Entity model with columns, types, and constraints.
| 步骤 | 操作 | 参考文档 |
|---|---|---|
| 1B.1 | 从编排器接收实体列表(或使用起始模板) | — |
| 1B.2 | 解析实体定义(名称、字段、类型) | — |
| 1B.3 | 从字段名推断关系( | |
| 1B.4 | 应用默认约束(id=主键, | — |
输出: 包含列、类型和约束的实体模型。
Phase 2: Map Types
阶段2:类型映射
Convert entity types to target format types.
| Step | Action | Reference |
|---|---|---|
| 2.1 | Select target format (from orchestrator params) | — |
| 2.2 | Map column types to target format | |
| 2.3 | Determine nullable status per target | |
| 2.4 | Map foreign keys and relationships | |
| 2.5 | Transform names to target convention | See Name Conventions table below |
Name Conventions by Target:
| Target | Class/Model | Property/Field | File |
|---|---|---|---|
| C# | PascalCase singular | PascalCase | PascalCase.cs |
| TypeScript | PascalCase singular | camelCase | camelCase.ts |
| Python | PascalCase singular | snake_case | snake_case.py |
| JSON | camelCase | camelCase | kebab-case.json |
| SQL | snake_case plural | snake_case | snake_case.sql |
将实体类型转换为目标格式类型。
| 步骤 | 操作 | 参考文档 |
|---|---|---|
| 2.1 | 选择目标格式(来自编排器参数) | — |
| 2.2 | 将列类型映射至目标格式 | |
| 2.3 | 确定目标格式下的可空状态 | |
| 2.4 | 映射外键与关系 | |
| 2.5 | 将名称转换为目标格式的命名规范 | 见下方命名规范表 |
各目标格式的命名规范:
| 目标格式 | 类/模型 | 属性/字段 | 文件 |
|---|---|---|---|
| C# | 单数大驼峰 | 大驼峰 | 大驼峰.cs |
| TypeScript | 单数大驼峰 | 小驼峰 | 小驼峰.ts |
| Python | 单数大驼峰 | 蛇形命名 | 蛇形命名.py |
| JSON | 小驼峰 | 小驼峰 | 短横线命名.json |
| SQL | 复数蛇形命名 | 蛇形命名 | 蛇形命名.sql |
Phase 3: Generate Seed Data
阶段3:生成种子数据
Create seed files with realistic data using faker libraries.
| Step | Action | Reference |
|---|---|---|
| 3.1 | Determine generation order (parents → children) | |
| 3.2 | Generate IDs (GUIDs/UUIDs) for all entities | |
| 3.3 | Generate field values using faker | |
| 3.4 | Ensure FK relationships valid (child references existing parent ID) | |
| 3.5 | Write seed file in target format | — |
Faker integration rule: All generated seed files MUST use faker libraries for realistic data with deterministic seeding (fixed seed value for reproducibility).
| Target | Faker Setup |
|---|---|
| C# | |
| TypeScript | |
| Python | |
Generation order by dependency:
| Order | Entity Type | Generate After |
|---|---|---|
| 1 | Root entities (no FK) | First |
| 2 | First-level children | Parents exist |
| 3 | Second-level children | Grandparents exist |
| N | Deepest children | All ancestors exist |
使用faker类库创建包含真实感数据的种子文件。
| 步骤 | 操作 | 参考文档 |
|---|---|---|
| 3.1 | 确定生成顺序(父实体→子实体) | |
| 3.2 | 为所有实体生成ID(GUID/UUID) | |
| 3.3 | 使用faker生成字段值 | |
| 3.4 | 确保外键关系合法(子实体引用已存在的父实体ID) | |
| 3.5 | 按目标格式写入种子文件 | — |
Faker集成规则: 所有生成的种子文件必须使用faker类库生成真实感数据,并保证确定性生成(固定种子值以确保可复现)。
| 目标格式 | Faker配置 |
|---|---|
| C# | |
| TypeScript | |
| Python | |
按依赖关系的生成顺序:
| 顺序 | 实体类型 | 生成时机 |
|---|---|---|
| 1 | 根实体(无外键) | 最先生成 |
| 2 | 一级子实体 | 父实体已生成 |
| 3 | 二级子实体 | 祖父实体已生成 |
| N | 最深层子实体 | 所有祖先实体已生成 |
Phase 4: Verify
阶段4:验证
| Check | Method | Expected |
|---|---|---|
| Syntax valid | Language-specific check | No syntax errors |
| FKs valid | Cross-reference | All FKs point to existing IDs |
| Types correct | Type analysis | Proper types for target format |
| Names follow convention | Pattern check | Per-target naming convention |
| Faker deterministic | Re-run with same seed | Identical output |
| 检查项 | 方法 | 预期结果 |
|---|---|---|
| 语法合法 | 语言特定检查 | 无语法错误 |
| 外键合法 | 交叉引用 | 所有外键指向已存在的ID |
| 类型正确 | 类型分析 | 符合目标格式的正确类型 |
| 名称符合规范 | 模式检查 | 符合对应目标格式的命名规范 |
| Faker确定性 | 使用相同种子重新生成 | 输出完全一致 |
Supported ORM Detection
支持的ORM检测
| ORM | Detection Pattern | Ecosystem |
|---|---|---|
| Drizzle | | Node.js |
| Prisma | | Node.js |
| TypeORM | | Node.js |
| EF Core | | .NET |
| SQLAlchemy | | Python |
| Django ORM | | Python |
| ORM | 检测模式 | 技术生态 |
|---|---|---|
| Drizzle | | Node.js |
| Prisma | | Node.js |
| TypeORM | | Node.js |
| EF Core | | .NET |
| SQLAlchemy | | Python |
| Django ORM | | Python |
Entity Transformation Rules
实体转换规则
| Source | Target | Transformation |
|---|---|---|
| Table name (plural, snake) | Class name (singular, Pascal) | |
| Column name (snake) | Property name (target convention) | |
| Enum name | Enum type (Pascal) | |
| FK column | Navigation property | |
| 来源 | 目标 | 转换方式 |
|---|---|---|
| 表名(复数、蛇形命名) | 类名(单数、大驼峰) | |
| 列名(蛇形命名) | 属性名(目标格式规范) | |
| 枚举名 | 枚举类型(大驼峰) | |
| 外键列 | 导航属性 | |
Sample Data Guidelines
样本数据指南
| Field Type | Sample Count | Distribution |
|---|---|---|
| Root entities | 3-5 items | Varied status/priority |
| Child entities | 5-10 items | Distributed across parents |
| Leaf entities | 10-20 items | Realistic variety |
| 字段类型 | 样本数量 | 分布方式 |
|---|---|---|
| 根实体 | 3-5条 | 包含不同状态/优先级 |
| 子实体 | 5-10条 | 均匀分布至各父实体 |
| 叶子实体 | 10-20条 | 真实感多样性 |
Critical Rules
核心规则
- Single Responsibility: Generate only seed data, no ORM models or migrations
- Idempotent: Can re-run with same seed to produce identical output
- Valid Relationships: All FKs must reference existing parent IDs
- Faker Required: Use faker libraries for realistic data, never random strings
- Deterministic Seeding: Fixed seed value (42) for reproducibility across re-runs
- Generation Order: Parents before children, always
- Mode Awareness: MIGRATE parses files; GENERATE accepts definitions — never mix
- 单一职责: 仅生成种子数据,不生成ORM模型或迁移脚本
- 幂等性: 使用相同种子重新运行可生成完全一致的输出
- 合法关系: 所有外键必须指向已存在的父实体ID
- 强制使用Faker: 使用faker类库生成真实感数据,禁止使用随机字符串
- 确定性生成: 使用固定种子值(42)确保多次运行的可复现性
- 生成顺序: 始终先生成父实体,再生成子实体
- 模式区分: MIGRATE模式解析文件;GENERATE模式接收定义——禁止混合使用
Definition of Done
完成标准
- Mode determined (MIGRATE or GENERATE)
- Entity model extracted/defined with all fields and constraints
- Target format selected and type mappings applied
- Seed data files generated with faker-based realistic values
- Deterministic seeding verified (re-run produces identical output)
- Foreign keys reference valid parent IDs
- Names follow target format conventions
- Sample data includes 5-10 items per entity
- 确定模式(MIGRATE或GENERATE)
- 提取/定义包含所有字段和约束的实体模型
- 选择目标格式并应用类型映射
- 生成包含faker真实感数据的种子文件
- 验证确定性生成(重新运行输出一致)
- 外键均指向合法的父实体ID
- 名称符合目标格式的命名规范
- 每个实体的样本数据包含5-10条
Risk Mitigation
风险缓解
| Risk | Detection | Mitigation |
|---|---|---|
| Unknown ORM type | Auto-detection fails | Log warning, ask orchestrator for ORM hint |
| Invalid type mapping | Unknown column type | Use string as fallback, log warning |
| FK mismatch | FK references non-existent ID | Generate parents first, validate after |
| No entity list in GENERATE | Empty input | Use starter template (User, Role) |
| Name collision | Duplicate class/table names | Prefix with feature name |
| Circular references | Self-referencing with cycles | Limit depth, validate graph |
| 风险 | 检测方式 | 缓解措施 |
|---|---|---|
| 未知ORM类型 | 自动检测失败 | 记录警告,向编排器请求ORM提示 |
| 无效类型映射 | 未知列类型 | 使用字符串作为 fallback,记录警告 |
| 外键不匹配 | 外键引用不存在的ID | 先生成父实体,生成后验证 |
| GENERATE模式无实体列表 | 输入为空 | 使用起始模板(User、Role) |
| 名称冲突 | 类/表名重复 | 以功能名作为前缀 |
| 循环引用 | 自引用存在循环 | 限制深度,验证关系图 |
Reference Files
参考文件
| File | Purpose |
|---|---|
| ORM auto-detection and schema parsing patterns (Drizzle, Prisma, TypeORM, EF Core, SQLAlchemy, Django) |
| Universal type mapping (ORM-agnostic → C#, TypeScript, Python) + Faker integration |
| Realistic sample data patterns and generation rules |
| FK handling, generation order, relationship inference |
Version: 3.0.0
Last Updated: 2026-02-07
| 文件 | 用途 |
|---|---|
| ORM自动检测与架构解析规则(Drizzle、Prisma、TypeORM、EF Core、SQLAlchemy、Django) |
| 通用类型映射(ORM无关→C#、TypeScript、Python)+ Faker集成规则 |
| 真实感样本数据模式与生成规则 |
| 外键处理、生成顺序、关系推断规则 |
版本: 3.0.0
最后更新: 2026-02-07