mock-data-genlisted
Install: claude install-skill YuAICode/ai-skills
# mock-data-gen — 假数据 / 测试种子数据生成
把 SQL `CREATE TABLE`、Go/GORM struct、TypeScript interface、JSON 样例或自然语言字段描述,
转换成 N 条**真实感**测试数据,输出为 JSON 数组 / SQL INSERT / CSV / NDJSON,
字段值符合类型、约束与业务语义,唯一键不重复,外键保持引用一致。
> **所有生成数据均为假数据,仅供开发测试使用,不含真实 PII。**
## 何时触发
用户说:
- `/mock-data-gen`
- "帮我生成测试数据"
- "帮我造数据"
- "生成假数据" / "生成种子数据"
- "给这个表造 10 条 INSERT"
- "帮我生成符合这个 interface 的 JSON"
- "我需要 CSV 格式的测试数据"
- "给我生成一些中文测试用户"
## 工作流
### 1. 收集输入
从用户处拿到以下信息(缺什么问什么,再追问一次即可,不要多轮打扰):
| 输入项 | 说明 | 缺省值 |
|---|---|---|
| **结构定义** | SQL `CREATE TABLE` / Go struct / TS interface / JSON shape / 自然语言字段列表 | 必填 |
| **条数 N** | 需要生成多少条 | 默认 10 |
| **输出格式** | `json` / `sql` / `csv` / `ndjson` | 默认 `json` |
| **语言偏好** | 中文场景(中文姓名/国内手机号/省市地址等)还是国际化 | 默认按字段名/表名推断 |
| **外键约束** | 若有外键,提供父表已有的合法 ID 范围或列表 | 未提供时自动生成连续 ID |
### 2. 解析结构
- **SQL CREATE TABLE**:提取列名、类型、`NOT NULL`、`DEFAULT`、`UNIQUE`、`CHECK`、枚举(`ENUM(...)`)、主键、外键、长度限制(`VARCHAR(N)`)。
- **Go/GORM struct**:解析字段名、类型(`string`/`int`/`time.Time`/`*Type` 等)、GORM tag(`column` / `type` / `not null` / `unique` / `default` / `size`)、json tag 作为字段名。
- **TypeScript interface**:解析字段名、类型(`string`/`number`/`boolean`/`Date`/字面量联合 `'a' | 'b'`/可选 `?`)。
- **JSON 样例**:推断每个字段的类型与语义。
- **自然语言字段列表**:从描述推断类型与约束(如"手机号:11 位数字,不重复"→ `VARCHAR(11) UNIQUE NOT NULL`)。
### 3. 推断字段语义并生成真实感数据
#### 字段语义映射
| 字段名关键词(模糊匹配) | 生成策略 |
|---|---|
| `name` / `user_name` / `姓名` | 真实感人名(中文 or 英文,按语言偏好) |
| `email` / `邮箱` | `<拼音或英文>@<域名>.com` 格式,保证 `@` 前唯一 |
| `phone` / `mobile` / `手机` | 中文场景:1[3-9]X