package com.zhpb.gdyd_zhpb_zgf.context;

/**
 * 线程级模型请求上下文，用于在调用模型/向量化前标记业务来源。
 */
public final class ModelRequestContextHolder {

    private static final ThreadLocal<String> REQUEST_SOURCE = new ThreadLocal<>();

    private ModelRequestContextHolder() {
    }

    /**
     * 设置当前线程的模型请求来源。
     *
     * @param requestSource 业务来源标识，例如 QA_CHAT、DOC_SUMMARY
     */
    public static void setRequestSource(String requestSource) {
        if (requestSource == null || requestSource.isBlank()) {
            REQUEST_SOURCE.remove();
        } else {
            REQUEST_SOURCE.set(requestSource);
        }
    }

    /**
     * 获取当前线程的模型请求来源，若为空则返回默认值。
     *
     * @param defaultValue 默认业务来源
     * @return 请求来源
     */
    public static String getRequestSourceOrDefault(String defaultValue) {
        String source = REQUEST_SOURCE.get();
        if (source == null || source.isBlank()) {
            return defaultValue;
        }
        return source;
    }

    /**
     * 清理当前线程上下文，防止线程复用导致交叉污染。
     */
    public static void clear() {
        REQUEST_SOURCE.remove();
    }
}


