# 测试与验收记录

## 标准验收命令

```bash
moon fmt --check
moon check --deny-warn
moon test -p sujy123456/voltweave --deny-warn
moon build cmd/voltweave --target wasm --release
moon check web/engine --target wasm-gc --deny-warn
moon build web/engine --target wasm-gc --release
moon publish --dry-run
```

根包当前有 46 个测试。`web/engine` 是带 `#export_name` 的 `foreign_library`，MoonBit 全工作区 `moon test` 会尝试把它生成为测试包，而导出属性只允许在外部库中使用；因此 CI 明确测试 `sujy123456/voltweave` 根包，并分别对 Web 引擎执行 `check` 和 `build`。这不会减少引擎构建验证。

## 覆盖范围

| 测试文件 | 覆盖内容 |
|---|---|
| `voltweave_test.mbt` | 包级烟雾测试 |
| `validation_test.mbt` | 序列、任务、电池、停电和错误码 |
| `optimizer_test.mbt` | 候选、排程、电池流、策略和 Pareto |
| `simulation_test.mbt` | PRNG、固定种子、分位数、风险和敏感性 |
| `analytics_test.mbt` | 能源重建、独立审计、充足性和方案差异 |
| `report_test.mbt` | Markdown、CSV、ASCII 与 JSON 输出 |

## 关键不变量

- 所有结果数组长度与规划时域一致；
- 电网功率不超过当时配电/停电限制；
- 完全停电期间电网输入为零；
- 电池状态不越过配置的最小和最大边界；
- 计划条目位于任务允许窗口，且功率与任务合约一致；
- 相同输入与随机种子产生相同仿真摘要；
- JSON 往返保留领域对象；
- 计划输出包含稳定原因码而非只包含自然语言。

## 浏览器人工验收

2026-08-08 在本地 Chromium 环境完成：

- 页面通过 HTTP 200 加载；
- 状态显示 `MoonBit Wasm 已就绪 · API v1`；
- 晴天家庭、紧凑公寓、风暴停电三个按钮均可切换；
- 费用、碳排、电网峰值、保供覆盖率及风险分位数随场景更新；
- Canvas 功率曲线正常绘制；
- 浏览器控制台无 error 和 warning。

## 复现记录建议

每次发布在 GitHub Release 附上工具链版本、上述命令输出、Wasm SHA-256、源代码行数和变更日志。若更改算法排序或整数单位，应新增回归测试并在 `CHANGELOG.md` 标记结果兼容性。
