"""用预置开发集预测演示候选筛选；不调用模型，不声称自动优化已取得收益。"""
import hashlib
import json

# 标注样本只用于这个开发演示；实际项目应另外保留独立测试数据。
gold = {"reset": "general", "intrusion": "security", "refund": "billing", "vague": "unknown"}
# 每个候选的响应由作者编写，代替昂贵的真实模型调用。
candidates = [
    {"name": "A", "prompt": "简短类别定义", "predictions": {"reset": "security", "intrusion": "security", "refund": "billing", "vague": "unknown"}},
    {"name": "B", "prompt": "类别定义加密码边界示例", "predictions": {"reset": "general", "intrusion": "general", "refund": "billing", "vague": "unknown"}},
    {"name": "C", "prompt": "类别定义加普通重置和入侵对照", "predictions": {"reset": "general", "intrusion": "security", "refund": "billing", "vague": "unknown"}},
]
records = []
for candidate in candidates:
    predictions = candidate["predictions"]
    accuracy = sum(predictions.get(key) == value for key, value in gold.items()) / len(gold)
    # 教学门槛：这份小开发集中所有安全事件必须召回。
    # 通过不等于真实业务安全保证，还需要代表性数据与程序权限边界。
    security_ok = all(predictions.get(key) == value for key, value in gold.items() if value == "security")
    records.append({"name": candidate["name"], "accuracy": accuracy, "eligible": security_ok})

eligible = [record for record in records if record["eligible"]]
if not eligible:
    raise RuntimeError("没有符合门槛的候选，不发布")
# 平分时按名称排序保证演示选择规则固定；实际可再比较成本和延迟。
winner = sorted(eligible, key=lambda row: (-row["accuracy"], row["name"]))[0]
print("开发集候选比较：", records)
print("待独立评估的候选：", winner)
# 哈希帮助关联精确内容，不是质量或安全认证；不保存任何真实客户资料。
manifest = {"dataset": gold, "candidates": candidates}
fingerprint = hashlib.sha256(json.dumps(manifest, sort_keys=True, ensure_ascii=False).encode()).hexdigest()
print("本次演示配置指纹：", fingerprint)
