内容
<h1 align="center">
<img src=".github/img/pluginIcon.png" width="128" height="128" alt="Ru BizGen"/>
<br />
Ru BizGen
</h1>
<p align="center">
<a href="https://plugins.jetbrains.com/plugin/29294-ru-bizgen"><img src="https://img.shields.io/jetbrains/plugin/v/29294?style=for-the-badge" alt="版本"/></a>
<a href="https://plugins.jetbrains.com/plugin/29294-ru-bizgen/reviews"><img src="https://img.shields.io/jetbrains/plugin/r/rating/29294?style=for-the-badge" alt="评分" /></a>
<a href="https://plugins.jetbrains.com/plugin/29294-ru-bizgen"><img src="https://img.shields.io/jetbrains/plugin/d/29294?style=for-the-badge" alt="下载量" /></a>
<br />
<a href="https://github.com/DmitryEm506/Ru-BizGen/actions"><img src="https://img.shields.io/github/actions/workflow/status/DmitryEm506/Ru-BizGen/ci-dev.yml?branch=dev&style=for-the-badge" alt="构建状态" /></a>
<a href="https://dmitryem506.github.io/Ru-BizGen/"><img src="https://img.shields.io/badge/kdoc-ready-blue?style=for-the-badge" alt="文档" /></a>
<a href="https://dmitryem506.github.io/Ru-BizGen/images/kover/index.html"><img src="https://img.shields.io/badge/coverage-Kover-blue?style=for-the-badge" alt="代码覆盖率" /></a>
<a><img src="https://img.shields.io/badge/JetBrains-Verified-blue?style=for-the-badge" alt="JetBrains 验证" /></a>
<a><img src="https://img.shields.io/badge/IntelliJ%20IDEA-2024.2+-blue?style=for-the-badge&logo=intellij-idea" alt="IntelliJ IDEA 版本" /></a>
</p>
# 生成器列表
加速开发进程,立即在代码编辑器中生成接近真实的测试数据。
## ⚠️ 重要
任何与真实的敏感数据(如税号、账户号码、银行卡号、社保号、电话号码、组织名称、OGRN、OKTMO等)重合的情况都是随机的,不适用于真实系统。
所有数据都**在本地插件内生成**,无需调用外部服务。
## ✨ 主要功能
- 🚀 **快速生成** 数据直接在编辑器中
- ⌨️ **快捷键** (默认为 Ctrl+Alt+E,可自定义)
- 🎛️ **生成器灵活设置** (顺序、启用/禁用)
- 🔔 **可自定义的通知** 关于生成器的触发
- 👀 **结果预览** 在插入前
- 📋 **与 Alt+Ins 集成** - 可在 IntelliJ 的标准代码生成对话框中使用
- 🔄 **更新时无需重置设置** - 顺序和选定的生成器自动保存
## 🧩 可用生成器
<p align="center">
<img src=".github/img/generators.png" width="800" alt="可用生成器" />
</p>
- 💰 **银行凭证:** 结算账户(RUB,CNY),对应账户,BIK,SWIFT(俄罗斯银行),IBAN(俄罗斯和土耳其)
- 👤 **个人:** 姓名(全名,缩写,首字母),税号,银行卡号,电话号码,社保号
- 🏢 **法律数据:** 税号(个人和法人),OGRN(企业家和法人),OKTMO(8位和11位),KPP
- 🏛️ **组织名称:** 中文和英文
- 📍 **地理数据:** 国家和地址,格式真实
- 🔢 **其他:** UUID
## ▶️ 使用方法
<p align="center">
<img src=".github/img/main.gif" width="800" alt="使用示例" />
</p>
调用生成器窗口并直接在代码中插入测试数据 - 无需从外部服务复制。
### 调用方式
- `Ctrl+Alt+E` (Windows/Linux)或 `⌘⌥E` (Mac)
- `Alt+Ins` → **Ru BizGen**
- `Shift+Shift` → **Ru BizGen**
## ⚙️ 高级设置
可在以下路径找到:**设置 → 工具 → Ru BizGen**
<p align="center">
<img src=".github/img/settings.png" width="800" alt="设置概述" />
</p>
设置允许您管理生成器的行为并根据您的需求进行自定义。
<p align="center">
<img src=".github/img/work-sample.gif" width="800" alt="设置概述" />
</p>
### 管理生成器
- ✔️ 启用/禁用生成器
- ⬆️⬇️ 更改顺序
- 🔄 重置为默认设置
### 通知和预览
- 🔔 选择通知方式
- 👀 生成结果预览
- 📋 快速测试生成器
## 💎 优势
- ⏱️ **节省时间** - 毫秒级生成
- 🧩 **灵活性** - 轻松适应项目任务
- 💻 **便捷性** - 直接在 IDE 中工作
- 🛠️ **为开发者而设计** - 由开发者为开发者创建
---
# 🤖 MCP 服务器
除了 IntelliJ IDEA 插件外,Ru BizGen 还可用作 **MCP 服务器** (模型上下文协议)。
这允许将测试数据生成连接到任何与 MCP 兼容的 AI 客户端
(Claude Desktop,Cursor,Cline,Windsurf 等)并直接在聊天或 AI 代理中生成数据。
所有数据都**在本地生成**,无需调用外部服务 - 与插件相同。
## ✨ 功能
- 🧩 **31 个 MCP 工具** - 每个生成器一个(与插件中的相同)
- 🔒 **完全本地生成** - 无网络调用,数据不会离开您的计算机
- ⚡ **微秒级性能** - 与插件中相同的算法
- 🌐 **可流式 HTTP 传输** - 现代 MCP 协议基于 HTTP
- 🐳 **Docker 就绪** - 准备好的 `Dockerfile` 和 `docker-compose.yml`
- 📋 **稳定的工具名称** - 工具名称从生成器的 UUID 标识符计算,而不是类名,并在重构时不会更改
## 🛠 技术栈
| 组件 | 版本 |
|:---------------|:----------------|
| MCP Kotlin SDK | 0.13.0 |
| Ktor / Netty | 3.4.3 |
| JDK | 21 |
| 传输 | 可流式 HTTP |
## ▶️ 快速开始
MCP 服务器可以通过三种方式启动。
### 方式 1. Gradle(从源代码)
```bash
# 构建分发版
./gradlew :ru-bizgen-mcp:installDist
# 运行(默认为 127.0.0.1:8081)
./ru-bizgen-mcp/build/install/ru-bizgen-mcp/bin/ru-bizgen-mcp
# 显式指定主机/端口
./ru-bizgen-mcp/build/install/ru-bizgen-mcp/bin/ru-bizgen-mcp --host=0.0.0.0 --port=9090
```
### 方式 2. Docker
```bash
docker build -f ru-bizgen-mcp/Dockerfile -t ru-bizgen-mcp .
docker run -p 8081:8081 ru-bizgen-mcp
```
### 方式 3. Docker Compose
```bash
docker compose -f ru-bizgen-mcp/docker-compose.yml up -d
```
服务器启动后,可在 `http://127.0.0.1:8081` 访问。
## ⚙️ 配置
参数作为命令行参数传递:
| 参数 | 默认值 | 描述 |
|:----------|:-------------|:------------------------------------------------|
| `--host=` | `127.0.0.1` | 绑定地址(`0.0.0.0` - 所有接口) |
| `--port=` | `8081` | MCP 服务器端口 |
### 健康检查
`GET /health` 端点返回 `{"status":"UP"}` - 方便 Docker 健康检查和监控:
```bash
curl http://127.0.0.1:8081/health
```
## 🔌 连接 MCP 客户端
MCP 服务器使用 **可流式 HTTP** 传输。MCP 端点为 `http://127.0.0.1:8081/mcp`。
### Cursor
`设置 → Cursor 设置 → MCP → 添加 MCP 服务器`:
```json
{
"mcpServers": {
"ru-bizgen": {
"url": "http://127.0.0.1:8081/mcp"
}
}
}
```
### Claude Desktop
在 `claude_desktop_config.json` 中添加(在最新版本中支持流式 HTTP):
```json
{
"mcpServers": {
"ru-bizgen": {
"type": "streamableHttp",
"url": "http://127.0.0.1:8081/mcp"
}
}
}
```
> **💡 通用:** 任何支持流式 HTTP 的 MCP 客户端都可以通过 URL `http://<host>:<port>/mcp` 连接。
## 🧩 可用工具(27)
每个工具的名称都采用 `generate_<snake_case>` 格式。工具不接受参数 - 每次调用都返回一个新的随机值。
### 技术
| 工具 | 描述 |
|:----------------|:----------------|
| `generate_uuid` | 字符串形式的 UUID |
### 银行凭证
| 工具 | 描述 |
|:------------------------|:--------------------------------------|
| `generate_account_rub` | 俄罗斯卢布结算账户(20 位) |
| `generate_account_cny` | 人民币结算账户(20 位) |
| `generate_bank_account` | 对应账户(20 位) |
| `generate_bik` | BIK(9 位) |
| `generate_swift_ru8` | 俄罗斯 SWIFT(8 个字符) |
| `generate_swift_ru11` | 俄罗斯 SWIFT(11 个字符) |
| `generate_iban_ru` | 俄罗斯 IBAN(33 个字符) |
| `generate_iban_turkish` | 土耳其 IBAN(26 个字符) |
### 法律数据
| 工具 | 描述 |
|:--------------------------|:---------------------------------|
| `generate_inn_individual` | 个人税号(12 位) |
| `generate_inn_legal` | 法人税号(10 位) |
| `generate_ogrn_legal` | 法人 OGRN(13 位) |
| `generate_ogrn_ip` | 企业家 OGRN(15 位) |
| `generate_kpp` | KPP(9 位) |
| `generate_oktmo8` | OKTMO(8 位) |
| `generate_oktmo11` | OKTMO(11 位) |
| `generate_org_ru_name` | 俄语组织名称(全称) |
| `generate_org_eng_name` | 英文组织名称(全称) |
### 地理数据
| 工具 | 描述 |
|:-------------------|:------------------------------------------------|
| `generate_address` | 地址(索引、地区、城市等) |
| `generate_country` | 国家(代码、俄语和英语名称、alpha2、alpha3) |
### 个人数据
| 工具 | 描述 |
|:----------------------------------|:---------------------------------|
| `generate_card_number` | 银行卡号(16 位) |
| `generate_fio_full` | 姓名(姓、名、父名) |
| `generate_fio_short` | 姓名(姓、名首字母) |
| `generate_fio_initials` | 姓名(名首字母、姓) |
| `generate_phone_number_ru_format` | 电话号码:+7 (XXX) NNN-NN-NN |
| `generate_phone_number_ru_digit` | 电话号码:7XXXNNNNNNN |
| `generate_snils` | 社会保险号(11 位) |
> **⚠️ 重要:** 所有生成的数值都是随机的,与真实数据无关。重合纯属巧合。
---
# ⚡ 性能报告
本节展示使用 [JMH](https://github.com/openjdk/jmh)
(Java 微基准测试工具)执行的生成器速度测试结果。
所有测量都在隔离条件下进行,以确保结果的准确性和可重复性。
## 🛠 测试环境
| 组件 | 规格 |
|:---------------------------|:---------------------------------------------------------------|
| **虚拟机** | OpenJDK 64-Bit Server VM(21.0.11+10-LTS) |
| **JDK 版本** | 21.0.11 |
| **基准测试框架** | JMH 1.36 |
| **测试目标** | 测量每个生成器调用的平均执行时间 |
## ⚙️ JMH 配置
### 📈 测量模式
* **主要模式:** `AverageTime`(平均操作时间)
* **测量单位:** 微秒(µs)每次操作
### 🔥 预热阶段
允许 JVM 执行代码优化并稳定性能。
* **迭代次数:** 5
* **迭代时长:** 1 秒
### ⏱️ 测量阶段
直接测量性能。
* **迭代次数:** 10
* **迭代时长:** 2 秒
### 🖥 JVM 配置
每个测试在单独的进程中运行,以确保实验的纯度。
* **进程数(Fork):** 2
* **JVM 参数:** `-Xms2g -Xmx2g -XX:+UseG1GC`
## 📊 测试结果
| 生成器 | 平均时间 µs/操作 | 分配的数据量(KB) |
|----------------------------------------------------------------------|---------------------|------------------------------|
| UuidAsStrGenerator - _UUID 字符串_ | 0.455611 | 0.391 |
| AccountRubGenerator - _俄罗斯卢布结算账户(20 位)_ | 0.530002 | 1.077 |
| AccountCnyGenerator - _人民币结算账户(20 位)_ | 0.526572 | 1.082 |
| InnIndividualGenerator - _个人税号(12 位)_ | 0.109294 | 0.345 |
| InnLegalGenerator - _法人税号(10 位)_ | 0.078663 | 0.266 |
| KppGenerator - _KPP(9 位)_ | 1.367849 | 2.458 |
| OgrnLegalGenerator - _法人 OGRN(13 位)_ | 1.781428 | 3.101 |
| OgrnIpGenerator - _企业家 OGRN(15 位)_ | 1.428348 | 2.472 |
| OrgRuNameGenerator - _俄语组织名称(全称)_ | 0.177739 | 0.478 |
| OrgEngNameGenerator - _英文组织名称(全称)_ | 0.159804 | 0.311 |
| BikGenerator - _BIK(9 位)_ | 0.064798 | 0.244 |
| BankAccountGenerator - _对应账户(20 位)_ | 0.727044 | 1.202 |
| Swift8RuGenerator - _俄罗斯 SWIFT(8 个字符)_ | 0.068766 | 0.055 |
| Swift11RuGenerator - _俄罗斯 SWIFT(11 个字符)_ | 0.477214 | 0.730 |
| IbanRuGenerator - _俄罗斯 IBAN(33 个字符)_ | 2.281479 | 4.696 |
| IbanTurkishGenerator - _土耳其 IBAN(26 个字符)_ | 1.626916 | 3.277 |
| AddressGenerator - _地址(索引、地区、城市等)_ | 3.975766 | 5.888 |
| CountryGenerator - _国家(代码、俄语和英语名称、alpha2、alpha3)_ | 1.060561 | 2.531 |
| Oktmo8Generator - _OKTMO(8 位)_ | 0.085847 | 0.055 |
| Oktmo11Generator - _OKTMO(11 位)_ | 0.239180 | 0.055 |
| CardNumberGenerator - _银行卡号(16 位)_ | 0.329218 | 0.505 |
| FIOFullGenerator - _姓名(姓、名、父名)_ | 0.524937 | 0.617 |
| FIOShortGenerator - _姓名(姓、名首字母)_ | 0.497833 | 0.566 |
| FIOInitialsGenerator - _姓名(名首字母、姓)_ | 0.500494 | 0.566 |
| PhoneNumberRuFormatGenerator - _电话号码:+7 (XXX) NNN-NN-NN_ | 0.283754 | 0.658 |
| PhoneNumberRuDigitGenerator - _电话号码:7XXXNNNNNNN_ | 0.251596 | 0.535 |
| SnilsGenerator - _社会保险号(11 位)_ | 0.626880 | 1.029 |
| PassportRuSpacedGenerator - _俄罗斯护照(带空格)_ | 0.744428 | 1.208 |
| PassportRuCompactGenerator - _俄罗斯护照(不带空格)_ | 0.709420 | 1.208 |
| ForeignPassportRuNumberGenerator - _俄罗斯护照(编号)_ | 0.391653 | 0.704 |
| ForeignPassportRuMrzGenerator - _俄罗斯护照(MRZ)_ | 2.902907 | 3.551 |
> **💡 结论:** 所有生成器都在 **微秒级** 运行,提供用户界面中的即时响应,无需为用户造成明显延迟。
> **📌 注意:** 基准测试的运行和报告在 `ru-bizgen-perf/` 模块中进行
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器