# 设计、定位与复现契约

MoonFixture 服务于需要重复创建关联记录的开发者。典型困难不是生成一个随机字符串，而是同时保持主外键、唯一域、字段计算、失败重放和多个消费者的输入一致。

处理流程为：严格配置解码 → 名称/规模/引用检查 → 实体和字段拓扑排序 → 独立随机流生成 → 唯一域/预算检查 → 独立验证 → 导出或测试消费。模型编译与 I/O 分离；纯库可用于四种后端，CLI 使用官方异步文件接口。

随机核使用 xorshift32。名称哈希按 Unicode 标量的四个小端字节混合，避免不同后端字符串内部编码影响随机流。`below` 通过拒绝抽样消除模偏差；有限唯一域采用稀疏 Fisher–Yates 映射。相关字段按依赖求值；父表唯一键建立类型化查找索引。所有时间来源均为显式参数。

重放清单保存完整模型、seed、reference_time、资源限制及算法标识，拒绝不同算法版本。模型指纹只作定位，不充当密码学签名。数据格式与重放格式分别带 v1 标识，便于以后独立演进。修改生成语义应更新包版本和相应复现契约；固定种子不能代替固定版本。

原型研究检查了以下相邻项目。差异针对当时核查的公开模块，并不保证未来不存在竞争实现：

| 项目 | 与本项目的边界 |
| --- | --- |
| [moonbitlang/quickcheck](https://github.com/moonbitlang/quickcheck) | 性质测试及任意值构造；本项目产出供业务消费者使用的多实体关联数据 |
| [lyjttio/moon-data-contract](https://github.com/lyjttio/moon-data-contract) | 契约治理；所检查 mock_gen 模块生成固定标量示例，本项目处理批量种子、主外键和重放 |
| [mizchi/flaker](https://mooncakes.io/docs/mizchi/flaker) | 测试调度/不稳定性分析；本项目不调度测试 |
| [Faker](https://github.com/faker-js/faker) | 成熟的字段数据生成生态；本项目不是其移植或完整替代，而是 MoonBit 中的关系数据构造方案 |

没有宣称已获第三方维护者采用或比赛审核通过。SQLite 和 HTTP 证据来自仓库内真实运行的消费者；浏览器示例演示独立前端数据使用。研究原型提出的 MoonBit SQLite 驱动接入在首版没有实现：首版选择驱动中立的参数化适配接口和 Python SQLite 独立验证，并在 README 明确这一范围。

后续工作优先考虑：更多真实下游接入、按实体释放内存的生成执行器、组合唯一键，以及保持复现兼容性的生成器扩展。不会以大量词库、无意义代码或空提交扩大项目规模。
