package com.pharmacopoeia.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * 埋点接入配置。
 * <p>
 * {@code systems} 同时承担两个职责：
 * 1) 白名单——只有出现在此 map 中的系统名才允许上报；
 * 2) 签名密钥——每个系统配独立 HMAC 密钥，便于按系统发放/轮换/回收。
 * <p>
 * 后期接入新系统或调整密钥时，仅需在此配置中增删条目，无需改动代码。
 */
@Data
@Configuration
@ConfigurationProperties(prefix = "analytics")
public class AnalyticsProperties {

    /** 允许接入的埋点系统及其签名密钥：key=系统名（白名单），value=HMAC-SHA256 密钥 */
    private Map<String, String> systems = new LinkedHashMap<>();

    private Signature signature = new Signature();

    @Data
    public static class Signature {
        /** 是否启用签名校验。上线外网保持 true；本地调试可临时设 false */
        private boolean enabled = true;
    }
}
