mcpField
L
ln-723-seed-data-generator

ln-723-seed-data-generator

github.com/levnikolaevich数据与数据库584360 次安装2 天前更新
代码仓库

关于 ln-723-seed-data-generator

ln-723-seed-data-generator 可从现有 ORM 模式或实体定义生成种子数据文件。它支持 C#、TypeScript、Python、JSON 和 SQL,并使用确定性 faker 数据及关系检查。

主要功能

  1. 01解析六种所列 ORM 的模式
  2. 02接收实体定义或使用起始模板
  3. 03生成 C#、TypeScript、Python、JSON 和 SQL
  4. 04使用固定种子的 faker 数据以便复现
  5. 05检查语法和外键关系

适用场景

  1. 01为已有 ORM 模式的项目生成测试数据
  2. 02根据实体列表生成样例数据
  3. 03准备 API 测试或数据库导入所需的种子数据

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/levnikolaevich/claude-code-skills --skill ln-723-seed-data-generator

安装后在 Claude Code 中输入/ln-723-seed-data-generator确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
data_generation.md
orm_patterns.md
relationship_mapping.md
type_mapping.md

详细介绍

路径: 文件路径(references/、../ln-*)均相对于此技能目录。

ln-723-seed-data-generator

类型: L3 Worker 类别: 7XX 项目引导

