# 分析架构与工程目录

MoonAPI Check 比较旧请求在新规范声明下的兼容性；输入为本地 OpenAPI 3.0.3 JSON。公共入口是 `check_json(String, String) -> Report`。

1. `src/input.mbt` 解析原始 JSON、解析同文档引用并保留使用位置和定义位置，不丢弃未知契约字段。
2. `src/operations.mbt` 按路径和 HTTP 方法整理操作，按参数位置与名称合并路径级和操作级声明。
3. `src/schema.mbt` 检查受支持结构；`src/coverage.mbt` 识别未分析契约和可达响应定义变化。
4. `src/rules.mbt` 比较操作、参数及请求对象，报告删除操作、新增必填约束和字符串枚举收紧。
5. `src/report.mbt` 排序并生成文本及 JSON 报告；`src/bridge` 导出 JavaScript 调用入口。
6. `cmd/moonapi-check.mjs` 只运输命令参数、读取 UTF-8 本地文件和返回进程状态。输入不会发往网络。

不完整分析的退出码 2 优先于已发现破坏的 1；诊断不等于兼容性结论。规则边界见 [SUPPORT.md](SUPPORT.md)，独立场景与验证见 [VALIDATION.md](VALIDATION.md)。

## 保留的工程目录

| 目录 | 用途 |
| --- | --- |
| src、cmd | MoonBit 库和 Node 入口 |
| tests、examples | 回归测试与可运行样例 |
| scripts、.github | 构建、安装复验、发布和跨平台 CI |
| docs | 当前技术说明和版本验证证据 |
| .git | 仓库历史及远程配置 |
| .tools/moon | 本机工具链；忽略提交与打包 |
| _build、dist | MoonBit 构建缓存与 CLI 输出；忽略提交与 mooncakes 打包 |

## 工程目录之外

旧赛事规划、个人理解笔记移入本地同级 `MoonAPI Check 资料归档`。历史克隆、注册表消费者和发布包移入 `MoonAPI Check 工程产物`；后续安装、发布脚本也写入该位置。`MoonAPI Check 申报与个人验证` 提供参赛者的学习、手动复核和申报材料。

这些本地目录不是公开仓库、mooncakes 包或下载版 CLI 的依赖。工具链仍可由 `MOON_HOME` 或系统 PATH 提供，工程产物根目录可由 `MOONAPI_CHECK_ARTIFACTS` 覆盖。
