# Sim 人工审核：运营改数量后再交财务核预算，生成最终报价记录

本次实际运行：Python标准库参考程序、业务边界检查与HTML渲染。未安装或运行Sim，未调用模型、创建真实自动化、发送消息、建第三方PR或部署。人工基准和错误样稿均明确标注。

## 文件

input.json：原创输入；node-fields.json：字段教材，不能直接当平台导出文件导入；prompt.md：任务约束；schema.json：规范化观察结构；reference.py：本站手写参考；reference-output.json：实际本地输出；reference.html：参考产物；review-template.json：读者填写目标工具结果。

## 本地运行

```bash
python3 reference.py
python3 verify.py
```

用浏览器打开reference.html。不依赖模型或第三方账户。

## 真实平台步骤

1. 读取报价和更正条件
原来3台、单价120元；运营改2台后总额应240元。预算300元只作练习阈值；拒绝路径只留下审核记录，不生成quote.md。

2. 配置第一个HITL表单
Sim Human in the Loop的Display Data显示报价ID、原数量和单价；Resume Form定义approved、corrected_quantity、comments。portal链接是本次暂停点，不能用旧run链接混填。

3. 用人工更正值进行确定性重算
第一个HITL后Condition检查approved；批准再将corrected_quantity传Function，校验正整数并乘unit_cents。后续不得再读original_quantity覆盖人工更正。

4. 第二个HITL只审核新金额
财务Display Data必须显示2台/240元及运营意见；Resume Form仅批准/拒绝和说明。第一次恢复后应再次paused，不能提前标整个报价completed。

5. 测试任意一方拒绝
分别做运营拒绝、财务拒绝；两条分支只能返回拒绝记录。用自己的测试run检查File Write没有被调用，不连接真实付款、采购或对外发送动作。

6. 回读连续两次审核记录
reference.html为本地状态函数实际生成的三种分支，批准场景保留2台/240元和两名审核角色。它不伪装Sim portal，也不证明真实身份权限。

7. 保存最终文件与恢复信息
实际Sim批准后下载报价并核对数量/总额；保留submittedAt、意见和暂停点。当前官方HITL无默认超时，正文不编造24小时自动拒绝；v2恢复接口按当前官方文档使用。

## 版本与许可

Sim0.9.22；portal链接需妥善管理，本题不接真实付款/发送。官方HITL默认无timeout，不能编造24小时自动拒绝。每次恢复/重算和模型调用需真实留证，审批权限不由模型自述保证。

## 来源

- https://docs.sim.ai/workflows/blocks/human-in-the-loop
- https://docs.sim.ai/files/generating

## 验收边界

虚构设备借用报价先暂停给运营修正数量，再暂停给财务选批准/拒绝。批准时按人工数量重算并生成quote.md+两次审核记录；任一拒绝则只生成拒绝记录。验收第一次恢复后仍paused、第二次批准才final、人工修正不丢、两条拒绝分支不产生最终报价。

目标产品实跑时保存原生输出，不得把本包人工/手写参考改名冒充模型返回。所有人物、订单与规则均为虚构练习数据。

渲染说明：input.html、operation.html、reference.html和figures是随当前原创输入冻结的实际浏览器预览；修改输入后重新运行会更新reference-output.json，静态HTML不会自动重绘。目标软件原生结果请另存。
