package com.infoepoch.pms.agent.platform.model.application;

import com.infoepoch.pms.agent.platform.model.adapter.out.ai.ChatModelFactory;
import com.infoepoch.pms.agent.platform.model.domain.AiModelConfig;
import lombok.RequiredArgsConstructor;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * 模型提供应用服务。
 * <p>
 * 为其他上下文提供统一的 ChatModel 创建与缓存失效入口，
 * 避免直接依赖底层工厂实现。
 * </p>
 */
@Service
@RequiredArgsConstructor
public class ModelProvisionService {

    private final ChatModelFactory chatModelFactory;

    /**
     * 根据模型配置创建 ChatModel。
     *
     * @param config 模型配置，传 {@code null} 时使用全局默认模型
     * @return 可用的 ChatModel
     */
    @Transactional(readOnly = true)
    public ChatModel create(AiModelConfig config) {
        return chatModelFactory.create(config);
    }

    /**
     * 失效指定模型配置的缓存。
     *
     * @param configId 模型配置 ID
     */
    public void evict(String configId) {
        chatModelFactory.evict(configId);
    }

    /**
     * 清空全部模型缓存。
     */
    public void clear() {
        chatModelFactory.clear();
    }
}
