rapiddweller/datamimic

GitHub: rapiddweller/datamimic

一款确定性合成测试数据生成器,解决测试数据的可重现、隐私安全与领域约束问题。

Stars: 32 | Forks: 3

# DATAMIMIC — 具有合理性的确定性合成测试数据 **为金融、医疗等领域生成真实、互联且可重现的测试数据。** Faker 提供 *随机* 数据。 **DATAMIMIC** 提供 *一致、可解释的数据集*,尊重业务逻辑和领域约束。 * 🧬 符合年龄与人口统计特征的病人医疗记录 * 💳 符合余额约束的银行交易 * 🛡 与真实风险状况一致的保险政策 [![CI](https://img.shields.io/badge/CI-passing-brightgreen.svg)](https://github.com/rapiddweller/datamimic/actions) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=rapiddweller_datamimic&metric=coverage)](https://sonarcloud.io/summary/new_code?id=rapiddweller_datamimic) [![Maintainability](https://sonarcloud.io/api/project_badges/measure?project=rapiddweller_datamimic&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=rapiddweller_datamimic) [![Python](https://img.shields.io/badge/Python-3.11%2B-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) ![MCP Ready](https://img.shields.io/badge/MCP-ready-8A2BE2.svg) ## ✨ 为何选择 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管道, 上下文一致性, 保险数据, 分析测试, 医疗数据, 单元测试, 可重现数据, 合成数据, 合规测试, 患者病史, 数据模拟, 数据治理, 数据生成器, 文档结构分析, 模型驱动, 模拟数据, 测试数据生成, 真实数据模拟, 确定性数据, 系统测试, 约束满足, 网络安全, 逆向工具, 金融数据, 银行交易, 隐私保护, 领域感知, 风险画像