/**
 * Configuration Precedence Contract — Evidence Factory
 *
 * 证据工厂函数：创建配置值证据、配置证据条目、值哈希。
 */
import crypto from "node:crypto";
import { SOURCE_LIFETIME } from "./constants.js";
// ── 证据工厂 ──
/** 创建配置值证据
 * @param fieldPath - 字段路径
 * @param value - 配置值
 * @param source - 配置来源
 * @param confidence - 置信度
 * @param evidenceRef - 证据引用（可选）
 * @returns 配置值证据
 */
export function createConfigValueEvidence(fieldPath, value, source, confidence, evidenceRef) {
    return {
        field_path: fieldPath,
        value,
        source,
        confidence,
        evidence_ref: evidenceRef,
        updated_at: new Date().toISOString(),
    };
}
/** 创建配置证据条目
 * @param fieldPath - 字段路径
 * @param value - 配置值
 * @param source - 配置来源
 * @param options - 可选参数
 * @param options.confidence - 置信度（可选，默认 1.0）
 * @param options.evidence_refs - 证据引用列表（可选）
 * @param options.confirmed_by - 确认者（可选）
 * @param options.expires_at - 过期时间（可选）
 * @returns 配置证据条目
 */
export function createConfigEvidenceEntry(fieldPath, value, source, options) {
    return {
        field_path: fieldPath,
        value_hash: hashValue(value),
        source,
        confidence: options?.confidence ?? 1.0,
        evidence_refs: options?.evidence_refs ?? [],
        confirmed_by: options?.confirmed_by,
        lifetime: SOURCE_LIFETIME[source],
        collected_at: new Date().toISOString(),
        expires_at: options?.expires_at,
    };
}
/** 计算值的简易哈希
 * @param value - 待哈希的值
 * @returns 十六进制哈希字符串
 */
export function hashValue(value) {
    const str = JSON.stringify(value);
    return crypto.createHash("sha256").update(str).digest("hex").slice(0, 16);
}
//# sourceMappingURL=evidence.js.map