# MoonHAR 设计说明

## 设计目标

MoonHAR 以“纯 MoonBit、无运行时依赖、可嵌入不同后端”为原则，将文件读取与 HAR 分析分离。调用方负责取得 HAR 文本，库负责解析、校验、分析与导出，因此同一套核心逻辑可用于 CLI、CI、Wasm 和其他工具。

## 处理流程

1. `parse_json` 将输入解析为 `JVal`，保留 JSON 对象中的所有字段。
2. `parse_har` 将核心 HAR 字段映射为 `HarArchive`，并返回稳定的错误路径。
3. `validate_archive` 对结构之外的语义约束执行检查。
4. 分析、预算、瀑布流、筛选与报告模块只依赖类型化模型。

## 模块边界

- `xb123.mbt`：JSON 解析器、HAR 核心模型和类型映射。
- `validate.mbt`：结构化诊断与语义校验。
- `analyze.mbt`、`metrics.mbt`：聚合统计与耗时指标。
- `budget.mbt`、`quality.mbt`、`insights.mbt`：预算和可行动建议。
- `filters.mbt`、`selectors.mbt`、`patterns.mbt`：请求查询和 URL 聚合。
- `waterfall.mbt`、`timeline.mbt`、`compare.mbt`：时序视图与回归对比。
- `redact.mbt`、`report.mbt`、`export.mbt`：脱敏和报告输出。
- `cmd/main`：JS/Node CLI 边界，负责参数解析、外部文件读取、命令分发和退出码；核心库不依赖文件系统。

HAR JSON 的 `method` 字段映射为 MoonBit 的 `http_method`，避免与工具链保留字冲突。类型化模型有意只覆盖分析所需字段；未知扩展字段可通过 `parse_json` 处理。库不执行网络请求，也不会自动上传输入数据。

CLI 使用 `moonbitlang/x/fs` 读取 UTF-8 HAR 文件。`summary`、`validate`、`report`、`waterfall`、`budget` 和 `csv` 均复用公开库 API；参数错误、文件读取失败和解析失败返回退出码 1，校验错误返回 2，性能预算失败返回 3。
