import { debug } from "../core/logger.js";
/**
 * 计算任务执行结果的置信度得分。
 *
 * 加权模型：执行结果(0.2) + 可追溯性(0.3) + 可复用性(0.2) + 新颖性(0.3)
 * 最终得分范围 [0, 1]，保留两位小数。降级模式下得分减半。
 *
 * @param input - 置信度评分输入参数
 * @returns 置信度得分（0 到 1 之间的浮点数）
 */
export function scoreConfidence(input) {
    debug("confidence_scorer", "scoreConfidence() 开始执行");
    let score = 0;
    // 维度 1: 执行结果（权重 0.2）
    // 首次成功得分最高(1.0)，每次重试递减，失败最低(0.1)
    const resultScore = {
        success_first_try: 1.0, // 首次即成功
        success_retry1: 0.7, // 第 1 次重试后成功
        success_retry2: 0.4, // 第 2 次重试后成功
        failure: 0.1, // 最终失败
    };
    const resultKey = input.result === "success"
        ? (input.retryCount === 0 ? "success_first_try" : input.retryCount === 1 ? "success_retry1" : "success_retry2")
        : "failure";
    score += resultScore[resultKey] * 0.2;
    // 维度 2: 可追溯性（权重 0.3）
    // 有明确根因 → 高分(1.0)；无根因 → 低分(0.3)
    const traceScore = input.hasClearRootCause ? 1.0 : 0.3;
    score += traceScore * 0.3;
    // 维度 3: 可复用性（权重 0.2）
    // 已匹配的模式越多 → 可复用性越高，上限 3 个模式即为满分
    const reuseScore = Math.min(input.matchedPatternsCount / 3, 1.0);
    score += reuseScore * 0.2;
    // 维度 4: 新颖性（权重 0.3）
    // 匹配到已有模式 → 新颖性低 → 强化已有知识 → 高分(0.8)
    // 无模式匹配 → 新问题 → 知识不确定性高 → 低分(0.4)
    const noveltyScore = input.matchedPatternsCount > 0 ? 0.8 : 0.4;
    score += noveltyScore * 0.3;
    // 降级模式惩罚：在受限条件下完成，结果可靠性降低
    if (input.isDegraded) {
        score *= 0.5;
    }
    return Math.round(score * 100) / 100;
}
//# sourceMappingURL=confidence_scorer.js.map