通用种子数据生成器,支持两种模式:MIGRATE(解析现有 ORM 架构)或 GENERATE(根据实体定义创建)。可输出为任意目标格式(C#、TypeScript、Python、JSON、SQL)。


用途与范围

方面描述
输入ORM 架构文件(MIGRATE)或实体列表(GENERATE)
输出目标格式的种子数据文件
模式MIGRATE:解析现有 ORM → 种子数据。GENERATE:实体定义 → 种子数据

范围边界:

  • 解析 ORM 架构定义或接收实体列表
  • 按请求的目标格式生成种子数据
  • 使用 faker 库创建逼真的示例数据
  • 不生成数据库迁移、EF Core 配置或 ORM 模型

模式选择

模式适用情况输入来源
MIGRATETRANSFORM 流水线 — 找到现有 ORM 架构ORM 架构文件Drizzle、Prisma、TypeORM、EF Core、SQLAlchemy、Django ORM
GENERATECREATE 流水线 — 没有现有架构来自 ln-700 Phase 0 的实体列表用户提供或入门模板(User、Role)

如果 GENERATE 模式未收到实体列表,则生成包含 User(id、name、email、role、createdAt)和 Role(id、name、description)的入门模板。


目标格式

格式输出文件Faker 库用途
C# MockDataMockData.csBogus.NET 项目
TypeScript fixturesseed.tsFaker.jsNode/React 项目
Python factoriesfactories.pyFaker (Python)Django/Flask 项目
JSONseed.json—API 测试、导入脚本
SQLseed.sql—直接填充数据库

工作流

阶段名称操作输出
1解析/定义1A:解析 ORM 架构(MIGRATE)或 1B:接收实体列表(GENERATE)实体模型
2映射类型将通用类型映射应用于目标格式目标类型定义
3生成种子数据使用基于 faker 的真实数据创建种子文件种子数据文件
4验证验证关系并检查语法有效的种子文件

阶段 1:解析/定义

1A:MIGRATE 模式 — 解析 ORM 架构
步骤操作参考
1A.1定位架构文件—
1A.2自动检测 ORM 类型orm_patterns.md — ORM 自动检测表
1A.3提取表/模型定义orm_patterns.md — 各 ORM 的解析部分
1A.4提取带类型的列定义orm_patterns.md
1A.5识别约束(PK、FK、可空、唯一)orm_patterns.md
1A.6提取枚举定义orm_patterns.md
1B:GENERATE 模式 — 接收实体定义
步骤操作参考
1B.1从编排器接收实体列表(或使用入门模板)—
1B.2解析实体定义(名称、字段、类型)—
1B.3根据字段名推断关系(userId → 指向 User 的外键)relationship_mapping.md
1B.4应用默认约束(id = PK,*Id = FK)—

输出: 包含列、类型和约束的实体模型。


阶段 2:映射类型

将实体类型转换为目标格式的类型。

步骤操作参考
2.1选择目标格式(来自编排器参数)—
2.2将列类型映射到目标格式type_mapping.md — 通用类型映射表
2.3确定每个目标的可空状态type_mapping.md
2.4映射外键和关系relationship_mapping.md
2.5将名称转换为目标约定参见下方的名称约定表

各目标的名称约定:

目标类/模型属性/字段文件
C#PascalCase 单数形式PascalCasePascalCase.cs
TypeScriptPascalCase 单数形式camelCasecamelCase.ts
PythonPascalCase 单数形式snake_casesnake_case.py
JSONcamelCasecamelCasekebab-case.json
SQLsnake_case 复数形式snake_casesnake_case.sql

阶段 3:生成种子数据

使用 faker 库创建包含真实数据的种子文件。

步骤操作参考
3.1确定生成顺序(父级 → 子级)relationship_mapping.md
3.2为所有实体生成 ID(GUID/UUID)data_generation.md
3.3使用 faker 生成字段值data_generation.md、type_mapping.md — Faker 集成
3.4确保外键关系有效(子级引用现有父级 ID)relationship_mapping.md
3.5以目标格式编写种子文件—

Faker 集成规则: 所有生成的种子文件都必须使用 faker 库生成真实数据,并采用确定性设定种子(使用固定种子值以确保可复现)。

目标Faker 设置
C#var faker = new Bogus.Faker(); Randomizer.Seed = new Random(42);
TypeScriptimport { faker } from '@faker-js/faker'; faker.seed(42);
Pythonfrom faker import Faker; fake = Faker(); Faker.seed(42)

按依赖关系确定生成顺序:

顺序实体类型生成时机
1根实体(无外键)首先
2第一层子级父级已存在
3第二层子级祖父级已存在
N最深层子级所有祖先均已存在

阶段 4:验证

检查项方法预期结果
语法有效特定语言的检查无语法错误
外键有效交叉引用所有外键均指向现有 ID
类型正确类型分析符合目标格式的类型
名称符合约定模式检查遵循目标对应的命名约定
Faker 具有确定性使用相同种子重新运行输出完全相同

支持的 ORM 检测

ORM检测模式生态系统
DrizzlepgTable()、mysqlTable()、sqliteTable()Node.js
Prisma.prisma 文件中的 model X { 语法Node.js
TypeORM@Entity()、@Column() 装饰器Node.js
EF CoreDbContext、DbSet<>、[Table] 属性.NET
SQLAlchemyBase = declarative_base()、Column()Python
Django ORMmodels.Model、models.CharField()Python

实体转换规则

源目标转换
表名(复数,snake)类名(单数,Pascal)user_profiles → UserProfile
列名(snake)属性名(目标约定)created_at → CreatedAt / createdAt / created_at
枚举名称枚举类型(Pascal)status_enum → StatusEnum
外键列导航属性user_id → UserId / userId

示例数据指南

字段类型示例数量分布
根实体3-5 项状态/优先级各不相同
子级实体5-10 项分布于各父级
叶子实体10-20 项多样且真实

关键规则

  • 单一职责: 仅生成种子数据,不生成 ORM 模型或迁移
  • 幂等: 使用相同种子重新运行时,可生成完全相同的输出
  • 有效关系: 所有外键都必须引用现有的父级 ID
  • 必须使用 Faker: 使用 Faker 库生成逼真的数据,绝不使用随机字符串
  • 确定性播种: 使用固定种子值(42),确保重复运行结果一致
  • 生成顺序: 始终先生成父级,再生成子级
  • 模式识别: MIGRATE 解析文件;GENERATE 接受定义——不得混用

完成定义

  • 已确定模式(MIGRATE 或 GENERATE)
  • 已提取或定义实体模型,包含所有字段和约束
  • 已选择目标格式并应用类型映射
  • 已使用 Faker 生成器生成逼真数据的种子数据文件
  • 已验证确定性播种(重新运行会生成完全相同的输出)
  • 外键均引用有效的父级 ID
  • 名称符合目标格式的约定
  • 每个实体都包含 5-10 条示例数据

风险缓解

风险检测方式缓解措施
ORM 类型未知自动检测失败记录警告,并向编排器请求 ORM 提示
类型映射无效列类型未知使用字符串作为后备类型,并记录警告
外键不匹配外键引用了不存在的 ID先生成父级,再进行验证
GENERATE 中没有实体列表输入为空使用入门模板(User、Role)
名称冲突类名或表名重复添加功能名称作为前缀
循环引用自引用形成循环限制深度,并验证关系图

参考文件

文件用途
references/orm_patterns.mdORM 自动检测和架构解析模式(Drizzle、Prisma、TypeORM、EF Core、SQLAlchemy、Django)
references/type_mapping.md通用类型映射(与 ORM 无关 → C#、TypeScript、Python)+ Faker 集成
references/data_generation.md逼真示例数据模式和生成规则
references/relationship_mapping.md外键处理、生成顺序和关系推断

版本: 3.0.0 最后更新: 2026-02-07

评论

支持 Markdown