📌 用途 ln-723-seed-data-generator 是一个通用种子数据生成技能,用于为开发环境填充数据库。它根据 ORM schema 或实体定义生成指定目标格式的种子数据文件。
主要能力
- 双模式:MIGRATE(解析已有 ORM schema 生成种子数据)与 GENERATE(从实体定义生成种子数据)。
- 支持的目标格式:C# MockData(输出 MockData.cs,使用 Bogus 库)、TypeScript fixtures(输出 seed.ts,使用 Faker.js)、Python factories(输出 factories.py,使用 Python Faker)、JSON(输出 seed.json)、SQL(输出 seed.sql)。
- 可自动检测的 ORM:Drizzle(pgTable/mysqlTable/sqliteTable)、Prisma(.prisma 文件中的 model 语法)、TypeORM(@Entity/@Column 装饰器)、EF Core(DbContext、DbSet<>、[Table] 特性)、SQLAlchemy(declarative_base、Column)、Django ORM(models.Model、models.CharField)。
- 使用 faker 库生成真实感数据,采用固定种子值(42)保证可复现。
- 类型映射:将列类型映射到目标格式,处理可空性、外键与关系。
- 命名约定转换:如 C# 使用 PascalCase 单数类名与 PascalCase 属性,TypeScript 使用 PascalCase 单数类名与 camelCase 字段,Python 使用 PascalCase 单数类名与 snake_case 字段,JSON 使用 camelCase 与 kebab-case 文件名,SQL 使用 snake_case 复数表名与 snake_case 字段。
- 按依赖顺序生成:先根实体(无外键),再一级子实体,依此类推,确保所有外键指向已存在的父级 ID。
使用方式 工作流分四个阶段:
- Parse/Define:MIGRATE 模式定位并解析 ORM schema 文件、自动检测 ORM 类型、提取表/模型、列定义、约束与枚举;GENERATE 模式接收实体清单(若为空则使用起始模板 User 与 Role),解析实体定义并推断关系。
- Map Types:选择目标格式,应用通用类型映射,确定可空性,映射外键与关系,按目标约定转换名称。
- Generate Seed Data:确定生成顺序,生成 GUID/UUID,使用 faker 生成字段值,确保外键有效,写出目标格式种子文件。
- Verify:检查语法、外键有效性、类型正确性、命名约定以及 faker 确定性(相同种子输出一致)。
faker 集成规则要求所有生成的种子文件必须使用 faker 库并采用固定种子值以确保可复现,例如 C# 使用 Randomizer.Seed = new Random(42),TypeScript 使用 faker.seed(42),Python 使用 Faker.seed(42)。
样本数据指南:根实体 3–5 项,子实体 5–10 项,叶子实体 10–20 项;关键规则包括单一职责(仅生成种子数据)、幂等(相同种子输出一致)、外键有效、必须使用 faker、确定性种子、父级先于子级、模式不混用。
适用场景
- 为开发环境填充数据库。
- 从已有 ORM schema(MIGRATE)或实体定义(GENERATE)快速生成种子数据。
- 需要多语言/多格式种子数据的项目(.NET、Node/React、Django/Flask、API 测试、直接数据库播种)。
限制
- 不生成数据库迁移、EF Core 配置或 ORM 模型。
- 缺失事实(如具体收费、价格、平台限制、实际效果)资料中暂未提供。
- 若自动检测未知 ORM 类型,会记录警告并请求 ORM 提示;未知列类型以字符串回退;循环引用会限制深度并验证图。