rapiddweller/datamimic
GitHub: rapiddweller/datamimic
一款确定性合成测试数据生成器,解决测试数据的可重现、隐私安全与领域约束问题。
Stars: 32 | Forks: 3
# DATAMIMIC — 具有合理性的确定性合成测试数据
**为金融、医疗等领域生成真实、互联且可重现的测试数据。**
Faker 提供 *随机* 数据。
**DATAMIMIC** 提供 *一致、可解释的数据集*,尊重业务逻辑和领域约束。
* 🧬 符合年龄与人口统计特征的病人医疗记录
* 💳 符合余额约束的银行交易
* 🛡 与真实风险状况一致的保险政策
[](https://github.com/rapiddweller/datamimic/actions)
[](https://sonarcloud.io/summary/new_code?id=rapiddweller_datamimic)
[](https://sonarcloud.io/summary/new_code?id=rapiddweller_datamimic)
[](https://www.python.org/downloads/)
[](LICENSE)

## ✨ 为何选择 DATAMIMIC?
典型数据生成器产生 **孤立的随机值**。这对单元测试来说尚可,但对系统测试、分析或合规测试而言毫无意义。
```
# Faker — broken relationships
patient_name = fake.name()
patient_age = fake.random_int(1, 99)
conditions = [fake.word()]
# "25-year-old with Alzheimer's" — nonsense data
```
```
# DATAMIMIC — contextual realism
from datamimic_ce.domains.healthcare.services import PatientService
patient = PatientService().generate()
print(f"{patient.full_name}, {patient.age}, {patient.conditions}")
# "Shirley Thompson, 72, ['Diabetes', 'Hypertension']"
```
## ⚙️ 快速入门(社区版)
安装并运行:
```
pip install datamimic-ce
```
### 确定性生成
DATAMIMIC 对相同的请求生成 *相同的数据*,跨机器和 CI 运行一致。种子、时钟和 UUIDv5 命名空间确保可重现性。
```
from datamimic_ce.domains.facade import generate_domain
request = {
"domain": "person",
"version": "v1",
"count": 1,
"seed": "docs-demo", # identical seed → identical output
"locale": "en_US",
"clock": "2025-01-01T00:00:00Z" # fixed clock = stable time context
}
response = generate_domain(request)
print(response["items"][0]["id"])
# Same input → same output
```
**确定性契约**
* **输入:** `{seed, clock, uuidv5-namespace, 请求体}`
* **保证:** 字节级相同的负载 + 稳定的 `determinism_proof.content_hash`
* **范围:** 所有 CE 领域(详见文档中的领域特定注意事项)
## ⚡ MCP(模型上下文协议)
将 DATAMIMIC 作为 MCP 服务器运行,以便 Claude / Cursor(以及智能体)可以调用确定性数据工具。
**安装**
```
pip install datamimic-ce[mcp]
# Development
pip install -e .[mcp]
```
**运行(SSE 传输)**
```
export DATAMIMIC_MCP_HOST=127.0.0.1
export DATAMIMIC_MCP_PORT=8765
# Optional auth; clients must send the same token via Authorization: Bearer or X-API-Key
export DATAMIMIC_MCP_API_KEY=changeme
datamimic-mcp
```
**进程内示例(确定性证明)**
```
import anyio, json
from fastmcp.client import Client
from datamimic_ce.mcp.models import GenerateArgs
from datamimic_ce.mcp.server import create_server
async def main():
args = GenerateArgs(domain="person", locale="en_US", seed=42, count=2)
payload = args.model_dump(mode="python")
async with Client(create_server()) as c:
a = await c.call_tool("generate", {"args": payload})
b = await c.call_tool("generate", {"args": payload})
print(json.loads(a[0].text)["determinism_proof"]["content_hash"]
== json.loads(b[0].text)["determinism_proof"]["content_hash"]) # True
anyio.run(main)
```
**配置键**
* `DATAMIMIC_MCP_HOST`(默认 `127.0.0.1`)
* `DATAMIMIC_MCP_PORT`(默认 `8765`)
* `DATAMIMIC_MCP_API_KEY`(未设置 = 无认证)
* 请求超过上限(`count > 10_000`)将返回 `422`。
➡️ **完整指南、IDE 配置(Claude/Cursor)、传输方式、错误处理:** [`docs/mcp_quickstart.md`](docs/mcp_quickstart.md)
## 🧩 领域与示例
### 🏥 医疗健康
```
from datamimic_ce.domains.healthcare.services import PatientService
patient = PatientService().generate()
print(patient.full_name, patient.conditions)
```
* 人口统计上真实的病人
* 医生专长与病症匹配
* 医院容量与类型
* 纵向医疗记录
### 💰 金融
```
from datamimic_ce.domains.finance.services import BankAccountService
account = BankAccountService().generate()
print(account.account_number, account.balance)
```
* 余额与交易历史一致
* 符合本地规范的卡号 / IBAN 格式
* 为欺诈/对账测试优化的分布
### 🌐 人口统计
* `PersonService` 提供本地化包(DE / US / VN),版本化且可审计
## 🔒 设计中即确定性
* **冻结时钟** + **规范哈希** → 可重现的 ID
* **种子随机数生成器** → 跨运行一致的输出
* **模式验证**(XSD/JSONSchema)→ 结构完整性
* **来源哈希** → 可审计的谱系
📘 参见 [开发者指南](docs/developer_guide.md)
## 🧮 Python 与 XML 兼容性
Python:
```
from random import Random
from datamimic_ce.domains.common.models.demographic_config import DemographicConfig
from datamimic_ce.domains.healthcare.services import PatientService
cfg = DemographicConfig(age_min=70, age_max=75)
svc = PatientService(dataset="US", demographic_config=cfg, rng=Random(1337))
print(svc.generate().to_dict())
```
等效 XML:
```
```
## 🛠 CLI
```
# Run instant healthcare demo
datamimic demo create healthcare-example
datamimic run ./healthcare-example/datamimic.xml
# Verify version
datamimic version
```
**质量门禁(仓库内):**
```
make typecheck # mypy --strict
make lint # pylint (≥9.0 score target)
make coverage # target ≥ 90%
```
## 🧭 架构快照
* **核心流水线:** 确定性工具包 • 领域服务 • 模式验证器
* **治理层:** 分组表 • 关联审计 • 来源哈希
* **执行层:** CLI • API • XML 运行器 • MCP 服务器
## ⚖️ CE 与 EE
| 功能 | 社区版(CE) | 企业版(EE) |
|------|--------------|--------------|
| 确定性领域生成 | ✅ | ✅ |
| XML + Python 流水线 | ✅ | ✅ |
| 医疗与金融领域 | ✅ | ✅ |
| 多用户协作 | ❌ | ✅ |
| 治理与谱系仪表板 | ❌ | ✅ |
| ML 引擎(Mostly AI、Synthcity 等) | ❌ | ✅ |
| RBAC 与审计日志(HIPAA/GDPR/PCI) | ❌ | ✅ |
| EDIFACT / SWIFT 适配器 | ❌ | ✅ |
## 📚 文档与社区
* [📘 完整文档](https://docs.datamimic.io)
* [💬 GitHub 讨论](https://github.com/rapiddweller/datamimic/discussions)
* [🐛 问题跟踪器](https://github.com/rapiddweller/datamimic/issues)
* [📧 邮件支持](mailto:support@rapiddweller.com)
## 🚀 开始使用
```
pip install datamimic-ce
```
**生成具有合理性的数据 —— 确定性生成。**
⭐ 在 GitHub 上支持我们,如果 DATAMIMIC 提升了你的测试工作流。
标签:CI/CD测试, MCP集成, Python API, XML管道, 上下文一致性, 保险数据, 分析测试, 医疗数据, 单元测试, 可重现数据, 合成数据, 合规测试, 患者病史, 数据模拟, 数据治理, 数据生成器, 文档结构分析, 模型驱动, 模拟数据, 测试数据生成, 真实数据模拟, 确定性数据, 系统测试, 约束满足, 网络安全, 逆向工具, 金融数据, 银行交易, 隐私保护, 领域感知, 风险画像